Firmware version 4.6.1 along with LTK version 10_12_0_240 brings the ability to change the behavior of the Speedway Revolution and Speedway xPortal GPO ports using the new Impinj Advanced GPO Configuration options.
This custom parameter controls the advanced GPO feature of the readers. When set to Normal (default) the GPO is set via the regular LLRP SET_READER_CONFIG message. When set to Pulsed, the GPO changes state based on the SET_READER_CONFIG message, and will change to the opposite state after GPOPulseDurationMSec milliseconds. When set to Reader_Operational_Status, LLRP_Connection_Status, or Reader_Inventory_Status, the GPO status acts like a Boolean value. When high (true, 1), the corresponding status is true, meaning the reader is operating, has a LLRP connection, or is inventorying. When low (false, 0), the opposite is the case.
Whenever a GPO has been associated with a specific reader status, it cannot be set via the normal LLRP protocol. If a SET_READER_CONFIG message is received that attempts to change the state of a GPO associated with a specific reader status, the message will be rejected by the reader.
Remember to run Enable_Impinj_Extensions() prior to using these commands.
See Connecting GPIO Devices to Speedway Revolution to learn how to manually manipulate GPO.
Below is an example of C#.NET code that will set the Impinj Advanced GPO Configuration to "Normal". Comment out "Normal" and uncomment any of the other lines to change the behavior.
private void btnSetImpinjAdvancedGPOConfiguration_Click(object sender, EventArgs e) { MSG_SET_READER_CONFIG msg = new MSG_SET_READER_CONFIG(); PARAM_ImpinjAdvancedGPOConfiguration GPO = new PARAM_ImpinjAdvancedGPOConfiguration(); GPO.GPOPortNum = 1; GPO.GPOMode = new ENUM_ImpinjAdvancedGPOMode(); GPO.GPOMode = ENUM_ImpinjAdvancedGPOMode.Normal; //GPO.GPOMode = ENUM_ImpinjAdvancedGPOMode.LLRP_Connection_Status; //GPO.GPOMode = ENUM_ImpinjAdvancedGPOMode.Pulsed; //GPO.GPOPulseDurationMSec = 1000; //GPO.GPOMode = ENUM_ImpinjAdvancedGPOMode.Reader_Inventory_Status; //GPO.GPOMode = ENUM_ImpinjAdvancedGPOMode.Reader_Operational_Status; msg.AddCustomParameter(GPO); MSG_SET_READER_CONFIG_RESPONSE rsp = reader.SET_READER_CONFIG(msg, out msg_err, 12000); if (rsp != null) { textBox2.Text = rsp.ToString(); } else if (msg_err != null) { textBox2.Text = rsp.ToString(); } else textBox2.Text = "Commmand time out!"; }
Comments
Article is closed for comments.