import os import mmap import serial inputMapping = 0 outputMapping = 0 inputFile = file ( "inputs.txt" , "r+" ) size = os.path.getsize ( "inputs.txt" ) outputFile = file ( "outputs.txt" , "r+" ) outSize = os.path.getsize ( "outputs.txt" ) data = mmap.mmap ( inputFile.fileno() , size ) outputData = mmap.mmap ( outputFile.fileno() , outSize ) port = serial.Serial ( "/dev/ttyUSB1" , 9600 , timeout=2 ) print port.portstr port.write ( "!0:ReportInputs." ) char = None serstring = "" serstring = port.readline() while 1: port.write ( "!0:ReportInputs." ) serstring = port.readline() ports = serstring.split ( "," ) PORTA = int ( ports [ 0 ] ) PORTB = int ( ports [ 1 ] ) PORTC = int ( ports [ 2 ] ) PORTD = int ( ports [ 3 ] ) i1 = 0 i2 = 0 i3 = 0 i4 = 0 for i in range ( 0 , 8 ): data [ i + 1 ] = str ( PORTA & 1 ) data [ i + 9 ] = str ( PORTB & 1 ) data [ i + 17 ] = str ( PORTC & 1 ) data [ i + 25 ] = str ( PORTD & 1 ) i1 += int ( outputData [ outputMapping + i + 1 ] ) * pow ( 2 , i ); i2 += int ( outputData [ outputMapping + i + 9 ] ) * pow ( 2 , i ); i3 += int ( outputData [ outputMapping + i + 17 ] ) * pow ( 2 , i ); i4 += int ( outputData [ outputMapping + i + 25 ] ) * pow ( 2 , i ); PORTA >>= 1 PORTB >>= 1 PORTC >>= 1 PORTD >>= 1 outstring = "!0:LEDs " + str ( i1 ) + "," + str ( i2 ) + "," + str ( i3 ) + "," + str ( i4 ) + "." print outstring port.write ( outstring )