New PhidgetSBC Firmware Version 1.0.4

General PhidgetSBC Discussion.
User avatar
Patrick
Lead Developer
Posts: 3399
Joined: Mon Jun 20, 2005 8:46 am
Location: Canada
Contact:

Re: New PhidgetSBC Firmware Version 1.0.4

Post by Patrick »

Have you read the programming manual and the PhidgetSBC manual? They both cover this topic.

-Patrick
galileo

Re: New PhidgetSBC Firmware Version 1.0.4

Post by galileo »

patrick wrote:Have you read the programming manual and the PhidgetSBC manual? They both cover this topic.

-Patrick
ok i did go to the InterfaceKit-simple.c file in line 134 quoted and then wrote
CPhidget_openRemote ((CPhidgetHandle)ifKit, -1,"http://phidgetsbc.local./", 0); where 0 i also put my password when i log in to http://phidgetsbc.local./(only the password) for example if my username:root
and my password:tragos
i put "tragos" instead of 0.
without any luck...can you help me?what am i doing wrong?

thank you for your time...
User avatar
Patrick
Lead Developer
Posts: 3399
Joined: Mon Jun 20, 2005 8:46 am
Location: Canada
Contact:

Re: New PhidgetSBC Firmware Version 1.0.4

Post by Patrick »

Try:

Code: Select all

CPhidget_openRemote ((CPhidgetHandle)ifKit, -1,"phidgetsbc", 0);
openRemote uses the serverID - this is not an http address. It's set on the webservice page in the SBC config website and defaults to "phidgetsbc".

-Patrick
galileo

Re: New PhidgetSBC Firmware Version 1.0.4

Post by galileo »

patrick wrote:Try:

Code: Select all

CPhidget_openRemote ((CPhidgetHandle)ifKit, -1,"phidgetsbc", 0);
openRemote uses the serverID - this is not an http address. It's set on the webservice page in the SBC config website and defaults to "phidgetsbc".

-Patrick

ok thank you very much...but i have a second question for you...the textlcd i bought is connected via usb with the main sbc(1070). now i have the 1125 temperature/humidity sensor that gives me two cables one for everyone of the two sensors...if i connect the one to the 1070 sbc and the other to the textlcd 8/8/8 how can both be recognized???with the above function i open both interface kits? or for everyone i must call another function???aqnd if yes with what argument for textlcd 8/8/8???

thank you again...
User avatar
Patrick
Lead Developer
Posts: 3399
Joined: Mon Jun 20, 2005 8:46 am
Location: Canada
Contact:

Re: New PhidgetSBC Firmware Version 1.0.4

Post by Patrick »

You'll need to open the two separate interfacekits. You'll probably want to specify the serial number in the open command so you can tell them apart.

-Patrick
galileo

Re: New PhidgetSBC Firmware Version 1.0.4

Post by galileo »

thank you, you were quite helpful so i managed to do that. But i tried to connect to the 1070SBC and take measures from my Temperature sensor. I used the interfacekit-simle.c and put into it the temperaturesensor-simple.c as it follows:

Code: Select all

#include "StdAfx.h"
#include <stdio.h>
#include "phidget21.h"

int AttachHandler(CPhidgetHandle IFK, void *userptr)
{
	int serialNo;
	const char *name;

	CPhidget_getDeviceName(IFK, &name);
	CPhidget_getSerialNumber(IFK, &serialNo);

	printf("%s %10d attached!\n", name, serialNo);

	return 0;
}

int DetachHandler(CPhidgetHandle IFK, void *userptr)
{
	int serialNo;
	const char *name;

	CPhidget_getDeviceName (IFK, &name);
	CPhidget_getSerialNumber(IFK, &serialNo);

	printf("%s %10d detached!\n", name, serialNo);

	return 0;
}

int ErrorHandler(CPhidgetHandle IFK, void *userptr, int ErrorCode, const char *unknown)
{
	printf("Error handled. %d - %s", ErrorCode, unknown);
	return 0;
}

//callback that will run if an input changes.
//Index - Index of the input that generated the event, State - boolean (0 or 1) representing the input state (on or off)
int InputChangeHandler(CPhidgetInterfaceKitHandle IFK, void *usrptr, int Index, int State)
{
	printf("Digital Input: %d > State: %d\n", Index, State);
	return 0;
}

//callback that will run if an output changes.
//Index - Index of the output that generated the event, State - boolean (0 or 1) representing the output state (on or off)
int OutputChangeHandler(CPhidgetInterfaceKitHandle IFK, void *usrptr, int Index, int State)
{
	printf("Digital Output: %d > State: %d\n", Index, State);
	return 0;
}

