MPRs and UNIX: MPR GUI v6.0 for Mac OS / BSD UNIX / Linux

MPR_GUI_5_image

If you own, or are interested in purchasing, one of Triquint’s compact UHF RFID readers, the MPR or WJR readers, and want to control them from a UNIX-type platform, you can download the source code for a simple graphical user interface for these products from the links below. The interface is written in Python, so it is reasonably platform-independent. You need to have pyserial (for talking to the serial port) and Tkinter (for the graphical user interface) available in your Python implementation. I have run the interface on a Mac under OS 10.3 (in which Python is included by default). The program can also run under Windows, though there are also GUI's available directly from WJ Communications and from integralRFID if you have a Windows platform. Some remarks for Windows user can be found below. To run these on a Mac with MacPython 2.3, make sure all the relevant files are in your search path, and then drag MPRGUI_6.0.py onto PythonLauncher, or launch using a Terminal window. I've also made things work using a Keyspan USB-to-serial converter to an MIB-1000.

Release 6 includes support for EPCglobal Class 1 Generation 2 tag inventories, and still has support for the (very old) Class 0 and Class 1 tags. A brief user's manual and programmer's manual is included as an Acrobat file.

These files are distributed open-source for your free use and modification, with two provisos: please retain my name-company credits in the comments, and if you make improvements in the code (it could use them!) please send a copy to me. Comments and questions are also welcome.

For a Windows machine:

• First install Python 2.5 (or later) if it isn't on your machine;  www.python.org, 2.5.2 installer
• Next, install pywin32 (a Python package providing access to Win32 functions); available on SourceForge.net
• Install pyserial, preferably AFTER pywin32.  (pyserial uses pywin32 function calls)
• Finally, in MPR GUI reader_functions.py function Set_serial_port(), change the port to 0,1,2,3 etc. corresponding to COM1,COM2, COM3...  That is:  ser.port=1  for COM2.  (To see where the port you are interested in is enumerated, you need to go to the control panel and pull up System:Hardware:DeviceManager:Ports (COM and LPT).)

Also, there are a couple of bugs that I've fixed but never got around to releasing:  you should test for an incorrect packet length in Validate_Received_Packet, and you should change the timeout to e.g. 5 seconds instead of 1000 seconds when the serial port is opened (in Set_serial_port) to avoid a very long hangup when the MPR/WJR doesn't provide a well-formed packet.

.SIT version (Mac OS compression)

.ZIP version (Windows compression)