The Fosstrak Reader RP Client is a Java Swing-based graphical user interface to execute commands and communicate with a RFID reader that implements the EPCglobal Reader Protocol Version 1.1. The Reader Client supports the following elements of the protocol:
Additional to the Test Client, there are two versions of an event sink contained in the Reader RP Client module. The EventSinkUI displays a graphical user interface with a text field to show messages received. The EventSink uses the console to output messages received. Mentioning an event sink in this user guide will apply to both versions.
The event sink is started separately and acts as an end point to a notification channel of the reader. Notifications received from the reader are displayed in the particular output field - text area or console respectively.
The following instructions show how to install the Fosstrak Reader RP Client:
java -jar <path-to>/reader-rp-client-<version>.jar
java -cp <path-to>/reader-rp-client-<version>.jar org.fosstrak.reader.rp.client.TestClient
java -cp <path-to>/reader-rp-client-<version>.jar org.fosstrak.reader.rp.client.EventSinkUI [port]
This section shows an example reader configuration procedure using the Reader RP Client.
The setup consists of an EventSinkUI listening on port 9999 and an Fosstrak Reader using the graphical simulator. Both are runnning on the same computer as the Reader RP Client. The simulator has a source with the name 'Shelf1'.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ns2:command xmlns:ns2="urn:epcglobal:rp:xsd:1"> <id>2</id> <targetName></targetName> <trigger> <create> <name>rt</name> <triggerType>TIMER</triggerType> <triggerValue>ms=2000</triggerValue> </create> </trigger> </ns2:command>
HTTP/1.1 200 OK RP-Receiver-Signature: RPR1 RP-Spec-Version-OK: yes RP-Request-Content-Type-OK: yes RP-Response-Content-Type-OK: yes RP-Response-ACKNAK-OK: yes Content-Type: text/xml; charset=utf-8 Content-Length: 269 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ns2:reply xmlns:ns2="urn:epcglobal:rp:xsd:1"> <id>2</id> <resultCode>0</resultCode> <trigger> <create> <returnValue>rt</returnValue> </create> </trigger> </ns2:reply>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ns2:command xmlns:ns2="urn:epcglobal:rp:xsd:1"> <id>4</id> <targetName></targetName> <trigger> <create> <name>nt</name> <triggerType>TIMER</triggerType> <triggerValue>ms=2000</triggerValue> </create> </trigger> </ns2:command>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ns2:reply xmlns:ns2="urn:epcglobal:rp:xsd:1"> <id>4</id> <resultCode>0</resultCode> <trigger> <create> <returnValue>nt</returnValue> </create> </trigger> </ns2:reply>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ns2:command xmlns:ns2="urn:epcglobal:rp:xsd:1"> <id>6</id> <targetName></targetName> <notificationChannel> <create> <name>nc</name> <address>http://localhost:9999?mode=connect</address> </create> </notificationChannel> </ns2:command>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ns2:reply xmlns:ns2="urn:epcglobal:rp:xsd:1"> <id>6</id> <resultCode>0</resultCode> <notificationChannel> <create> <returnValue>nc</returnValue> </create> </notificationChannel> </ns2:reply>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ns2:command xmlns:ns2="urn:epcglobal:rp:xsd:1"> <id>8</id> <targetName>nc</targetName> <notificationChannel> <addNotificationTriggers> <triggers> <list> <value>nt</value> </list> </triggers> </addNotificationTriggers> </notificationChannel> </ns2:command>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ns2:reply xmlns:ns2="urn:epcglobal:rp:xsd:1"> <id>8</id> <resultCode>0</resultCode> <notificationChannel> <addNotificationTriggers/> </notificationChannel> </ns2:reply>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ns2:command xmlns:ns2="urn:epcglobal:rp:xsd:1"> <id>10</id> <targetName>nc</targetName> <notificationChannel> <addSources> <sources> <list> <value>Shelf1</value> </list> </sources> </addSources> </notificationChannel> </ns2:command>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ns2:reply xmlns:ns2="urn:epcglobal:rp:xsd:1"> <id>10</id> <resultCode>0</resultCode> <notificationChannel> <addSources/> </notificationChannel> </ns2:reply>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ns2:command xmlns:ns2="urn:epcglobal:rp:xsd:1"> <id>12</id> <targetName>Shelf1</targetName> <source> <addReadTriggers> <triggers> <list> <value>rt</value> </list> </triggers> </addReadTriggers> </source> </ns2:command>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ns2:reply xmlns:ns2="urn:epcglobal:rp:xsd:1"> <id>12</id> <resultCode>0</resultCode> <source> <addReadTriggers/> </source> </ns2:reply>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ns2:notification xmlns:ns2="urn:epcglobal:rp:xsd:1"> <id>1</id> <reader> <readerEPC>ReaderEPC</readerEPC> <readerName>MyReader</readerName> <readerHandle>0</readerHandle> <readerRole>ReaderRole</readerRole> </reader> <notifyTriggerName>NotificationTrigger</notifyTriggerName> <notifyChannelName>NotificationChannel</notifyChannelName> <readReport> <sourceReport> <sourceInfo> <sourceName>Shelf1</sourceName> <sourceFrequency>0</sourceFrequency> <sourceProtocol>not supported</sourceProtocol> </sourceInfo> <tag> <tagID>9204F0004B000000</tagID> <tagIDAsPureURI>urn:epc:raw:64.x9204F0004B000000</tagIDAsPureURI> <tagIDAsTagURI>urn:epc:raw:64.x9204F0004B000000</tagIDAsTagURI> <tagType>not supported</tagType> <tagEvent> <eventType>evGlimpsed</eventType> <eventTriggers> <trigger>ReadTrigger</trigger> </eventTriggers> <time> <eventTimeTick>1199287632796</eventTimeTick> <eventTimeUTC>2008-01-02T16:27:12.796+01:00</eventTimeUTC> </time> </tagEvent> <tagEvent> <eventType>evNew</eventType> <eventTriggers> <trigger>NoTrigger</trigger> </eventTriggers> <time> <eventTimeTick>1199287632796</eventTimeTick> <eventTimeUTC>2008-01-02T16:27:12.796+01:00</eventTimeUTC> </time> </tagEvent> </tag> </sourceReport> </readReport> </ns2:notification>