python3脚本篇1-串口通讯脚本(python做串口通讯)
off999 2024-10-11 14:04 36 浏览 0 评论
前言
本文我们来学习Python软件包pyserial的使用,硬件采用wemos D1开发板,直接烧录串口章节代码即可,本文主要编写PC端Python脚本,完成脚本和外接串口设备通讯的功能。
一、基础知识
1.pyserial简介:
pyserial模块是python和串口设备通讯的package,串口是计算机上比较通用的通讯协议,串口设备通过USB插入电脑,python通过pyserial模块就可以完成和串口设备的通讯,其主要函数说明如下:
2 安装pyserial
pip3 install pyserial二、示例
1.程序
# encoding=utf-8
import serial
import threading
import datetime
import queue
from time import sleep
class Uart(object):
def __init__(self, port):
self.err = 0
self.run_status = 0
try:
self.uart = serial.Serial(port, 9600)
self.run_status = 1
print("start uart success")
except:
print("start uart error")
self.err = -1
def uart_recv_thread(self):
print("start uart_recv_thread")
while True:
try:
data = self.uart.readline()
data = "[uart==>pc] " + data.decode()
print(data)
sleep(0.05)
except Exception as e:
print("Error")
print(e)
def run(self):
threading.Thread(target=self.uart_recv_thread, daemon=True).start()
def close(self):
print("close uart")
self.uart.close()
def uart_send_data(self, data):
print("pc==>uart: ", data)
self.uart.write(data.encode())
if __name__ == "__main__":
uart = Uart("COM13")
if(-1 != uart.err):
uart.run()
while(True):
input_data = input("Please input:\r\n")
if ("quit" == input_data):
uart.close()
break
else:
uart.uart_send_data(input_data)
sleep(0.1)
print("exit uart")程序中定义了一个Uart类,构造函数中实现打开串口设备功能,如果打开失败,Uart.err = -1,初始化对象后,调用Uart.run()即可开启接收线程,注意创建线程函数中daemon=True,表示设置接收线程为守护线程,当主线程退出后,该守护线程也退出,否则将成为僵尸线程一直存在。主线程中处理逻辑比较简单,当用户输入数据不是“quit”时候,直接发送给串口设备,否则关闭串口,退出主线程。
三、运行
1. 硬件连接
注意wemos D1中需要编译烧录“wemos D1 arduino物联网开发板应用笔记2-串口通信”章节中代码,其实先功能是当串口收到数据后,原路返回。
2. 运行python脚本
进入run.py根目录,终端(本文用VS Code下终端,也可在CMD命令窗口执行)输入python3 run.py即可运行程序,界面如下:
手动输入hello world,wemos收到数据后会立刻返回。
手动输入“quit”,退出主线程,此时守护线程也会退出。
四、结语
本节完,实际操作过程中需要注意的地方有如下几点:
(1) python相关
本文使用到了python线程、对象等内容,如果没有接触过这方面的朋友,最好看下网上相关教程,实际项目开发过程中不仅要使用串口接收线程,也要及时有效的对数据进行处理,本文是直接打印接收数据,比较好的方式是串口接收线程接收到数据后放置接收队列中,然后再做其他处理,感兴趣的朋友可自行尝试。
作者:小驿
寄语:事在人为,不去做你怎么知道行还是不行。
相关推荐
- hotmail电子邮箱登录(hotmail邮箱在线登录)
-
***@hotmail.com1、其中***是你自己申请的邮箱的用户名。2、hotmail要写在符号@后面。3、最后加上.com,这样就是一个完整的hotmail邮箱的格式。4、比如:zhangj...
- win10iso文件(win10iso文件怎么安装)
-
安装Win10ISO系统文件需要以下步骤:1.首先需要从Microsoft官网下载Win10ISO系统文件,打开网站后选择Win10的版本、语言和架构(32位或64位),点击下载即可。2.下载...
- 英特尔显卡性能排行(英特尔显卡性能排行天梯图)
-
IRIS(英特尔第四/五代集成显卡)英特尔第四代集成显卡,分为HD4200/4400/4600,HD5100/5200。代号为GT2/3/3e,中文名为锐炬。hd420044004600和台式...
- 电脑做系统u盘启动选项(做系统开机u盘怎么选择)
-
操作须知:1、设置U盘启动分很多种:传统legacy机型设置、uefi新机型设置、uefi机型改legacy启动设置2、由于电脑品牌以及机型非常多,这边仅列举一部分电脑的设置方法,3、如果是uefi机...
- 未安装nvidia控制面板(电脑未安装nvidia控制面板)
-
如果你使用的是Nvidia显卡,但未安装Nvidia控制面板,则可能会遇到以下问题:1.无法进行高级显卡设置:Nvidia控制面板提供了高级显卡设置选项,例如显卡超频、显示器分辨率和刷新率、视频调整...
- u盘检测不到怎么修复(u盘检查不了是什么原因)
-
以下是可能的解决办法:1.更换不同的USB端口。有时候电脑某个USB端口可能出现问题,试试换一个不同的端口。2.重启电脑。有时候出现问题的USB端口可能需要重启才能正常。3.插拔几次U盘。有时候...
- win7 共享设置(win7共享设置详细步骤)
-
1.进入控制面板家庭组页打开控制面板找到网络和Internet下面的家庭组和共享选项并打开?2.进入更改高级共享设置打开以后选择更改高级共享设置功能进入?3.开启文件和打印机共享开启文件和打印机共享,...
- 电脑硬盘怎么装步骤图(电脑硬盘怎么装步骤图片)
-
1、查看硬盘的各项信息。硬盘的背面会有硬盘的存储容量以及电压,功率,转速等基本信息。2、购买到的一整块硬盘里面包括硬盘、对接线跟螺丝钉。将对接线和螺丝钉摆在一旁。3、在硬盘的上方会有两个SATA接口,...
- 小马win10永久激活(小马win10永久激活工具使用方法)
-
很简单,重装系统win7,这个可以激活的,然后根据推送升级win10,如果有强迫症可以升级以后重新安装win10系统,以后都是自动联网激活的。安全。小马激活工具win10版是小马专门为windowns...
- win10开机欢迎时间太长(开机欢迎界面时间长)
-
win10第一个就是你系统里的垃圾太多,如果系统垃圾太多,直接清理垃圾就可以解决这个问题,第二个就是你的开机启动项过多,如果开机启动项过多,直接关闭不必要的开机启动项就可以缩短开机时间,就可以解决你...
- 登录126邮箱入口(登录126邮箱入口官网)
-
126邮箱是网易的一个免费邮箱登录入口在浏览器输入:mail.126.com浏览器进入126邮箱网站之后,即可自行登录126邮箱账号。如何在手机上登录126邮箱1、打开手机,找到并打开网易邮箱软件。2...
- 如何让防火墙允许某个软件(如何允许防火墙阻止访问)
-
1.打开电脑的开始菜单,找到控制面板选项,并点击打开。2.在打开的控制面板中,找到防火墙选项,并点击打开。3.在打开的防火墙界面中,单击左侧的允许程序通过防火墙选项。4.在跳转的界面中,选择允许通过防...
-
- 智慧工厂管理系统(智慧工厂管理系统哪家好)
-
智慧工厂智能化系统整体的解决方案分为三个主要部分,分别是现场控制系统(FDC)、生产数据管理系统(PDM)以及工厂数字化协同平台(LCT)。其中,现场控制系统(FDC)是智慧工厂系统非常重要的核心组成部分,它是一个支持大规模互联的集群控制系...
-
2025-11-13 22:03 off999
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
慕ke 前端工程师2024「完整」
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
