Acidus - 2004-10-31

Thanks to Charles for his great post about serial readers. I just received a MagTek 21040074 (serial, reads 1, 2, and 3). Steven, who sells the ACR33B (serial, reads 1 and 2) on ebay was nice enough to send me 2 of his readers.  And from England no less! Thank you very much Steven, they are working great.

Note: All Stripe Snoop development is done under Linux, only to be moved to Windows a few days before a new release to make it work there as well. Opening Hyper Terminal in Windows and setting the baud rate to 9600 is enough to read this in Windows, and full support under Stripe Snoop will be coming soon.

=====ACR33B=====
These are nice readers, and they read track 1 and 2. To read them, set your Serial Port settings to 9600 baud, with 8N1. No hardware or software flow control is needed. Under Linux, make sure your serial port is configured to use Canonical output (ie operates on lines at a time) and echo is turn on. Run "stty -F /dev/ttyS0" for information about how your port is configured

[acidus@helix tmp]$ stty -F /dev/ttyS0
speed 9600 baud; line = 0;
min = 1; time = 0;
-brkint -imaxbel
-icanon -echo

If icanon and -echo are not set, use "stty /dev/ttyS0 -icanon" and "stty /dev/ttyS0 -echo" to turn the flags on.

The ACR33B should respond by printing "PORTPOWERED READER" when you run "cat /dev/ttyS0" The output when you swipe a card looks like:

%[Track 1 Chars]?;[Track 2 Chars]?+N?

Note the 3 track is printed, but is always N. As Charles pointed out with the MagTek reader, all the tracks will be printed, and special letters will be used to convey info. N means the track was not detected. F means the track was detected, but contains a unknown character set. Of cource, if a card only has Track 3, the ACR33B will fail to detect it.

The ACR33B *does not* append its output with anew line character(s).

=====MagTek=====
The Magtek reader is expensive, but all you could ask for. It reads all 3 tracks. It also is much more forgiving than the ACR33B with serial port settings. The settings a port has on boot are enough, ie:
[acidus@helix tmp]$ stty -F /dev/ttyS0
speed 9600 baud; line = 0;
-brkint -imaxbel

The MagTek reader will display "21088817C01" when you run "cat /dev/ttyS0" and outputs as Charles has stated in his "A different view" post.

MagTek Serial Readers only output tracks they detect, so they don't use the N. MagTek readers also use E to signify a track it detected but couldn't decode

MagTek Serial readers add a new line character to the end of their output.

=====Current Support=====
Being Serial readers, you can read them using Hyoer Terminal in WIndows, or "cat" in Linux. I have only had serial readers for a week or so, but the CVS version of Stripe Snoop supports MagTek serial readers, but not ACR33B. Seeing how ACR33B readers display there output different (no \n), they will require some programming, but they will be supported soon in the CVS tree, and certainly in the next version of Stripe Snoop.