Reader Application

This page quickly informs on the status of the WISP GUI App.
Questions? - yeagerd yeagerd might be able to answer your question.


The WISP community supports Impinj Speedway readers with an LLRP-compatible, C#, Visual Studio GUI application ("WISPDemo"). It has been tested in Windows XP, Windows Vista, and Windows 7. This app interacts with WISPs and displays WISP sensor data.

To get started using the reader application, clone the repository at impinj-reader-app and run \WISPDemo\bin\Release\WISPDemo.exe.

A second application is now also included ("AttenTest") which sweeps the reader's internal attenuator to plot read rate versus attenuation.

See the documentation page for more info on how this program works.
See the UsingGUIApp page for info on how the run the program.

Getting the Code

Download it from GitHub. Releases are tagged for easy downloading. If you intend to make changes, fork the impinj-reader-app repository (if you don't know how, follow these instructions, mutatis mutandis) and send pull requests upstream.

Making Major Changes (i.e., Releases)

If you make a major change to the GUI app, bump the major version index (ex: 1.5 -> 2.0). For a small change, bump the minor index.

Update the version info in these places:
  • This documentation page: add a row to the table below and document changes and the new version number
  • The GUI app version label
  • git tag -a <new version number> (don't forget to use git push --tags when pushing afterward)

Known Bugs

1. Out of date - please review for accuracy: Read operation only works on antenna #1.
  • RFIDReader.GetAccessSpecMsg() - this sets the antenna ID to 1.
  • I think the proper way is to add the access spec to each desired antenna (all of the checked antennas, presumably).
  • RFIDReader.StartRead(cmd) - the cmd should probably include the desired antenna(s) as well as memory bank and other things which are part of the tag spec - see RFIDReader.AddTagSpec(...)
  • Write presumably has the same bug.

Feature Requests

1. Improve tag statistics class
  • Keep track of per-tag read rate
  • Per-tag error rates based on tag's counter
  • Historical sensor data
  • Option for sorting by EPC, not by WISP ID

2. Improve RFIDReader reader control class:
  • Continuous or N tags modes
  • Read and Write modes still need some work to allow specifying mask, length, ptr, data, etc.

3. Keep the last used IP address saved in a text file and use it as the default startup address.

4. Logging class could use a method to generate a header row with the selected option names printed. Alternatively, this could be done automagically when logging is started or options are changed.

5. Lengthy reader communication operations (ie, Connect) would benefit from a timeout progress bar, or at least a message about how long the timeout is. For example, Connect() could show a window with a progress bar and a cancel button to abort the operation.

5a. Another, perhaps less difficult method, would be to start with a very short timeout (ex, 1s), and progressively increase the timeout up to some limit after each failure. The user could cancel between attempts.

Code Cleanup Requests

Historical and Planned Release Information

Release Name
New Features
By Whom?
Known Bugs
Beta 1
1) Tag Inventory

2) Saturn Demo
- fransiscog fransiscog
See below
Beta 1.1
1) Fixed path to Saturn graphics
2) Increased reader polling time to 100ms to give WISP more power.
- ripras ripras
1) Polly reports that ID is truncated
2) Text box bogs down app
Beta 1.2
1) Fixed text box bogging down
- ripras ripras
1) Polly reports that ID is truncated
Beta 1.3
1) Fixed ID truncation
2) Created Handler Function to handle tag data
3) Refactored Tag Parsing into MyTag class
4) Disabled accelerometer fifo - Saturn updates with last seen acceleration data
5) Neural WISP Demo (a data logger)
- yeagerd yeagerd
GUI still a little choppy
Real cause discovered:
- HandleRoReport is bogging down over time
- likly due to accel noise generating
large tag population
- Richa's version doesn't not bog down
- need to integrate versions -djy
Beta 1.4
1) Removed GUI stuff from RO Report Handler Thread, which fixes speed issues
2) Added code comments on how to add a new sensor and basic theory of operation and Intel Copyright.
- yeagerd yeagerd
- Can't re-open saturn after it's closed
Beta 1.5
1) Licensing info added
2) Temperature demo parsing
3) Hooks for comm stats demo parsing
4) Subnet discovered automagically
- yeagerd yeagerd
- Can't re-open saturn after it's closed
Beta 1.6
1) Added tags per second + filtering option in Settings Tab
2) "0B" accel support - quick sampling
- yeagerd yeagerd
Z channel of "0B" in error
- Can't re-open saturn after it's closed
Beta 1.7
1) Added measurement window setting for Tag Rate counter
2) Fixed z channel of "0B"
- yeagerd yeagerd
- Can't re-open saturn after it's closed
Beta 2.0
1) Temperature graph using ZedGraph
- yeagerd yeagerd
Graph doesn't update: need to call graph.Update()
Beta 3.0
1) Encapsulate LLRP reader control from GUI
2) Graphing working for temperature, neural
- yeagerd yeagerd