//callback that will run if the sensor value changes by more than the OnSensorChange trigger.
//Index - Index of the sensor that generated the event, Value - the sensor read value
int SensorChangeHandler(CPhidgetInterfaceKitHandle IFK, void *usrptr, int Index, int Value)
{
	printf("Sensor: %d > Value: %d\n", Index, Value);
	return 0;
}

//Display the properties of the attached phidget to the screen.  We will be displaying the name, serial number and version of the attached device.
//Will also display the number of inputs, outputs, and analog inputs on the interface kit as well as the state of the ratiometric flag
//and the current analog sensor sensitivity.
int display_properties(CPhidgetInterfaceKitHandle phid)
{
	int serialNo, version, numInputs, numOutputs, numSensors, triggerVal, ratiometric, i;
	const char* ptr;

	CPhidget_getDeviceType((CPhidgetHandle)phid, &ptr);
	CPhidget_getSerialNumber((CPhidgetHandle)phid, &serialNo);
	CPhidget_getDeviceVersion((CPhidgetHandle)phid, &version);

	CPhidgetInterfaceKit_getInputCount(phid, &numInputs);
	CPhidgetInterfaceKit_getOutputCount(phid, &numOutputs);
	CPhidgetInterfaceKit_getSensorCount(phid, &numSensors);
	CPhidgetInterfaceKit_getRatiometric(phid, &ratiometric);

	printf("%s\n", ptr);
	printf("Serial Number: %10d\nVersion: %8d\n", serialNo, version);
	printf("# Digital Inputs: %d\n# Digital Outputs: %d\n", numInputs, numOutputs);
	printf("# Sensors: %d\n", numSensors);
	printf("Ratiometric: %d\n", ratiometric);

	for(i = 0; i < numSensors; i++)
	{
		CPhidgetInterfaceKit_getSensorChangeTrigger (phid, i, &triggerVal);

		printf("Sensor#: %d > Sensitivity Trigger: %d\n", i, triggerVal);
	}

	return 0;
}

int AttachHandlerTemp(CPhidgetHandle TEMP, void *userptr)
{
	int serialNo;
	const char *name;

	CPhidget_getDeviceName (TEMP, &name);
	CPhidget_getSerialNumber(TEMP, &serialNo);
	printf("%s %10d attached!\n", name, serialNo);

	return 0;
}

int DetachHandlerTemp(CPhidgetHandle TEMP, void *userptr)
{
	int serialNo;
	const char *name;

	CPhidget_getDeviceName (TEMP, &name);
	CPhidget_getSerialNumber(TEMP, &serialNo);
	printf("%s %10d detached!\n", name, serialNo);

	return 0;
}

int ErrorHandlerTemp(CPhidgetHandle TEMP, void *userptr, int ErrorCode, const char *Description)
{
	printf("Error handled. %d - %s\n", ErrorCode, Description);
	return 0;
}

int TemperatureChangeHandler(CPhidgetTemperatureSensorHandle TEMP, void *usrptr, int Index, double Value)
{
	double ambient;
	CPhidgetTemperatureSensor_getAmbientTemperature(TEMP, &ambient);
	printf("Temperature sensor: %d > Temperature: %f (Ambient: %f)\n", Index, Value, ambient);
	return 0;
}

