python串口多线程收发
import serial
import threading
class ComClass:
def __init__(self,port,baud):
self.port = port
self.baud = baud
self.comSerial = None
self.run = False
self.open()
if self.run:
self.thread1 = threading.Thread(target=self.receiveData)
self.thread2 = threading.Thread(target=self.sendData)
self.thread1.start()
self.thread2.start()
self.thread1.join()
self.thread2.join()
self.close()
print("程序已退出")
def open(self):
try:
self.comSerial = serial.Serial(self.port,self.baud)
self.run = True
print("打开串口成功")
print("输入 break 退出程序")
except:
print("打开串口失败")
def close(self):
self.comSerial.close()
print("关闭串口")
def sendData(self):
print("发送线程开启...")
while self.run:
send_data = input()
if send_data:
if send_data == "break":
self.run = False
else:
self.comSerial.write(send_data.encode("gbk"))
print('发送数据:%s' % send_data)
print("发送线程结束")
def receiveData(self):
print("接收线程开启...")
while self.run:
receive_data = self.comSerial.read(self.comSerial.inWaiting()).decode("gbk")
if receive_data:
print('接收数据:%s' % receive_data)
if receive_data == "break":
self.run = False
print("接收线程结束")
# 程序入口
a = ComClass('COM2',115000)
# 输入 break 结束线程退出程序

浙公网安备 33010602011771号