python开发串口通信界面_python3脚本篇1-串口通讯脚本
前言
本文我们来学习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线程、对象等内容,如果没有接触过这方面的朋友,最好看下网上相关教程,实际项目开发过程中不仅要使用串口接收线程,也要及时有效的对数据进行处理,本文是直接打印接收数据,比较好的方式是串口接收线程接收到数据后放置接收队列中,然后再做其他处理,感兴趣的朋友可自行尝试。
寄语:事在人为,不去做你怎么知道行还是不行。
python开发串口通信界面_python3脚本篇1-串口通讯脚本相关推荐
- 『Python开发实战菜鸟教程』实战篇:爬虫快速入门——统计分析CSDN与博客园博客阅读数据
文章目录 0x01:引子 首先介绍一下网络爬虫是什么,可以用来做什么? 这里简单探讨一下网络爬虫的合法性 正式进入爬虫实战前,需要我们了解下网页结构 HTML CSS JScript 写一个简单的 H ...
- 『Python开发实战菜鸟教程』工具篇:手把手教学使用VSCode开发Python
文章目录: 0X01:引子 Python学习资料及开发工具介绍 0x02:实操 基于 Conda 的 Python 安装 VSCode 的安装使用 安装 插件管理按钮使用介绍 VSCode 如何管理项 ...
- matlab gul介绍及串口通信实现,Matlab - GUl介绍及串口通信实现(转)
新建Blank GUI. 在新建Blank GUI界面中,包含了一般的界面元素,如菜单.按钮.坐标轴.控件等.添加必要的串口通信参数设置按钮. 2 串口数据发送与接收功能实现 2.1 建立串口通信流程 ...
- 串口通信协议和Linux下的串口编程
一.串口通信介绍: 串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节,尽管比按位字节(byte)的并行通信慢,但是串口可以使用一根线发送数据的同时 ...
- HX530系列串口通信高频RFID读写器|读卡器串口调试工具测试读卡操作说明
本文将重点介绍HX530系列串口通信高频RFID读写器|读卡器串口调试工具测试读卡操作说明. 1.打开SDK 中的Demo,使用串口工具,如下图 2.在串口调试工具设置相关参数 2.1.波特率:960 ...
- python开发串口通信界面_python串口编程实例
Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议. Python具有丰富和强大的库.它常被昵称为胶水语言,能够把用其 ...
- Python开发图形可视化界面程序(一)
前言 近来使用Python开发了一些简单的辅助脚本,发现这真的是一门很有趣的语言:于是乎,便想着使用python来开发一些具有图形可视化界面(GUI)的程序,对于python来说,支持其开发GUI可视 ...
- python开发的gui界面,python写gui应用程序
python 编写gui界面有哪些 安装wxPython下面是wxPython特别基础的使用方法,将以一个小程序为例来说明,它的功能是在一个文本框中输入文件名,点击open按钮,会在另一个文本框中显示 ...
- 如何在python开发的GUI界面程序中恰当地使用PyExecJS
点击上方↑↑↑蓝字[协议分析与还原]关注我们 "解决一闪而过的黑框的小技巧." 在使用python开发过程中,不可避免地,会开发带界面的应用,也会经常使用js来完成一些功能,比如, ...
最新文章
- OSChina 周日乱弹 —— 比996更先进的是365工作制
- S210-设置通过X130-Profinet口进行配置
- boost::hana::common用法的测试程序
- spring 注释_Spring核心注释
- Jaeger插件开发及背后的思考
- 一文详解Redis中BigKey、HotKey的发现与处理
- ubuntu1204 dvd 用tweak后界面起不来 swap设置4g足够32位系统软件用
- linux 文件夹换用户组,Linux-用户管理和用户组管理
- IDEA 不愧为神器,结合 Groovy 脚本,简直无敌!
- ORACLE检查点测试,oracle深度解析检查点
- linux限制进程使用的cpu使用率
- 2021白盒测试常用工具介绍【建议收藏】
- 完整安装minidwep-gtk教程
- linux修改文件类型和权限
- css——样式化区块——背景
- 银行会计记账方法的种类
- 硬盘数据恢复方法有哪些?希望这些方法能帮助你
- python k近邻算法_python中的k最近邻居算法示例
- 日志服务与日志分析工具
- fail2ban重启默认清除iptables 取消默认
热门文章
- Scala --- 第三章 数组相关操作
- 如何搭建并使用便携式 4G/LTE 伪基站研究移动安全
- 洛谷 P1055 ISBN号码【字符串+模拟】
- java获得项目绝对路径
- 如何给Centos添加静态地址
- 支持wince 系统的USB wifi 模组推荐
- opengl 大作业_大学新生作业10米长!网友:确认过眼神,是我画不出的十米长卷……...
- vs oracle带参数更新,Oracle vs PostgreSQL Develop(23) - PL(pg)sql(参数声明)
- 《英文计算机术语译名研究》,试定义几个多媒体技术用语
- 按覆盖地理范围的不同计算机网络可分为,按网络覆盖的地理范围进行分类,计算机网络可以分为:...