pyqt写串口调试助手
时间: 2023-10-14 16:04:56 浏览: 105
Python Qt 串口调试助手
5星 · 资源好评率100%
PyQt是Python编程语言和Qt应用程序框架的桥梁,Qt是一个跨平台的C++开发框架,可以用于开发GUI应用程序。所以我们可以利用PyQt来开发一个串口调试助手。下面是一个简单的实现示例:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QComboBox, QPushButton, QTextEdit, QLabel
from PyQt5.QtSerialPort import QSerialPort, QSerialPortInfo
class SerialDebug(QWidget):
def __init__(self):
super().__init__()
self.port = QSerialPort()
self.port.setBaudRate(QSerialPort.Baud9600)
self.init_ui()
def init_ui(self):
self.setGeometry(300, 300, 400, 300)
self.setWindowTitle('Serial Debug')
self.port_combo = QComboBox(self)
self.port_combo.setGeometry(10, 10, 100, 30)
self.refresh_port_list()
self.baudrate_combo = QComboBox(self)
self.baudrate_combo.setGeometry(120, 10, 100, 30)
self.baudrate_combo.addItems(['9600', '115200'])
self.open_btn = QPushButton('Open', self)
self.open_btn.setGeometry(230, 10, 60, 30)
self.open_btn.clicked.connect(self.open_port)
self.send_btn = QPushButton('Send', self)
self.send_btn.setGeometry(300, 10, 60, 30)
self.send_btn.clicked.connect(self.send_data)
self.recv_text = QTextEdit(self)
self.recv_text.setGeometry(10, 50, 350, 200)
self.send_text = QTextEdit(self)
self.send_text.setGeometry(10, 260, 350, 30)
def refresh_port_list(self):
self.port_combo.clear()
port_info_list = QSerialPortInfo.availablePorts()
for port_info in port_info_list:
self.port_combo.addItem(port_info.portName())
def open_port(self):
if not self.port.isOpen():
port_name = self.port_combo.currentText()
self.port.setPortName(port_name)
baudrate = int(self.baudrate_combo.currentText())
self.port.setBaudRate(baudrate)
self.port.open(QSerialPort.ReadWrite)
self.port.readyRead.connect(self.recv_data)
self.open_btn.setText('Close')
else:
self.port.close()
self.open_btn.setText('Open')
def send_data(self):
if self.port.isOpen():
data = self.send_text.toPlainText().encode('utf-8')
self.port.write(data)
def recv_data(self):
data = self.port.readAll().data().decode('utf-8')
self.recv_text.insertPlainText(data)
if __name__ == '__main__':
app = QApplication(sys.argv)
win = SerialDebug()
win.show()
sys.exit(app.exec_())
```
这个例子中,我们创建了一个窗口,包含了串口选择、波特率选择、打开/关闭串口等按钮和接收/发送文本框。
在init_ui函数中,我们创建了窗口中的各个控件,并且将打开串口按钮的clicked信号连接到open_port函数,将发送数据按钮的clicked信号连接到send_data函数。在open_port函数中,我们根据选择的串口名和波特率设置串口参数,并且打开串口。如果串口已经打开,则关闭串口。在send_data函数中,我们将发送文本框中的内容转换成UTF-8编码的字节流,并且通过串口发送。在recv_data函数中,我们接收串口数据,并且将其解码后显示在接收文本框中。
通过这个例子,你可以了解如何使用PyQt和PyQtSerialPort模块来开发一个简单的串口调试助手。你可以根据自己的需求,对代码进行修改和扩展。
阅读全文