//Display the properties of the attached phidget to the screen.  We will be displaying the name, serial number and version of the attached device.
int display_properties(CPhidgetTemperatureSensorHandle phid)
{
	int serialNo, version, numInputs, i;
	double value;
	const char* ptr;

	double min, max;

	CPhidget_getDeviceType((CPhidgetHandle)phid, &ptr);
	CPhidget_getSerialNumber((CPhidgetHandle)phid, &serialNo);
	CPhidget_getDeviceVersion((CPhidgetHandle)phid, &version);

	CPhidgetTemperatureSensor_getTemperatureInputCount (phid, &numInputs);


	printf("%s\n", ptr);
	printf("Serial Number: %10d\nVersion: %8d\n", serialNo, version);
	printf("# Temperature Inputs: %d\n", numInputs);

	for(i = 0; i < numInputs; i++)
	{
		CPhidgetTemperatureSensor_getTemperatureChangeTrigger (phid, i, &value);
		CPhidgetTemperatureSensor_getTemperatureMax(phid, i, &max);
		CPhidgetTemperatureSensor_getTemperatureMin(phid, i, &min);
		printf("Temperature Input #: %d > sensitivity: %f Max: %0.0f, Min: %0.0f\n", i, value, max, min);
	}

	CPhidgetTemperatureSensor_getPotentialMax(phid, 0, &max);
	CPhidgetTemperatureSensor_getPotentialMin(phid, 0, &min);
	printf("Potential Max: %0.3f, Min: %0.3f\n", max, min);

	CPhidgetTemperatureSensor_getAmbientTemperatureMax(phid, &max);
	CPhidgetTemperatureSensor_getAmbientTemperatureMin(phid, &min);
	printf("Ambient Sensor Max: %0.0f, Min: %0.0f\n", max, min);

	return 0;
}
////////////////////////////////////////////////////////////////////////////////////
int tempsensor_simple()
{
	int result;
	const char *err;

	//Declare an temperature sensor handle
	CPhidgetTemperatureSensorHandle temp = 0;

	//create the temperature sensor object
	CPhidgetTemperatureSensor_create(&temp);

	//Set the handlers to be run when the device is plugged in or opened from software, unplugged or closed from software, or generates an error.
	CPhidget_set_OnAttach_Handler((CPhidgetHandle)temp, AttachHandler, NULL);
	CPhidget_set_OnDetach_Handler((CPhidgetHandle)temp, DetachHandler, NULL);
	CPhidget_set_OnError_Handler((CPhidgetHandle)temp, ErrorHandler, NULL);

	//Registers a callback that will run if the Temperature changes by more than the Temperature trigger.
	//Requires the handle for the Temperature Sensor, the function that will be called, and a arbitrary pointer that will be supplied to the callback function (may be NULL).
	CPhidgetTemperatureSensor_set_OnTemperatureChange_Handler(temp, TemperatureChangeHandler, NULL);

	//open the temperature sensor for device connections
	//CPhidget_open((CPhidgetHandle)temp, -1);
	[color=#0000FF][u]CPhidget_openRemote ((CPhidgetHandle)temp, -1,"phidgetsbc", 0);[/u][/color]


	//get the program to wait for an temperature sensor device to be attached
	printf("Waiting for TemperatureSensor to be attached....");
	if((result = CPhidget_waitForAttachment((CPhidgetHandle)temp, 10000)))
	{
		CPhidget_getErrorDescription(result, &err);
		printf("Problem waiting for attachment: %s\n", err);
		return 0;
	}

	//Display the properties of the attached accelerometer device
	display_properties(temp);

	//read temperature sensor event data
	printf("Reading.....\n");
	tempsensor_simple();

	//keep displaying temperature sensor event data until user input is read

	//modify the sensor sensitivity, index 1 is the thermocouple sensor, index 0 is the onboard or ambient sensor
	printf("Setting sensitivity of the thermocouple to 2.00. Press any key to continue\n");
	getchar();

	CPhidgetTemperatureSensor_setTemperatureChangeTrigger (temp, 1, 2.00);

	printf("Press any key to end\n");
	getchar();

	//since user input has been read, this is a signal to terminate the program so we will close the phidget and delete the object we created
	printf("Closing...\n");
	CPhidget_close((CPhidgetHandle)temp);
	CPhidget_delete((CPhidgetHandle)temp);

	//all done, exit
	return 0;
}
//////////////////////////////////////////////////////////////////////////////////////////////////


int interfacekit_simple()
{
	int result, numSensors, i;
	const char *err;

	//Declare an InterfaceKit handle
	CPhidgetInterfaceKitHandle ifKit = 0;

	//create the InterfaceKit object
	CPhidgetInterfaceKit_create(&ifKit);

	//Set the handlers to be run when the device is plugged in or opened from software, unplugged or closed from software, or generates an error.
	CPhidget_set_OnAttach_Handler((CPhidgetHandle)ifKit, AttachHandler, NULL);
	CPhidget_set_OnDetach_Handler((CPhidgetHandle)ifKit, DetachHandler, NULL);
	CPhidget_set_OnError_Handler((CPhidgetHandle)ifKit, ErrorHandler, NULL);

	//Registers a callback that will run if an input changes.
	//Requires the handle for the Phidget, the function that will be called, and an arbitrary pointer that will be supplied to the callback function (may be NULL).
	CPhidgetInterfaceKit_set_OnInputChange_Handler (ifKit, InputChangeHandler, NULL);

	//Registers a callback that will run if the sensor value changes by more than the OnSensorChange trig-ger.
	//Requires the handle for the IntefaceKit, the function that will be called, and an arbitrary pointer that will be supplied to the callback function (may be NULL).
	CPhidgetInterfaceKit_set_OnSensorChange_Handler (ifKit, SensorChangeHandler, NULL);

	//Registers a callback that will run if an output changes.
	//Requires the handle for the Phidget, the function that will be called, and an arbitrary pointer that will be supplied to the callback function (may be NULL).
	CPhidgetInterfaceKit_set_OnOutputChange_Handler (ifKit, OutputChangeHandler, NULL);

	//open the interfacekit for device connections
	//CPhidget_open((CPhidgetHandle)ifKit, -1);

	CPhidget_openRemote 	((CPhidgetHandle)ifKit, 111653,"phidgetsbc", 0);

	//get the program to wait for an interface kit device to be attached
	printf("Waiting for interface kit to be attached....");
	if((result = CPhidget_waitForAttachment((CPhidgetHandle)ifKit, 10000)))
	{
		CPhidget_getErrorDescription(result, &err);
		printf("Problem waiting for attachment: %s\n", err);
		return 0;
	}

	//Display the properties of the attached interface kit device
	display_properties(ifKit);

	//read interface kit event data
	printf("Reading.....\n");

	//keep displaying interface kit data until user input is read
	printf("Press any key to go to next step\n");
	getchar();

	printf("Modifying sensor sensitivity triggers....\n");

	//get the number of sensors available
	CPhidgetInterfaceKit_getSensorCount(ifKit, &numSensors);

	//Change the sensitivity trigger of the sensors
	for(i = 0; i < numSensors; i++)
	{
		CPhidgetInterfaceKit_setSensorChangeTrigger(ifKit, i, 100);  //we'll just use 10 for fun
	}

	//read interface kit event data
	printf("Reading.....\n");

	
	//keep displaying interface kit data until user input is read
	printf("Press any key to go to next step\n");
	getchar();

	printf("Toggling Ratiometric....\n");

	CPhidgetInterfaceKit_setRatiometric(ifKit, 0);

	//read interface kit event data
	printf("Reading.....\n");

	tempsensor_simple();
	//keep displaying interface kit data until user input is read
	//printf("Press any key to end\n");
	//getchar();

	//since user input has been read, this is a signal to terminate the program so we will close the phidget and delete the object we created
	//printf("Closing...\n");
	//CPhidget_close((CPhidgetHandle)ifKit);
	//CPhidget_delete((CPhidgetHandle)ifKit);

	//all done, exit
	return 0;
}



int main(int argc, char* argv[])
{
	interfacekit_simple();
	
	return 0;
}
i think that the problem is in the blue font line, but i don't know what to put as argument...the interface kit is being attached successfuly, but the the temperature sensor isn't attached...

What should i do to make it work???
galileo

Re: New PhidgetSBC Firmware Version 1.0.4

Post by galileo »

i don't know why the font color kai underlying isn't working...Anyway i mean the
CPhidget_openRemote ((CPhidgetHandle)temp, -1,"phidgetsbc", 0);

command in the int tempsensor_simple() function.
galileo

Re: New PhidgetSBC Firmware Version 1.0.4

Post by galileo »

Now patrick I want to ask you a second question...I have a project to make, and if i catch up within the deadline i want to write code in C, matlab, Java and perhaps (Labview otherwise Matlab with Simulink)...So i tried to run the matlab example analogin.m and it seems that there is a problem with VS2008 libraries i get the error:

??? Error using ==> loadlibrary at 365
Failed to preprocess the input file.
Output from preprocessor is:'cl' is not recognized as an internal or external command,
operable program or batch file.

Error in ==> analogin at 4
loadlibrary phidget21 phidget21Matlab.h ;

i searched in mathworks and says about the path variables of VS2008. i set them manually but doesn't recognize them yet...i did write the paths to environment variables in win7 (i have 64-bit) and to the matlab command line using (!) so as to understand windows command line, but none luck...what should i do to solve this and go on???

And lastly only these 3 examples there are for matlab???nothing else???

thank you very much for your time!!!
Last edited by galileo on Thu Dec 02, 2010 11:29 am, edited 1 time in total.
erik
King of the Lab
Posts: 476
Joined: Fri Mar 06, 2009 12:42 pm
Location: Calgary, Canada
Contact:

Re: New PhidgetSBC Firmware Version 1.0.4

Post by erik »

The temperature sensor that you are using (the 1125) is simply an analog sensor. You cannot "connect" to it using the Open commands.

You need to access the port (index) of the InterfaceKit that you plugged the sensor into.

Code: Select all

int CPhidgetInterfaceKit_getSensorValue (CPhidgetInterfaceKitHandle phid, int index, int *sensorValue)
Then use the formula in the 1125 manual to convert the sensorValue into a temperature.
galileo

Re: New PhidgetSBC Firmware Version 1.0.4

Post by galileo »

thank you erik, i'll try that and i'll get back to you...

now does anyone know how to solve the problem with matlab??
see my previous post...
Post Reply

Who is online

Users browsing this forum: No registered users and 9 guests