快捷搜索:  汽车  科技

python发串口命令(python3脚本篇1-串口通讯脚本)

python发串口命令(python3脚本篇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

前言

本文我们来学习python软件包pySerial的使用,硬件采用wemos D1开发板,直接烧录串口章节代码即可,本文主要编写PC端Python脚本,完成脚本和外接串口设备通讯的功能。

一、基础知识

1.pyserial简介:

pyserial模块是python和串口设备通讯的package,串口是计算机上比较通用的通讯协议,串口设备通过USB插入电脑,python通过pyserial模块就可以完成和串口设备的通讯,其主要函数说明如下:

python发串口命令(python3脚本篇1-串口通讯脚本)(1)

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. 硬件连接

python发串口命令(python3脚本篇1-串口通讯脚本)(2)

注意wemos D1中需要编译烧录“wemos D1 arduino物联网开发板应用笔记2-串口通信”章节中代码,其实先功能是当串口收到数据后,原路返回。

2. 运行python脚本

进入run.py根目录,终端(本文用VS Code下终端,也可在CMD命令窗口执行)输入python3 run.py即可运行程序,界面如下:

python发串口命令(python3脚本篇1-串口通讯脚本)(3)

手动输入hello world,wemos收到数据后会立刻返回。

python发串口命令(python3脚本篇1-串口通讯脚本)(4)

手动输入“quit”,退出主线程,此时守护线程也会退出。

python发串口命令(python3脚本篇1-串口通讯脚本)(5)

四、结语

本节完,实际操作过程中需要注意的地方有如下几点:

(1) python相关

本文使用到了python线程、对象等内容,如果没有接触过这方面的朋友,最好看下网上相关教程,实际项目开发过程中不仅要使用串口接收线程,也要及时有效的对数据进行处理,本文是直接打印接收数据,比较好的方式是串口接收线程接收到数据后放置接收队列中,然后再做其他处理,感兴趣的朋友可自行尝试。

作者:小驿

寄语:事在人为,不去做你怎么知道行还是不行。

猜您喜欢: