一 概念
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.这个比较清晰,适合简单的串口处理使用。

基于python的多线程串口处理实例源码解析的更多相关文章

  1. [Java多线程]-Thread和Runable源码解析之基本方法的运用实例

    前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...

  2. Java并发包源码学习系列:基于CAS非阻塞并发队列ConcurrentLinkedQueue源码解析

    目录 非阻塞并发队列ConcurrentLinkedQueue概述 结构组成 基本不变式 head的不变式与可变式 tail的不变式与可变式 offer操作 源码解析 图解offer操作 JDK1.6 ...

  3. .Net Core 认证系统之基于Identity Server4 Token的JwtToken认证源码解析

    介绍JwtToken认证之前,必须要掌握.Net Core认证系统的核心原理,如果你还不了解,请参考.Net Core 认证组件源码解析,且必须对jwt有基本的了解,如果不知道,请百度.最重要的是你还 ...

  4. [Java多线程]-Thread和Runable源码解析

    多线程:(百度百科借一波定义) 多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提 ...

  5. Java并发包源码学习系列:线程池ThreadPoolExecutor源码解析

    目录 ThreadPoolExecutor概述 线程池解决的优点 线程池处理流程 创建线程池 重要常量及字段 线程池的五种状态及转换 ThreadPoolExecutor构造参数及参数意义 Work类 ...

  6. 基于Docker的TensorFlow机器学习框架搭建和实例源码解读

    概述:基于Docker的TensorFlow机器学习框架搭建和实例源码解读,TensorFlow作为最火热的机器学习框架之一,Docker是的容器,可以很好的结合起来,为机器学习或者科研人员提供便捷的 ...

  7. 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例

    前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...

  8. JAVA上百实例源码以及开源项目

    简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级.中级.高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情.执着,对IT的憧憬. ...

  9. JAVA上百实例源码网站

    JAVA源码包1JAVA源码包2JAVA源码包3JAVA源码包4 JAVA开源包1 JAVA开源包2 JAVA开源包3 JAVA开源包4 JAVA开源包5 JAVA开源包6 JAVA开源包7 JAVA ...

  10. 45个android实例源码

    分享45个android实例源码,很好很强大http://www.apkbus.com/android-20978-1-1.html andriod闹钟源代码http://www.apkbus.com ...

随机推荐

  1. 5、后端学习规划:.Net学习 - 学习规划系列文章

    .Net是微软发布的一整套的软件编程解决方案.笔者从大学的时代开始就阅读.netframework的书籍了,但是当时没有进行实践.毕业后,笔者去了微软技术中心的公司上班,所以就接触了.net以及C#编 ...

  2. MySQL-分区表和分区介绍

    一.MySQL分区简介 1.数据库分区 MySQL是一种常用的关系型数据库管理系统,分区表是一种在MySQL数据库中处理大规模数据的最佳方案之一,其主要目的是为了在特定的SQL操作中减少数据读写的总量 ...

  3. 好书推荐之《JAVA编程思想》

    名人推荐 真是一本透着编程思想的书. 上面的书让你从微观角度了解 Java,而这本书则可以让你从一个宏观角度了解 Java. 这本书和 Java 核心技术的厚度差不多,但这本书的信息密度比较大. 所以 ...

  4. qwb2023落荒而逃版

    前言 qwb2023 .12.15 被打废了,N1决赛和qwb,有一个pwn可以做的但是已经在做misc看都不看--无语了. Pyjail ! It's myFILTER !!!|SOLVED|N1n ...

  5. 【LGR-154-Div.4】洛谷入门赛 #15

    [LGR-154-Div.4]洛谷入门赛 #15 \(A\) luoguB3813 [语言月赛 202308]四个人的排名加起来没有小粉兔高 AC 水题. #include<bits/stdc+ ...

  6. JS leetcode 翻转字符串里的单词 题解分析

    壹 ❀ 引 今天来做一道难度中等,但实际难度并不是很高的题目,题目来源leetcode151. 翻转字符串里的单词,题目描述如下: 给定一个字符串,逐个翻转字符串中的每个单词. 示例 1: 输入: & ...

  7. JS leetcode 最大连续1的个数 题解分析

    壹 ❀ 引 今天来做一道十分烦躁的题目,为什么烦躁,因为我字母写错了提交了三次错了三次!!!我的leetcode正确率大大下降!!那么这道题是leetcode的485. 最大连续1的个数,题目描述如下 ...

  8. MyBatis Interceptor

    MyBatis的拦截器可以用于在以下对象及方法中拦截修改: Executor (update, query, flushStatements, commit, rollback, getTransac ...

  9. 关于php redis的geocoding函数

    在php的redis扩展官方github上,文档的最下面的确存在geocoding的函数说明.但是笔者尝试调用geoAdd函数时,返回值一直为false.就纳闷了,是使用的姿势不对,还是存在其它问题? ...

  10. harbor镜像仓搭建相关问题

    1 环境 自己生成了SSL证书 证书目录与 harbor.cfg 文件中定义的路径需要一致 使用的是offline 包安装 执行 install.sh 脚本后,通过浏览器远程访问成功, 但是在别的机器 ...