点蓝色字关注我,不定时干货推送。
点开听听,
巷口灯光忽明忽暗,
手中甜咖啡已冷却。
-
自定义波特率
-
集成阿里云三元组一键生成MQTT鉴权参数
-
集成安信可的ESP系列模组 AT指令的 MQTT、TCP、UDP快捷面板
-
支持记录上次用户参数,包括用户全部自定义内容
-
RTS 控 DTR 控
-
Hex 发送和接收
设计规范
设计原理:
API接口
设置回调函数:setCallBack(funtion)
获取可用的端口号集合:get_all_port()
尝试关闭串口:try_off_port(port)
尝试打开串口:try_port_open(port)
设置校验位:set_default_parity(8)
设置停止位:set_default_stopbits(8)
设置数据位:set_default_bytesize(8)
设置默认打开端口:set_default_port(port)
设置默认打开波特率:set_default_baudrate(baud)
代码示范
import sys
from PyQt5 import QtWidgets
from xUart.UartSerial import *
from PyQt5.QtWidgets import QApplication, QMainWindow
from datetime import datetime
def uart_callback_handler(obj):
if obj['code'] == 1:
print('串口异常断开')
else:
buff = (obj['data'])
now_time = datetime.now() # 获取当前时间
new_time = now_time.strftime('[%H:%M:%S]') # 打印需要的信息,依次是年月日,时分秒,注意字母大小写
if False:
out_s = ''
for i in range(0, len(buff)):
out_s = out_s + '{:02X}'.format(buff[i]) + ' '
print(new_time, '收到数据:', out_s)
else:
try:
buff = buff.decode('utf-8', 'ignore')
print(new_time, '收到数据:', buff)
except:
# 乱码显示
pass
def OnClickSend():
buff = "Hell World"
mXUart.send_data(buff.encode('utf-8'))
print("发送成功!!!")
if __name__ == '__main__':
app = QApplication(sys.argv)
MainWindow = QMainWindow()
bt_send = QtWidgets.QPushButton(MainWindow)
bt_send.setText("点击发送")
bt_send.clicked.connect(OnClickSend)
MainWindow.show()
# 初始化mXUart
mXUart = UartSerial()
# 设置串口数据回调函数
mXUart.setCallBack(uart_callback_handler)
# 获取电脑可用的串口
all_ports = mXUart.get_all_port()
print("获取电脑可用的串口:", all_ports)
# 设置通信串口
get_port_array_str = []
for item in all_ports:
get_port_array_str.append(item)
if len(get_port_array_str) == 0:
print("获取电脑没有可用的串口!!!")
else:
# 设置通信串口,入参必须是字符串,比如 COM11
baud = 115200
port = get_port_array_str[0]
str = '打开串口'
# 设置打开串口参数
mXUart.set_default_parity( 'N') # PARITY_NONE, PARITY_EVEN, PARITY_ODD, PARITY_MARK, PARITY_SPACE = 'N', 'E', 'O', 'M', 'S'
mXUart.set_default_stopbits(1) # STOPBITS_ONE, STOPBITS_ONE_POINT_FIVE, STOPBITS_TWO = (1, 1.5, 2)
mXUart.set_default_bytesize(8) # FIVEBITS, SIXBITS, SEVENBITS, EIGHTBITS = (5, 6, 7, 8)
mXUart.set_default_port(port)
mXUart.set_default_baudrate(baud)
if str == '关闭串口':
if mXUart.try_off_port(port, baud):
print("关闭串口成功!!!")
else:
print('错误信息', '串口被占用或已拔开,无法打开')
if str == '打开串口':
if mXUart.try_port_open(port, baud):
print("打开串口成功:", port)
else:
print('错误信息', '串口被占用或已拔开,无法打开')
sys.exit(app.exec_())
日志打印
获取电脑可用的串口: ['COM3', 'COM1', 'COM13']
打开串口成功:COM3
[22:43:52] 收到数据:AT+CWJAP="ai-iot","xuhongyss123456"
[22:43:53] 收到数据:AT+CWJAP="ai-iot","xuhongyss123456"
[22:43:55] 收到数据:AT+CWJAP="ai-iot","xuhongyss123456"
[22:43:56] 收到数据:AT+CWJAP="ai-iot","xuhongyss123456"
[22:43:58] 收到数据:AT+CWJAP="ai-iot","xuhongyss123456"
[22:43:59] 收到数据:AT+CWJAP="ai-iot","xuhongyss123456"
Process finished with exit code 0
原文始发于微信公众号(徐宏blog):开源一款串口调试助手 | 实现MQTT/TCP/UDP一键生成指令等功能