Beta 3.1
1) Added a calibrate button for "0B" Accelerometers to zero out offset
- yeagerd yeagerd

Beta 4.0
1) Tag Stats GUI Tab, Class added
  • Currently just last seen and lifetime count
2) Parsing for tag serial number, hardware rev. as per spec
- yeagerd yeagerd

1) Minor updates to Tag Stats to include tag counter
- yeagerd yeagerd

1) HW Rev parsed into tag summary window (stats page)
2) DoEvents() removed from GUI_Update_Timer, which helps update rate
3) Debugging info on Handler and GUI Updater refresh times added
- yeagerd yeagerd

1) Revamped GUI control - "currentMode" variable is the app state.
2) SetMode() changes app state - starts and stops reader, starts and stops inventory, neural wisp and other applications.
3) Added attenuator sweep page and some associated hooks
4) Moved tag stats page to main form, pushed scrolling tag list to debug tab.
- yeagerd yeagerd

1) Reader settings may now be manipulated.
2) Inventory settings are sketched out.
3) Reader modulation settings are imported from the reader
4) Logging to text file available.
5) Multi-antenna configurations now supported.
- yeagerd yeagerd
- ripras ripras

1) Support for "speedway-xx-yy-zz" addresses
2) RFID Reader class supports Read and Write commands
3) Added handling of EPC_96 vs. EPCData tag types in ParseTag and MyTag
4) Tag Table shows Read Data
5) GUI button to enable reads.
- yeagerd yeagerd

1) Read All Tags or Read Selected Tag (from grid view) added
2) Data read from tag is now stored as a hex string in MyTag.
3) RFIDReader StartRead, RestartRead and StopRead commands working
4) Parameters for epc, mask, ptr, and words
- yeagerd yeagerd

1) Settings Tab has been made into a separate form
2) Inventory Settings is now set; information being sent back to reader.
3) Saturn Box opens and closes upon checking and unchecking the box accordingly
4) Errors are shown through appearance of Message Boxes
- ritika90 ritika90

Not for release - development iteration
1) Attenuator Test split into separate project
2) HandleTags made into separate class.
- ritika90 ritika90
1) Accel Filter broken
Not for release - development iteration
1) Created a ReaderManager class which stays synchronized with the reader state (connected, running, etc.)
2) ReaderLibrary project created.
- ritika90 ritika90
1) Accel Filter broken
Not for release - development iteration
1) Add a Logger project, which contains common code and forms for setting up and performing text file logging.
- ritika90 ritika90
1) Accel Filter broken
Not for release - development iteration
1) Fixed bug #3 - inventory not working on other antennas
2) Accel filter fixed.
- ritika90 ritika90

Release Version!
1) Hopefully stable, not too many bugs.
- ritika90 ritika90

1) Added some checks so Inv & read cannot be started unless connected.
2) Fixed bug in tagCount bug in HandleTags - clearTagCount() was clearing newTags, not tagCount.
3) Changed GetAccessSpecMsg: removed loop over antennas - it was just changing the same variable - not adding new specs per each antenna - to read all antennas.
4) Added logging for socWISP
- yeagerd yeagerd

1) Updates to zedgraph should lock the pointpairlist so threading violations don't crash zedgraph. This isn't an issue with temperature, since the GUI adds points to the PPL. If HandleTags updates PPL, then thread safety should be observed.
2) Filtering for socwisp
3) Temp cal for socwisp
- yeagerd yeagerd

1) Minor socwisp features
2) Fixed: Logging Edit form always puts current time into log file name instead of retrieving current log file name.
3) Removed some extraneous interfaces and classes.
- yeagerd yeagerd

1) Attenuator Test nearly operational - see bugs ->
2) Added: LoggingManager.CloseAllLogs() for proper exit
3) ReaderManager.Disconnect() doesn't try unless we are connected.
- yeagerd yeagerd
1) Attenuation may not be getting sent to the reader
2) Attenutation logging not quite operational.
3) When "Off time" in Attenuation is 0, exception thrown.
1) Added a logger enable/disable button to reduce mouse clicks
2) Minor socWISP logging changes
- yeagerd yeagerd
1) Attenuation Logging Fixed
2) Attenuation RunTime and SettleTime error bug fixed, sensible defaults used.
3) Attenuation Tag Rate information added to the GUI in real time
4) Attenuation progress bar now functional.
- ritika90 ritika90

1) Added MIDI demos for accelerometer WISP and Alpha-WISP
2) Moved to .NET v4.0, and refactored for VS2010
3) All dependencies should be included in repository
4) Fixed some resize issues and window close/open glitches
- anparks anparks

Old Versions

Note: if you want the most recent version as a zip file, download it from GitHub.

The last modification was made by - anparks anparks on Apr 29, 2013 3:19 pm