前言

本文我们来学习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-串口通讯脚本相关推荐

  1. 『Python开发实战菜鸟教程』实战篇:爬虫快速入门——统计分析CSDN与博客园博客阅读数据

    文章目录 0x01:引子 首先介绍一下网络爬虫是什么,可以用来做什么? 这里简单探讨一下网络爬虫的合法性 正式进入爬虫实战前,需要我们了解下网页结构 HTML CSS JScript 写一个简单的 H ...

  2. 『Python开发实战菜鸟教程』工具篇:手把手教学使用VSCode开发Python

    文章目录: 0X01:引子 Python学习资料及开发工具介绍 0x02:实操 基于 Conda 的 Python 安装 VSCode 的安装使用 安装 插件管理按钮使用介绍 VSCode 如何管理项 ...

  3. matlab gul介绍及串口通信实现,Matlab - GUl介绍及串口通信实现(转)

    新建Blank GUI. 在新建Blank GUI界面中,包含了一般的界面元素,如菜单.按钮.坐标轴.控件等.添加必要的串口通信参数设置按钮. 2 串口数据发送与接收功能实现 2.1 建立串口通信流程 ...

  4. 串口通信协议和Linux下的串口编程

    一.串口通信介绍: 串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节,尽管比按位字节(byte)的并行通信慢,但是串口可以使用一根线发送数据的同时 ...

  5. HX530系列串口通信高频RFID读写器|读卡器串口调试工具测试读卡操作说明

    本文将重点介绍HX530系列串口通信高频RFID读写器|读卡器串口调试工具测试读卡操作说明. 1.打开SDK 中的Demo,使用串口工具,如下图 2.在串口调试工具设置相关参数 2.1.波特率:960 ...

  6. python开发串口通信界面_python串口编程实例

    Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议. Python具有丰富和强大的库.它常被昵称为胶水语言,能够把用其 ...

  7. Python开发图形可视化界面程序(一)

    前言 近来使用Python开发了一些简单的辅助脚本,发现这真的是一门很有趣的语言:于是乎,便想着使用python来开发一些具有图形可视化界面(GUI)的程序,对于python来说,支持其开发GUI可视 ...

  8. python开发的gui界面,python写gui应用程序

    python 编写gui界面有哪些 安装wxPython下面是wxPython特别基础的使用方法,将以一个小程序为例来说明,它的功能是在一个文本框中输入文件名,点击open按钮,会在另一个文本框中显示 ...

  9. 如何在python开发的GUI界面程序中恰当地使用PyExecJS

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 "解决一闪而过的黑框的小技巧." 在使用python开发过程中,不可避免地,会开发带界面的应用,也会经常使用js来完成一些功能,比如, ...

最新文章

  1. OSChina 周日乱弹 —— 比996更先进的是365工作制
  2. S210-设置通过X130-Profinet口进行配置
  3. boost::hana::common用法的测试程序
  4. spring 注释_Spring核心注释
  5. Jaeger插件开发及背后的思考
  6. 一文详解Redis中BigKey、HotKey的发现与处理
  7. ubuntu1204 dvd 用tweak后界面起不来 swap设置4g足够32位系统软件用
  8. linux 文件夹换用户组,Linux-用户管理和用户组管理
  9. IDEA 不愧为神器,结合 Groovy 脚本,简直无敌!
  10. ORACLE检查点测试,oracle深度解析检查点
  11. linux限制进程使用的cpu使用率
  12. 2021白盒测试常用工具介绍【建议收藏】
  13. 完整安装minidwep-gtk教程
  14. linux修改文件类型和权限
  15. css——样式化区块——背景
  16. 银行会计记账方法的种类
  17. 硬盘数据恢复方法有哪些?希望这些方法能帮助你
  18. python k近邻算法_python中的k最近邻居算法示例
  19. 日志服务与日志分析工具
  20. fail2ban重启默认清除iptables 取消默认

热门文章

  1. Scala --- 第三章 数组相关操作
  2. 如何搭建并使用便携式 4G/LTE 伪基站研究移动安全
  3. 洛谷 P1055 ISBN号码【字符串+模拟】
  4. java获得项目绝对路径
  5. 如何给Centos添加静态地址
  6. 支持wince 系统的USB wifi 模组推荐
  7. opengl 大作业_大学新生作业10米长!网友:确认过眼神,是我画不出的十米长卷……...
  8. vs oracle带参数更新,Oracle vs PostgreSQL Develop(23) - PL(pg)sql(参数声明)
  9. 《英文计算机术语译名研究》,试定义几个多媒体技术用语
  10. 按覆盖地理范围的不同计算机网络可分为,按网络覆盖的地理范围进行分类,计算机网络可以分为:...