...
Running Phidget Handler in Simulated Mode
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<ThingFacet Name="PhidgetSimulatedFacet"> <Integer Name="SimulatedValue" Update="auto" KnownBy="PhidgetSimAction"/> <String Name="DeviceType"/> <String Name="SerialNumber"/> <Action Name="PhidgetSimAction" Documentation="Returns integer values from 1 - 100 in Random order"> <Workflow Limit="1" Live="1" Timeout="-1"> <Task Name="Main" While="True"> <Event Name="Argument" As="ActionArgument"/> <Invoke Name="ReadValue" waitFor="Argument" Get="phid://" SerialNumber="[%:Event.Argument.SerialNumber.Value:%]" DeviceType="[%:Event.Argument.DeviceType.Value:%]" Simulated="true"/> <Output Name="Result" As="ActionResult"> <Value> <SimulatedValue>[%:[%:@Output:%]Invoke.ReadValue.Message.Value:%]</SimulatedValue> </Value> </Output> </Task> </Workflow> </Action> </ThingFacet> |
Reading Data from Sensors Connected to Phidget Interface Kit
There are few important points to be noted here:
- Note that PhidgetInterfaceKit is usually a multi port device (2/2/2 or 8/8/8) i.e it has 8 USB, and 8 GPI and 8 8 GPO pins.
- When there are multiple sensors attached to the InterfaceKit, there will be multiple instances created in ThingModel to which PhidgetSensorFacet is attached.
- Even though there is one single USB connection, the Protocol handler supports multiplexing of data to different Channel.
- Therefore when we do a Invoke with Get="phid://[%:Event.Argument.SerialNumber.Value:%]" we attach the serial number to make the invocation unique.
- Internally there will be multiple listeners attached to the USB serial port each receiving data and saving to SensorValue.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<ThingFacet Name="PhidgetSensorFacet"> <Integer Name="SensorValue" Update="auto" KnownBy="PhidgetSensorAction"/> <String Name="DeviceType"/> <String Name="SerialNumber"/> <String Name="SensorName"/> <Action Name="PhidgetSensorAction" Documentation="Returns integer values from 1 - 100 in | Simulated mode Random order">
<Workflow Limit="1" Live="1" Timeout="-1">
<Task Name="Main" While="True">
<Event Name="Argument" As="ActionArgument"/>
<Invoke Name="ReadValue" waitFor="Argument" Get="phid://[%:Event.Argument.SerialNumber.Value:%]" SerialNumber="[%:Event.Argument.SerialNumber.Value:%]" DeviceType="[%:Event.Argument.DeviceType.Value:%]" Simulated="false"/>
<Output Name="Result" As="ActionResult">
<Value>
<SensorValue>[%:[%:@Output:%]Invoke.ReadValue.Message.Value:%]</SensorValue>
</Value>
</Output>
</Task>
</Workflow>
</Action>
</ThingFacet>
<!-- Combine with Model -->
<ThingModel Name="PhidgetSensors" Combines="PhidgetSensorFacet">
<Sid Name="SensorID"/>
</ThingModel>
<!-- Activate Sensor -->
<Query>
<Save format="version,current">
<PhidgetSensors>
<SensorName>Rotation</SensorName>
<DeviceType>PhidgetInterfaceKit</DeviceType>
<SerialNumber>0</SerialNumber>
<SensorValue value="$Null()"/>
</PhidgetSensors>
</Save>
</Query> |
Reading Data from a GPS Sensor
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<ThingFacet Name="PhidgetSimulatedFacet">
<Integer Name="SimulatedValue" Update="auto" KnownBy="PhidgetSimAction"/>
<String Name="DeviceType"/>
<String Name="SerialNumber"/>
<Action Name="PhidgetSimAction" Documentation="Returns integer values from 1 - 100 in Random order">
<Workflow Limit="1" Live="1" Timeout="-1">
<Task Name="Main" While="True">
<Event Name="Argument" As="ActionArgument"/>
<Invoke Name="ReadValue" waitFor="Argument" Get="phid://" SerialNumber="[%:Event.Argument.SerialNumber.Value:%]" DeviceType="[%:Event.Argument.DeviceType.Value:%]" Simulated="true"/>
<Output Name="Result" As="ActionResult">
<Value>
<SimulatedValue>[%:[%:@Output:%]Invoke.ReadValue.Message.Value:%]</SimulatedValue>
</Value>
</Output>
</Task>
</Workflow>
</Action>
</ThingFacet> |
Controlling Servo Motor Angle
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<ThingFacet Name="PhidgetSimulatedFacet"> <Integer Name="SimulatedValue" Update="auto" KnownBy="PhidgetSimAction"/> <String Name="DeviceType"/> <String Name="SerialNumber"/> <Action Name="PhidgetSimAction" Documentation="Returns integer values from 1 - 100 in Random order"> <Workflow Limit="1" Live="1" Timeout="-1"> <Task Name="Main" While="True"> <Event Name="Argument" As="ActionArgument"/> <Invoke Name="ReadValue" waitFor="Argument" Get="phid://" SerialNumber="[%:Event.Argument.SerialNumber.Value:%]" DeviceType="[%:Event.Argument.DeviceType.Value:%]" Simulated="true"/> <Output Name="Result" As="ActionResult"> <Value> <SimulatedValue>[%:[%:@Output:%]Invoke.ReadValue.Message.Value:%]</SimulatedValue> </Value> </Output> </Task> </Workflow> </Action> </ThingFacet> |
...