基于python的 串口数据输出程序(自动重连,快速获取)
Posted Love丶伊卡洛斯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于python的 串口数据输出程序(自动重连,快速获取)相关的知识,希望对你有一定的参考价值。
前言
开发起因:串口调试工具,在串口断开后需要重新选择进行连接,这个过程会耗费一定的时间,而我们的模块上电就开始打印各种日志,导致部分日志丢失。所以就有了这个程序
开发环境: py3.8, VS Code,win10
依赖库: pyserial
功能:指定连接的串口和波特率,接收串口数据(utf8),如果断连,则会按照设置的重连间隔循环连接,直至连上后恢复正常工作。
使用: python com_loop_link.py
源码
com_loop_link.py (写死版)
# 开发起因:串口调试工具,在串口断开后需要重新选择进行连接,这个过程会耗费一定的时间,而我们的模块上电就开始打印各种日志,导致部分日志丢失。所以就有了这个程序
# 开发环境 py3.8
# 依赖库 pyserial
import serial as pyserial
import time
# 连接的串口名
SERIAL_PORT = 'COM17'
# 波特率
SERIAL_BAUDRATE = 115200
# 断开连接后的重连间隔,太短电脑可能会蓝屏,注意!
sleep_time = 1
while True:
try:
ser = pyserial.Serial(SERIAL_PORT, SERIAL_BAUDRATE)
if ser.isOpen():
print("串口已连接")
break
except pyserial.SerialException:
print("串口连接失败,请检查串口是否正确连接")
time.sleep(sleep_time)
while True:
try:
# 忽略无法解码的字节
data = ser.readline().decode('utf-8', 'ignore')
print(data)
# 日志写入本地
with open('log.txt', 'a') as f:
f.write(data)
except pyserial.SerialException:
print("串口断开,正在尝试重新连接", end="")
while True:
try:
ser = pyserial.Serial(SERIAL_PORT, SERIAL_BAUDRATE)
if ser.isOpen():
print("\\n串口已重新连接")
break
except pyserial.SerialException:
print(".", end="", flush=True)
time.sleep(sleep_time)
以上是关于基于python的 串口数据输出程序(自动重连,快速获取)的主要内容,如果未能解决你的问题,请参考以下文章
ESP8266 /ESP32 连接到自己的MQTT服务器并实现自动重连 基于micropython
STM32F103VE基于标准库下DHT11数据串口打印输出
用python编写与mysql数据库连接并实现断线重连的问题