帮我写一个串口工具
时间: 2023-07-20 13:22:55 浏览: 53
好的,下面是一个基于Python和PyQt5的串口工具示例代码:
```python
import sys
import serial
from PyQt5.QtWidgets import QApplication, QMainWindow, QComboBox, QPushButton, QTextBrowser
class SerialTool(QMainWindow):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.setWindowTitle('Serial Tool')
self.setGeometry(100, 100, 400, 400)
self.port_combobox = QComboBox(self)
self.port_combobox.setGeometry(10, 10, 80, 30)
self.refresh_ports()
self.baudrate_combobox = QComboBox(self)
self.baudrate_combobox.setGeometry(100, 10, 80, 30)
self.baudrate_combobox.addItems(['9600', '115200'])
self.connect_button = QPushButton('Connect', self)
self.connect_button.setGeometry(190, 10, 80, 30)
self.connect_button.clicked.connect(self.connect_to_serial)
self.disconnect_button = QPushButton('Disconnect', self)
self.disconnect_button.setGeometry(280, 10, 80, 30)
self.disconnect_button.clicked.connect(self.disconnect_from_serial)
self.disconnect_button.setEnabled(False)
self.serial_port = None
self.text_browser = QTextBrowser(self)
self.text_browser.setGeometry(10, 50, 380, 340)
def refresh_ports(self):
self.port_combobox.clear()
ports = serial.tools.list_ports.comports()
for port in ports:
self.port_combobox.addItem(port.device)
def connect_to_serial(self):
port = self.port_combobox.currentText()
baudrate = int(self.baudrate_combobox.currentText())
try:
self.serial_port = serial.Serial(port=port, baudrate=baudrate)
self.serial_port.flushInput()
self.serial_port.flushOutput()
self.connect_button.setEnabled(False)
self.disconnect_button.setEnabled(True)
self.text_browser.append('Connected to {}'.format(port))
except Exception as e:
self.text_browser.append('Error: {}'.format(str(e)))
def disconnect_from_serial(self):
if self.serial_port:
self.serial_port.close()
self.serial_port = None
self.connect_button.setEnabled(True)
self.disconnect_button.setEnabled(False)
self.text_browser.append('Disconnected')
else:
self.text_browser.append('Not connected')
def closeEvent(self, event):
if self.serial_port:
self.disconnect_from_serial()
event.accept()
if __name__ == '__main__':
app = QApplication(sys.argv)
tool = SerialTool()
tool.show()
sys.exit(app.exec_())
```
这个串口工具界面简单,只有连接和断开连接按钮、串口号和波特率选择框,以及一个文本浏览器用来显示串口数据。你可以根据自己的需要进行定制。