帮我用python写一个串口助手,需要有图形界面,可以选择串口和比特率
时间: 2024-05-12 09:19:05 浏览: 84
以下是一个基本的串口助手示例,使用PyQt5库编写:
```python
import sys
import serial
from PyQt5.QtWidgets import QApplication, QMainWindow, QComboBox, QPushButton, QTextEdit, QLabel
class SerialAssistant(QMainWindow):
def __init__(self):
super().__init__()
# 初始化串口
self.ser = serial.Serial()
# 设置窗口大小和标题
self.setGeometry(100, 100, 500, 400)
self.setWindowTitle("Serial Assistant")
# 创建标签和下拉框,用于选择串口
self.port_label = QLabel(self)
self.port_label.setText("Port:")
self.port_label.move(50, 50)
self.port_combo = QComboBox(self)
self.port_combo.move(100, 50)
# 列出可用串口
ports = serial.tools.list_ports.comports()
for port in ports:
self.port_combo.addItem(port.device)
# 创建标签和下拉框,用于选择波特率
self.baud_label = QLabel(self)
self.baud_label.setText("Baud rate:")
self.baud_label.move(50, 100)
self.baud_combo = QComboBox(self)
self.baud_combo.move(100, 100)
self.baud_combo.addItem("9600")
self.baud_combo.addItem("19200")
self.baud_combo.addItem("38400")
self.baud_combo.addItem("57600")
self.baud_combo.addItem("115200")
# 创建文本框,用于显示接收和发送的数据
self.log_edit = QTextEdit(self)
self.log_edit.move(50, 150)
self.log_edit.resize(400, 150)
# 创建按钮,用于连接和断开串口
self.connect_button = QPushButton(self)
self.connect_button.setText("Connect")
self.connect_button.move(50, 320)
self.connect_button.clicked.connect(self.connect_port)
self.disconnect_button = QPushButton(self)
self.disconnect_button.setText("Disconnect")
self.disconnect_button.move(150, 320)
self.disconnect_button.clicked.connect(self.disconnect_port)
# 初始化串口设置
self.ser.port = self.port_combo.currentText()
self.ser.baudrate = int(self.baud_combo.currentText())
def connect_port(self):
# 打开串口连接
self.ser.port = self.port_combo.currentText()
self.ser.baudrate = int(self.baud_combo.currentText())
self.ser.open()
self.log_edit.append("Connected to " + self.ser.port + " at " + str(self.ser.baudrate) + " baud")
# 开始接收数据
while self.ser.is_open:
data = self.ser.readline().decode().strip()
self.log_edit.append("Received: " + data)
def disconnect_port(self):
# 关闭串口连接
self.ser.close()
self.log_edit.append("Disconnected from " + self.ser.port)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = SerialAssistant()
window.show()
sys.exit(app.exec_())
```
该代码创建了一个带有下拉框、文本框和按钮的窗口,用于选择串口和波特率、显示接收和发送的数据,并连接和断开串口连接。当连接按钮被点击时,程序将打开串口连接,并开始接收数据。当断开按钮被点击时,程序将关闭串口连接。请注意,此示例仅用于演示目的,实际应用程序需要更多功能和错误处理。
阅读全文