Wallboard
Error creating thumbnail: Unable to save thumbnail to destination
So I got a wallboard display, power adapter, a moxa eth-rs232 converter and cable for free No software, driver or whatsoever further included.
What to do with it?
Well mostly for the sake of investigation and making it work together gets me satisfied !
The final result
An online page where you can send text and effect to the wallboard. I think I am missing some effects/options and I haven’t got a clue how to set the TIME and DATE. So there’s some room to enhance my work underhere.
How I got there
Connecting it and turning it on without the moxa showed a default message. So what to do? Make the MOXA to work with the wallboard. Understand the protocol used for displaying text.
Cool guy
I asked a guy from the telephony department if he had some experience with these wallboards as it is a typical telephony/voice ‘thing’. As he said he has no experience with it he proparbly knew one or two guys in the field with some experience. A couple of weeks later he came up and said he got some MS-DOS software. A program called DISPLAY.EXE. Later on more about DISPLAY.EXE.
Moxa
After connecting the moxa to my network I couldn’t find it with nmap. it looks like it has a static IP address. So lets use arp to get it done at last I know the MAC address as it is printed on the back of the MOXA.
#arp -s MAC_ADDRESS NEW_IP_ADDRESS (make it accesible in your network) #telnet NEW_IP_ADDRESS 6000 (this restarts the moxa) #http://NEW_IP_ADDRESS (check screen shots for settings)
As you can see from the screen shots the default baud rate (1200bps) is used. If you want more speed on your serial wire you can adjust the settings in the moxa screen and flip the switches on the wallboard display so they match eachother. On the other hand 1200 bps is pushing 150 chars per second over the interface while the actual display shows about 20 chars per second. Unless you can convince me to use a higher baud rate I leave the settings to its default.
RS232 cable wiring
Error creating thumbnail: Unable to save thumbnail to destinationError creating thumbnail: Unable to save thumbnail to destinationError creating thumbnail: Unable to save thumbnail to destination
What to say? Check the pica’s and schema.
Protocol reverse engineering using DISPLAY.EXE
Via the Cool Guy I hot my hands on an MS-DOS tool called DISPLAY.EXE. This program was used to convert ASCII strings (text and [CMDS]) to a binary protocol string which could be directly copied using copy filename COM1 to the serial interface. So some ‘magic’ could be expected within the executable.
Reading the binary file as a old fashioned programmer with a lot of i86 debuging experience I looked for the data segment and noticed something that looked like a table. Dumping this table resulted in a set of CMDS and corresponding values. Also I discovered the layout of the protocol (see The Protocol).
So I got a list of commands and values but when I send text to the board it’s not the normal ASCII values which can be used. It must be translated somehow. After testing, testing, testing and testing I succesfully recreated a lookup table which can be used to translate source ASCII to target BINARY data.
Workable source code
The source to sent data to the wallboard is pretty simple but can (and I did) be extended to give more functionality.
<?php $address= “192.168.1.42″; $port= “4001″; if (($socket=socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) and (socket_connect($socket, $address, $port))) { socket_write($socket, chr(2).”text-need-to-be-translated-check-THE-PROTOCOL”.chr(0x7e).chr(3)); socket_close($socket); } else echo “Unable to connect to $address on port $port!\n”; ?>
How about entering a static text or more sophisticated displaying dynamic text scraped from a website.
A fully functional PHP script with interface can be found here
The protocol
Investigations so far are:
PROTOCOL syntax [SOT] characters and commands………… [END][EOT] SOT – 0×02 END – 0x7E EOT – 0×03 128-155 = a-z (130-131 aren’t used?) 156-159 = Jump_t, Reset, Show time, Show Date 160-175 = special chars 176-185 = 0-9 186-192 = special chars 193-218 = A-Z 219-227 = Extended chars (umlaut etc). 225 isn’t used?) 228-255 = Effects
Python implementation prototype
import serial a = "\x02\x80\x80\x7e\x03" port = serial.Serial("/dev/ttyAMA0", baudrate=1200,timeout=1) port.write(a) port.close()
Future enhancements
The MOXA interface is very nice but it would be nicer if it could be replaced by a NSLU2, Raspberry PI (wuth usb2serial) or something similiar.
Power Supplies
We have 2 power supplies, but we have more wallboards. If we want to use more of them we need more power supplies: 9V / 3.5A. See the picture.