在研究别人的代码和资料后,进行了深入的学习后,整理了一版串口的操作代码,
功能包括启动,停止,读,和写,目前还没有加到界面上,下一步,大家不要着急,也不要催我,我会慢慢搞定的哦。
废话不说了,先给大家代码,欢迎大家的批评和指正,当然是参考了前人的作品改动的,请高手见谅啊,我的目的也是学习和带动大家学习,不是想要什么回报的。
- import sys
- import threading
- import time
- import serial
- import binascii
- import logging
- class serDeal(object):
- def __init__(self, Port="COM4", BaudRate="9600", ByteSize="8", Parity="N", Stopbits="1", timeout=None, xonxoff=0, rtscts=0):
- self.serSer = None
- self.alive = False
- self.port = Port
- self.baudrate = BaudRate
- self.bytesize = ByteSize
- self.parity = Parity
- self.stopbits = Stopbits
- self.thresholdValue = 64
- self.receive_data = ""
- def start(self):
- self.serSer = serial.Serial()
- self.serSer.port = self.port
- self.serSer.baudrate = self.baudrate
- self.serSer.bytesize = int(self.bytesize)
- self.serSer.parity = self.parity
- self.serSer.stopbits = int(self.stopbits)
- self.serSer.timeout = 2
-
- try:
- self.serSer.open()
- if self.serSer.isOpen():
- self.alive = True
- except Exception as e:
- self.alive = False
- logging.error(e)
- def stop(self):
- self.alive = False
- if self.serSer.isOpen():
- self.serSer.close()
- def read(self):
- while self.alive:
- try:
- number = self.serSer.inWaiting()
- if number:
- self.receive_data += self.serSer.read(number).replace(binascii.unhexlify("00"), "")
- if self.thresholdValue <= len(self.receive_data):
- self.receive_data = ""
- except Exception as e:
- logging.error(e)
- def write(self, data, isHex=False):
- if self.alive:
- if self.serSer.isOpen():
- if isHex:
- # data = data.replace(" ", "").replace("\n", "")
- data = binascii.unhexlify(data)
- self.serSer.write(data)
水平有限,也是刚学习python不久,大家多指点,谢谢!
发稿与2018年1月19日
此内容由EEWORLD论坛网友star_66666原创,如需转载或用于商业用途需征得作者同意并注明出处