python實戰串列埠助手---4實現串列埠功能
阿新 • • 發佈:2019-01-22
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)
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)