I just bought a little LED badge off ebay, that displays programmable messages scrolling across it. It was relavitely cheap as an output device that could be attached to a server, and might provide some fun on visit days.
Of course I knew that the software that came with it would be only for Microsoft windows, and although it is possible to use the surface mounted buttons on the back to reprogram the messages, it would be rather long-winded.
So when it arrived today, the first thing that I did with it was load the software onto a windows machine and play with it to find out what the communications requirements were.
A quick test with the software determined that even with no device plugged in, the software worked – indicating that it was just “fire and forget”, there was no hand shaking going on – would make life a lot easier.
Out came the data analyzer, and after a couple of false starts, the baud rate was found to be 1200, 8 data bits, 1 stop bit, and no parity. Nice and straight forward.
Fire up the mac laptop, with a null modem cable to the keyspan USB to serial adapter, and quick edit of some WellyWanger comms code, and I can capture the data that the software is sending.
Now for the interesting bit, the data is not just an ASCII message being sent, so I have to capture the data as something other than ASCII – I prefer to look at it in decimal, besides it’s a little easier to present the data in decimal in Java than it is in Hex.
The software allows for 10 different messages to be stored on the badge, so I try sending a single character ‘A’ to channel 0 and channel 1:
The data stream captured is:
251 243 89 254 251 246 1 16 2 0 254 = 'A' channel 1
251 243 89 254 251 246 0 16 2 0 254 = 'A' channel 0
Try sending character ‘B’
251 243 89 254 251 246 0 16 2 1 254 = 'B' channel 0
Try sending ‘AB’ to see if there is a char count:
251 243 89 254 251 246 0 1 2 0 1 254 = "AB" channel 0 (no char count!)
Changing the other options and logging the output takes about 1/2 hour, and gives me a bunch of data to work with – I’ve worked out most of the protocol.
A little programming work this evening in Java has resulted in a couple of classes which run from the command line and allow programming of the badge from Mac OS X.
A GUI might have to come later on, but for now I’ve got a command line program that has a number of options, allows you to program all 10 channels, has the first 96 characters mapped out in the conversion. This gives me the ability to use the badge as a status display on a server when I’m not using it as a badge.