diff -r 000000000000 -r 51f5a3138405 LPCconnector/LPCProto.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LPCconnector/LPCProto.py Sun May 20 11:29:35 2012 +0200 @@ -0,0 +1,65 @@ +import serial +import exceptions +from threading import Lock +import time + +class LPCProtoError(exceptions.Exception): + """Exception class""" + def __init__(self, msg): + self.msg = msg + + def __str__(self): + return "Exception in PLC protocol : " + str(self.msg) + +class LPCProto: + def __init__(self, port, rate, timeout): + # serialize access lock + self.TransactionLock = Lock() + if BMZ_DBG: + # Debugging serial stuff + self._serialPort = serial.Serial( port, rate, timeout = timeout, writeTimeout = timeout ) + class myser: + def readline(self_): + res = self._serialPort.readline() + print 'Recv :"', res, '"' + return res + + def read(self_,cnt): + res = self._serialPort.read(cnt) + if len(res) > 16: + print "Recv :", map(hex,map(ord,res[:16])), "[...]" + else: + print "Recv :", map(hex,map(ord,res)) + + return res + def write(self_, string): + lstr=len(string) + if lstr > 16: + print "Send :", map(hex,map(ord,string[:16])), "[...]" + else: + print "Send :", map(hex,map(ord,string)) + return self._serialPort.write(string) + # while len(string)>0: + # i = self._serialPort.write(string[:4096]) + # print ".", + # string = string[i:] + # print + #return lstr + def flush(self_): + return self._serialPort.flush() + def close(self_): + self._serialPort.close() + self.serialPort = myser() + else: + # open serial port + self.serialPort = serial.Serial( port, rate, timeout = timeout ) + # start with empty buffer + self.serialPort.flush() + + def __del__(self): + if self.serialPort: + self.serialPort.close() + + def close(self): + self.serialPort.close() + self.serialPort = None