123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- # -*- coding: UTF-8 -*-
- import serial
- import time
- import binascii
- '''
- 描述:串口同步基类
- '''
- class baseSerial():
- # 构造函数
- def __init__(self):
- self.exception = None
- self.ser = serial.Serial()
- # 析构函数(停用);
- # def __del__(self):
- # self.close()
- def open(self, port, baudrate = 115200, bytesize = 8, parity = serial.PARITY_NONE, stopbits = 1, timeout = 2, writeTimeout = 0.5):
- if type(port) == type(0):
- self.ser.port = "COM"+str(port)
- else:
- self.ser.port = port
- # 波特率;
- self.ser.baudrate = baudrate
- # 数据位;
- self.ser.bytesize = bytesize
- # 校验码;
- self.ser.parity = parity # PARITY_NONE=0
- # 停止位;
- self.ser.stopbits = stopbits
- # 串口等待超时值(Read)
- self.ser.timeout = timeout # 读超时;
- # 串口写超时值(Read)
- self.ser.writeTimeout = writeTimeout # 写超时;
- try:
- self.ser.open()
- # 返回结果;
- return self.ser.is_open
- except Exception,e:
- self.exception = e
- print '打开串口异常',str(e)
- return False
-
- # 重新打开;
- def reOpen(self):
- self.exception = None
- self.ser.close()
- try:
- self.ser.open()
- # 返回结果;
- return self.ser.is_open
- except Exception,e:
- self.exception = e
- return False
-
- def close(self):
- self.ser.close()
- '''
- 描述:写串口
- '''
- def write(self, cmd):
- try:
- self.exception = None
- writelen = self.ser.write(cmd)
- # flush等待写入完成;
- self.ser.flush()
- print "writehex:" + binascii.hexlify(cmd) + " writelen=" + str(writelen)
- return True if writelen == len(cmd) else False
- except Exception,e:
- self.exception = e
- print '写串口异常',str(e)
- return False
- '''
- 描述:读取串口数据;
- 返回:返回16进制字符串;
- 补充:ser.in_waiting 实际是缓冲区里的数据长度,也就是要读的长度;
- '''
- def read(self):
- try:
- self.exception = None
- if self.ser.in_waiting == 0:
- time.sleep(self.ser.timeout)
- bys = self.ser.read(self.ser.in_waiting)
- print "readhex:" + binascii.hexlify(bys) + " readlen=" + str(bys.__len__())
- return bys
- except Exception,e:
- self.exception = e
- print '读串口异常',str(e)
- return None
- if __name__ == "__main__":
- pass
-
|