该模块为线程对象,具体看代码。使用serial模块,数据接收为超时接收。适当的修改timeout可以变得更加合适于工作上的需要。调用serial的方法,可以在线程运行时修改串口的参数,自行修改这个模块。要很好的使用该模块,自己再了解下import 进来的几个模块。serial模块是需要自己进行安装的。python不自带。其他模块python2.5以上都是自带的。
#!/usr/bin/env python#-*- encoding: gb18030 -*-import threadingimport Queueimport serialimport timeclass ComOpen(threading.Thread): def __init__(self,port=None,baudrate=None,parity=None,bytesize=None,stopbits=None,queue=None): self.comm= serial.Serial() self.queue= queue self.comm.port = port self.comm.baudrate = baudrate self.comm.parity = parity self.comm.bytesize = bytesize self.comm.stopbits = stopbits self.comm.setTimeout(0.5) self.comm.open() self.thread_stop=False self.string='' threading.Thread.__init__(self) def run(self): while not self.thread_stop: try: s=self.comm.read() if len(s)>0: self.string +=s elif len(self.string)>0: self.queue.put(self.string)## print self.string self.string='' else: pass except Exception,data: if data.message=="timed out" and len(self.string)>0: print data self.queue.put(self.string) self.string='' continue elif data.message=="timed out": print data continue else: print data self.stop() def senddate(self,data): if not self.thread_stop: self.comm.write(data) def stop(self): self.thread_stop=True try: self.comm.flush() self.comm.close() except Exception,data: print data