PyQt串口助手开发教程:打造您的专属串口调试工具

简介

本教程将带领您使用PyQt库从零开始创建一个功能实用的串口助手程序。您将学习如何利用PyQt设计用户界面,使用pyserial库进行串口通信,以及实现数据发送、接收和显示等核心功能。

准备工作

在开始之前,请确保您已安装以下Python库:

  • PyQt5: 用于创建图形用户界面- pyserial: 用于与串口进行通信

您可以使用以下命令安装它们:bashpip install PyQt5 pyserial

代码实现

以下是一个使用PyQt编写的简单串口助手程序示例:pythonimport sysimport serialfrom PyQt5.QtWidgets import QApplication, QWidget, QLabel, QTextEdit, QPushButton, QVBoxLayout, QHBoxLayout, QComboBoxfrom PyQt5.QtCore import QTimer

class SerialAssistant(QWidget): def init(self): super().init() self.setWindowTitle('Serial Assistant') self.setGeometry(100, 100, 400, 300)

    self.lbl_port = QLabel('Port:', self)        self.cmb_port = QComboBox(self)        self.cmb_port.addItems(['COM1', 'COM2', 'COM3'])  # 添加可选串口号

    self.lbl_baudrate = QLabel('Baudrate:', self)        self.cmb_baudrate = QComboBox(self)        self.cmb_baudrate.addItems(['9600', '115200'])  # 添加可选波特率

    self.lbl_received = QLabel('Received:', self)        self.txt_received = QTextEdit(self)        self.txt_received.setReadOnly(True)

    self.lbl_send = QLabel('Send:', self)        self.txt_send = QTextEdit(self)

    self.btn_open = QPushButton('Open', self)        self.btn_open.clicked.connect(self.open_port)

    self.btn_send = QPushButton('Send', self)        self.btn_send.clicked.connect(self.send_data)

    layout = QVBoxLayout()        layout.addLayout(self.create_port_layout())        layout.addLayout(self.create_received_layout())        layout.addLayout(self.create_send_layout())        layout.addWidget(self.btn_open)        layout.addWidget(self.btn_send)

    self.setLayout(layout)

    self.serial_port = None

def create_port_layout(self):        layout = QHBoxLayout()        layout.addWidget(self.lbl_port)        layout.addWidget(self.cmb_port)        layout.addWidget(self.lbl_baudrate)        layout.addWidget(self.cmb_baudrate)        return layout

def create_received_layout(self):        layout = QVBoxLayout()        layout.addWidget(self.lbl_received)        layout.addWidget(self.txt_received)        return layout

def create_send_layout(self):        layout = QVBoxLayout()        layout.addWidget(self.lbl_send)        layout.addWidget(self.txt_send)        return layout

def open_port(self):        try:            port = self.cmb_port.currentText()            baudrate = int(self.cmb_baudrate.currentText())            self.serial_port = serial.Serial(port, baudrate, timeout=1)            print('Port opened successfully')

    except Exception as e:            print('Error opening port:', str(e))

def send_data(self):        try:            if self.serial_port and self.serial_port.isOpen():                data = self.txt_send.toPlainText().encode()                self.serial_port.write(data)                print('Data sent successfully')

    except Exception as e:            print('Error sending data:', str(e))

def receive_data(self):        try:            if self.serial_port and self.serial_port.isOpen():                data = self.serial_port.readline()                if data:                    self.txt_received.append(data.decode())

    except Exception as e:            print('Error receiving data:', str(e))

def closeEvent(self, event):        if self.serial_port and self.serial_port.isOpen():            self.serial_port.close()        event.accept()

if name == 'main': app = QApplication(sys.argv) serial_assistant = SerialAssistant() serial_assistant.show()

timer = QTimer()    timer.timeout.connect(serial_assistant.receive_data)    timer.start(100)  # 每100ms接收一次数据

sys.exit(app.exec_())

代码解析

  1. 导入模块: 首先,我们导入必要的模块,包括sysserialPyQt5.QtWidgetsPyQt5.QtCore

  2. 创建主窗口: SerialAssistant类继承自QWidget,用于创建程序的主窗口。

  3. 初始化界面:__init__方法中,我们初始化了窗口标题、大小以及各个控件,包括串口选择下拉框、波特率选择下拉框、发送和接收文本框、打开串口按钮、发送数据按钮等。

  4. 布局管理: 使用QVBoxLayoutQHBoxLayout对控件进行布局,使其在窗口中合理排列。

  5. 打开串口: open_port方法用于打开选定的串口,并设置波特率。

  6. 发送数据: send_data方法将发送文本框中的数据编码后通过串口发送出去。

  7. 接收数据: receive_data方法利用定时器定时读取串口数据,并将接收到的数据解码后显示在接收文本框中。

  8. 关闭串口: closeEvent方法确保在关闭窗口时关闭已打开的串口。

总结

通过本教程,您学习了如何使用PyQt和pyserial库创建一个简单的串口助手程序。您可以根据自己的需求扩展程序的功能,例如添加更多串口设置选项、实现数据格式化显示等。希望这篇教程能够帮助您入门串口通信编程,并打造出属于您自己的串口调试工具!

PyQt串口助手开发教程:打造您的专属串口调试工具

原文地址: https://www.cveoy.top/t/topic/YlC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录