Difference between revisions of "Wallboard"

From Randomdata wiki
Jump to: navigation, search
(Power Supplies)
(The protocol)
 
Line 80: Line 80:
 
  228-255 = Effects
 
  228-255 = Effects
 
</pre>
 
</pre>
   
+
 
 +
== Python implementation prototype ==
 +
 
 +
<pre>
 +
import serial
 +
a = "\x02\x80\x80\x7e\x03"
 +
port = serial.Serial("/dev/ttyAMA0", baudrate=1200,timeout=1)
 +
port.write(a)
 +
port.close()
 +
</pre>
 +
 
 
=Future enhancements=
 
=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.
 
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.

Latest revision as of 22:27, 17 September 2013

Wallboard.jpg

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)

Moxa1.pngMoxa2.pngMoxa3.png

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

Wallboard cable1.jpgWallboard cable1.jpgWallboard cable schema.png

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.

Wallboard Powersupply