要在 PyQt 中实现串口收发功能,您可以使用 Python 的 serial 库与串口进行通信,并在 PyQt 的界面中集成该库。以下是一个示例代码,演示了如何在 PyQt 中实现串口收发:

import sys
import serial
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QTextEdit, QPushButton, QVBoxLayout, QTimer


class SerialCommunication(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('Serial Communication')
        self.setGeometry(100, 100, 400, 300)

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

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

        self.btn_open = QPushButton('Open Port', 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.addWidget(self.lbl_received)
        layout.addWidget(self.txt_received)
        layout.addWidget(self.lbl_send)
        layout.addWidget(self.txt_send)
        layout.addWidget(self.btn_open)
        layout.addWidget(self.btn_send)

        self.setLayout(layout)

        self.serial_port = None

    def open_port(self):
        try:
            self.serial_port = serial.Serial('COM1', 9600, 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_communication = SerialCommunication()
    serial_communication.show()

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

    sys.exit(app.exec_())

在这个示例中,通过点击'Open Port'按钮打开COM1串口(请根据实际情况更改串口号和波特率)。在Send Data文本框中输入数据,并点击'Send'按钮,程序将尝试将数据发送到串口。

接收到的数据将显示在Received Data文本框中。

请注意,在您的系统上,可能需要安装pyserial库以便与串口进行通信。您可以使用pip install pyserial命令来安装该库。

此示例仅提供了基本的串口收发功能,您可以根据自己的需求进行修改和完善。例如,您可以添加更多的串口设置选项、错误处理逻辑,或者将接收到的数据保存到文件中。

PyQt 串口通信:使用 Python 实现串口收发

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

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