一 概念
1.简介
该源码可以让串口收发数据并行处理。
2.特性
-
使用了线程
-
使用了serial
-
使用了class
二 源码解析
1.串口读取固定数据函数:
def uart_recv_header(serial): cnt=0 while True: data=serial.port.read() if data == b'\xff': data_next=serial.port.read() if data_next == b'\xff': cnt += 1 data_lens=serial.port.read(2) data_audio=serial.port.read(2) count=len(data_audio)/2 var=struct.unpack('h'*int(count),data_audio) print(float(var[0]/100))
2.串口发送函数:
def send_data(self,data): n = self.port.write((data+'\n').encode()) return n
3.整体源码:
import serial import struct import threading def uart_recv_header(serial): cnt=0 while True: data=serial.port.read() if data == b'\xff': data_next=serial.port.read() if data_next == b'\xff': cnt += 1 data_lens=serial.port.read(2) data_audio=serial.port.read(2) count=len(data_audio)/2 var=struct.unpack('h'*int(count),data_audio) print(float(var[0]/100)) class SerialPort: def __init__(self,port,brate): super(SerialPort,self).__init__() self.port = serial.Serial(port,brate) self.port.close() if not self.port.isOpen(): self.port.open() def port_open(self): if not self.port.isOpen(): self.port.open() def port_close(self): self.port.close() def send_data(self,data): n = self.port.write((data+'\n').encode()) return n def read_data(self): # switch your send data func uart_recv_header(self) port ='/dev/ttyUSB1' brate = 115200 if __name__ == '__main__': mSerial = SerialPort(port,brate) thread1 = threading.Thread(target=mSerial.read_data) thread1.start()
三 总结
1.这个比较清晰,适合简单的串口处理使用。
作者:虚生 出处:https://www.cnblogs.com/dylancao/ 以音频和传感器算法为核心的智能可穿戴产品解决方案提供商 ,提供可穿戴智能软硬件解决方案的设计,开发和咨询服务。 勾搭热线:邮箱:1173496664@qq.com weixin:18019245820 市场技术对接群:347609188 |