Python 官方文档:入门教程 => 点击学习
目录一、背景1.1、开发流程图二、前提2.1、关于环境2.2、关于源码三、步骤3.1、使用pyQt创建一个.ui界面并生成.py文件3.2、创建两个.py文件,一个用来继承ui界面生
串口助手是串口通信使用的工具。为整合知识,打算做个串口助手。
如下图1:
图1
操作系统:win 10
编辑器:PyCharm edu
语言及版本:python 3.8
使用的库:pyqt5、sys、time等等库
实现思路:需要实现什么功能就做什么功能,最后把功能整合在一起
前提:在pycharm 中配置好pyqt及其工具
最终实现的功能:串口选择、串口状态显示、发送数据、定时发送发送区数据(定时时间可修改)、接收数据、数据显示(ASCII)、数据显示自动换行、数据显示显示时间、清除接收区
源码比较多,需要源码借鉴的评论区留言,私聊我,进行源码分享。
如下图2:
图2
如下图3:
图3
def open_port(port_name, baudrate, bytesize, stop_bit, parity):
ser = serial.Serial(
port = port_name,
baudrate=baudrate,
bytesize=bytesize,
stopbits=stop_bit,
parity=parity,
rtscts=False,
xonxoff=False,
timeout=None,
write_timeout=None
)
return ser
def close_port(self):
if self.current_port is not None:
self.time.stop()
self.serial_thread.ser = None
self.current_port.close()
self.current_port = None
self.ui.port_status.setText("closed")
self.ui.open_port.setDisabled(False)
self.ui.send_data.setDisabled(True)
self.ui.close_port.setDisabled(True)
import serial
import serial.tools.list_ports
def serial_port():
port_list = []
portlist = list(serial.tools.list_ports.comports())
for port in portlist:
port_list.append(port.device)
return port_list
def send_data(self):
if self.ui.send_select.isChecked():
timer = self.ui.send_time.value()
self.time.start(timer)
else:
self.time.stop()
data = self.ui.input_data.toPlainText()
print("这是发送的数据:"+data)
self.current_port.write(data.encode('gbk'))
class SerialThread(QThread):
data_arrive_signal = pyqtSignal()
def __init__(self, ser=None):
super().__init__()
self.ser = ser
self.data = ''
def run(self):
while True:
if self.ser and self.ser.in_waiting:
self.data += self.ser.read_all().decode('gbk')
print(self.data)
self.data_arrive_signal.emit()
def show_data(self):
self.recive_data = self.serial_thread.data
self.zdhh_data += self.recive_data
now_time = datetime.datetime.now()
if self.ui.zdhh.isChecked():
self.zdhh_data += '\n'
self.ui.show_ser_data.setText(self.zdhh_data)
print("这里是显示的数据:"+self.zdhh_data)
if self.ui.show_time.isChecked():
print(self.ui.show_time.isChecked())
time_data = str(now_time) + self.zdhh_data
print(time_data)
self.ui.show_ser_data.setText(time_data)
if self.ui.zdhh.isChecked() and self.ui.show_time.isChecked():
self.zdhh_data += '\n'
time_data = str(now_time) + self.zdhh_data
self.ui.show_ser_data.setText(time_data)
else:
self.ui.show_ser_data.setText(self.recive_data)
print("这里是显示的数据:"+self.recive_data)
如下图4:
图4
如下图5:
图5
如下图6:
图6
如下图7:
图7
如下图8:
两个串口的RXD和TXD需要互接,进行数据的互传,在测试时这样使用比用单片机发数据更快。
同图6、7:
同图6、7:
解决办法:点这里
下载pyinstaller,在cmd命令行出现报错,会有提示建议,输入提示建议的命令即可。
到此这篇关于Python + pyqt5制作一个串口助手的文章就介绍到这了,更多相关python 串口助手内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: python + pyqt5制作一个串口助手
本文链接: https://lsjlt.com/news/203038.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0