PyQt 串口通信:使用 Python 实现串口收发
要在 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命令来安装该库。
此示例仅提供了基本的串口收发功能,您可以根据自己的需求进行修改和完善。例如,您可以添加更多的串口设置选项、错误处理逻辑,或者将接收到的数据保存到文件中。
原文地址: https://www.cveoy.top/t/topic/bZc2 著作权归作者所有。请勿转载和采集!