00001
00002
00003
00004
00005 #include <stdio.h>
00006 #include <string.h>
00007 #include <unistd.h>
00008 #include <libphidgets/phidget21.h>
00009
00010 void display_generic_properties(CPhidgetHandle phid)
00011 {
00012 int sernum, version;
00013 const char *deviceptr;
00014 CPhidget_getDeviceType(phid, &deviceptr);
00015 CPhidget_getSerialNumber(phid, &sernum);
00016 CPhidget_getDeviceVersion(phid, &version);
00017
00018 printf("%s\n", deviceptr);
00019 printf("Version: %8d SerialNumber: %10d\n", version, sernum);
00020 return;
00021 }
00022
00023
00024 int IFK_DetachHandler(CPhidgetHandle IFK, void *userptr)
00025 {
00026 printf("Detach handler ran!\n");
00027 return 0;
00028 }
00029
00030 int IFK_ErrorHandler(CPhidgetHandle IFK, void *userptr, int ErrorCode, const char *unknown)
00031 {
00032 printf("Error handler ran!\n");
00033 return 0;
00034 }
00035
00036 int IFK_OutputChangeHandler(CPhidgetInterfaceKitHandle IFK, void *userptr, int Index, int Value)
00037 {
00038 printf("Output %d is %d\n", Index, Value);
00039 return 0;
00040 }
00041
00042 int IFK_InputChangeHandler(CPhidgetInterfaceKitHandle IFK, void *userptr, int Index, int Value)
00043 {
00044 printf("Input %d is %d\n", Index, Value);
00045 return 0;
00046 }
00047
00048 int IFK_SensorChangeHandler(CPhidgetInterfaceKitHandle IFK, void *userptr, int Index, int Value)
00049 {
00050 printf("Sensor %d is %d\n", Index, Value);
00051 return 0;
00052 }
00053
00054
00055 int IFK_AttachHandler(CPhidgetHandle IFK, void *userptr)
00056 {
00057 CPhidgetInterfaceKit_setSensorChangeTrigger((CPhidgetInterfaceKitHandle)IFK, 0, 0);
00058 printf("Attach handler ran!\n");
00059 return 0;
00060 }
00061
00062 int test_interfacekit()
00063 {
00064 int numInputs, numOutputs, numSensors;
00065 int err;
00066 CPhidgetInterfaceKitHandle IFK = 0;
00067
00068
00069
00070 CPhidgetInterfaceKit_create(&IFK);
00071
00072 CPhidgetInterfaceKit_set_OnInputChange_Handler(IFK, IFK_InputChangeHandler, NULL);
00073 CPhidgetInterfaceKit_set_OnOutputChange_Handler(IFK, IFK_OutputChangeHandler, NULL);
00074 CPhidgetInterfaceKit_set_OnSensorChange_Handler(IFK, IFK_SensorChangeHandler, NULL);
00075 CPhidget_set_OnAttach_Handler((CPhidgetHandle)IFK, IFK_AttachHandler, NULL);
00076 CPhidget_set_OnDetach_Handler((CPhidgetHandle)IFK, IFK_DetachHandler, NULL);
00077 CPhidget_set_OnError_Handler((CPhidgetHandle)IFK, IFK_ErrorHandler, NULL);
00078
00079 CPhidget_open((CPhidgetHandle)IFK, -1);
00080
00081
00082 if((err = CPhidget_waitForAttachment((CPhidgetHandle)IFK, 5000)) != EPHIDGET_OK )
00083 {
00084 const char *errStr;
00085 CPhidget_getErrorDescription(err, &errStr);
00086 printf("Error waiting for attachment: (%d): %s\n",err,errStr);
00087 goto exit;
00088 }
00089
00090 display_generic_properties((CPhidgetHandle)IFK);
00091 CPhidgetInterfaceKit_getOutputCount((CPhidgetInterfaceKitHandle)IFK, &numOutputs);
00092 CPhidgetInterfaceKit_getInputCount((CPhidgetInterfaceKitHandle)IFK, &numInputs);
00093 CPhidgetInterfaceKit_getSensorCount((CPhidgetInterfaceKitHandle)IFK, &numSensors);
00094
00095 CPhidgetInterfaceKit_setOutputState((CPhidgetInterfaceKitHandle)IFK, 0, 1);
00096
00097 printf("Sensors:%d Inputs:%d Outputs:%d\n", numSensors, numInputs, numOutputs);
00098
00099 while(1)
00100 {
00101 CPhidgetInterfaceKit_setOutputState(IFK, 7, 1);
00102 CPhidgetInterfaceKit_setOutputState(IFK, 7, 0);
00103 }
00104
00105 CPhidgetInterfaceKit_setOutputState(IFK, 0, 1);
00106 sleep(1);
00107 CPhidgetInterfaceKit_setOutputState(IFK, 0, 0);
00108 sleep(1);
00109 CPhidgetInterfaceKit_setOutputState(IFK, 0, 1);
00110 sleep(1);
00111 CPhidgetInterfaceKit_setOutputState(IFK, 0, 0);
00112
00113 sleep(5);
00114
00115 exit:
00116 CPhidget_close((CPhidgetHandle)IFK);
00117 CPhidget_delete((CPhidgetHandle)IFK);
00118
00119 return 0;
00120 }
00121
00122 int main(int argc, char* argv[])
00123 {
00124 test_interfacekit();
00125 return 0;
00126 }
00127