import os import mmap import serial import time import string def relayMessage ( data ): global port message = chr ( 1 ) message += "D" message += "000" message += chr ( 2 ) message += data message += chr ( 23 ) message += chr ( 3 ) for i in range ( len ( message ) ): port.write ( message [ i ] ) time.sleep ( 0.001 ) port.flush() def buildMessage ( data ): global outputMapping global oldMessage message = "" for i in range ( outputMapping , outputMapping + 80 , 4 ): block = data [ i : i + 4 ] if block == "0000": message += "0" elif block == "1000": message += "1" elif block == "0100": message += "2" elif block == "1100": message += "3" elif block == "0010": message += "4" elif block == "1010": message += "5" elif block == "0110": message += "6" elif block == "1110": message += "7" elif block == "0001": message += "8" elif block == "1001": message += "9" elif block == "0101": message += ":" elif block == "1101": message += ";" elif block == "0011": message += "<" elif block == "1011": message += "=" elif block == "0111": message += ">" elif block == "1111": message += "?" message += "????" if oldMessage != message: relayMessage ( message ) oldMessage = message oldMessage = "" outputMapping = 1 outputFile = file ( "outputs.txt" , "r+" ) outSize = os.path.getsize ( "outputs.txt" ) outputData = mmap.mmap ( outputFile.fileno() , outSize ) port = serial.Serial ( "/dev/ttyS0" , 19200 , timeout=2 , parity=serial.PARITY_EVEN ) print port.portstr while 1: buildMessage ( outputData ) time.sleep ( 0.05 )