一 概念
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 |
![]() |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2019-05-09 linux下通过命令行把文件拷贝到U盘上
2018-05-09 ubuntu解压rar文件
2018-05-09 OpenCL科普及在ubuntu 16.04 LTS上的安装
2018-05-09 C++ vector 容器浅析
2018-05-09 c++中的.hpp文件
2018-05-09 linux ls统计文件个数