基于python的多线程串口处理实例源码解析
- 使用了线程
- 使用了serial
- 使用了class
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()
基于python的多线程串口处理实例源码解析的更多相关文章
- [Java多线程]-Thread和Runable源码解析之基本方法的运用实例
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...
- Java并发包源码学习系列:基于CAS非阻塞并发队列ConcurrentLinkedQueue源码解析
目录 非阻塞并发队列ConcurrentLinkedQueue概述 结构组成 基本不变式 head的不变式与可变式 tail的不变式与可变式 offer操作 源码解析 图解offer操作 JDK1.6 ...
- .Net Core 认证系统之基于Identity Server4 Token的JwtToken认证源码解析
介绍JwtToken认证之前,必须要掌握.Net Core认证系统的核心原理,如果你还不了解,请参考.Net Core 认证组件源码解析,且必须对jwt有基本的了解,如果不知道,请百度.最重要的是你还 ...
- [Java多线程]-Thread和Runable源码解析
多线程:(百度百科借一波定义) 多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提 ...
- Java并发包源码学习系列:线程池ThreadPoolExecutor源码解析
目录 ThreadPoolExecutor概述 线程池解决的优点 线程池处理流程 创建线程池 重要常量及字段 线程池的五种状态及转换 ThreadPoolExecutor构造参数及参数意义 Work类 ...
- 基于Docker的TensorFlow机器学习框架搭建和实例源码解读
概述:基于Docker的TensorFlow机器学习框架搭建和实例源码解读,TensorFlow作为最火热的机器学习框架之一,Docker是的容器,可以很好的结合起来,为机器学习或者科研人员提供便捷的 ...
- 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...
- JAVA上百实例源码以及开源项目
简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级.中级.高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情.执着,对IT的憧憬. ...
- JAVA上百实例源码网站
JAVA源码包1JAVA源码包2JAVA源码包3JAVA源码包4 JAVA开源包1 JAVA开源包2 JAVA开源包3 JAVA开源包4 JAVA开源包5 JAVA开源包6 JAVA开源包7 JAVA ...
- 45个android实例源码
分享45个android实例源码,很好很强大http://www.apkbus.com/android-20978-1-1.html andriod闹钟源代码http://www.apkbus.com ...
随机推荐
- C# 通过VMI接口获取硬件ID
使用C#语言实现通过VMI(虚拟机监控器)接口来获取硬件ID的过程.VMI是一种用于虚拟化环境的接口,用于管理虚拟机和宿主机之间的通信和资源共享.具体实现中,需要通过添加System.Manageme ...
- 解决github无法进入问题,DNS加速
1.电脑的hosts文件在下面这个地址,找到hosts文件 C:\Windows\System32\Drivers\etc 2.进入文件夹目录etc 找到hosts文件,使用记事本编辑 3.进入这个网 ...
- 有用的工具类(Java)
IP地址获取 public class IPUtil { private static final String UNKNOWN = "unknown"; protected IP ...
- 关于Windows11的优化内容 - 进阶者系列 - 学习者系列文章
这几天无事,想起上次刚重装的Windows 11操作系统,对于系统优化的内容想记录一下,以前没写过相关的博文,这次就做个记录吧.对于Windows 11,已经出来几年了,相关的设置啥的也有,就是优化方 ...
- MySQL-分区表和分区介绍
一.MySQL分区简介 1.数据库分区 MySQL是一种常用的关系型数据库管理系统,分区表是一种在MySQL数据库中处理大规模数据的最佳方案之一,其主要目的是为了在特定的SQL操作中减少数据读写的总量 ...
- Linux--Vi编辑命令(复制、粘贴、删除、查找)
1.复制 1)单行复制 在命令模式下,将光标移动到将要复制的行处,按"yy"进行复制: 2)多行复制 在命令模式下,将光标移动到将要复制的首行处,按"nyy"复 ...
- JS Leetcode 304. 二维区域和检索 - 矩阵不可变,彻底弄懂二维数组前缀和
壹 ❀ 引 我在JS LeetCode 303. 区域和检索 - 数组不可变,一维数组的前缀和一文中,记录了一维数组求区间合的解题思路,正好还有一题的升级版,题目来自leetcode304. 二维区域 ...
- NC50428 数星星 Stars
题目链接 题目 题目描述 天空中有一些星星,这些星星都在不同的位置,每个星星有个坐标.如果一个星星的左下方(包含正左和正下)有k颗星星,就说这颗星星是k级的. 例如,上图中星星5是3级的(1,2,4在 ...
- java 从零开始手写 redis(七)LRU 缓存淘汰策略详解
前言 java从零手写实现redis(一)如何实现固定大小的缓存? java从零手写实现redis(三)redis expire 过期原理 java从零手写实现redis(三)内存数据如何重启不丢失? ...
- 升级 MDK 5.37 后的问题处理: AC6编译选项, printf, 重启失效等
烧录后 Reset And Run 重启失效 存在于 MDK ARM 5.28 之后包括 5.37 的版本. 这些版本即使勾选 Reset And Run, 在烧录后也不会自动重启执行 需要做以下设置 ...