| 28 | |
| 29 | @pyqtSlot() |
| 30 | def on_buttonConnect_clicked(self): |
| 31 | # 打开或关闭串口按钮 |
| 32 | if self._serial.isOpen(): |
| 33 | # 如果串口是打开状态则关闭 |
| 34 | self._serial.close() |
| 35 | self.textBrowser.append('串口已关闭') |
| 36 | self.buttonConnect.setText('打开串口') |
| 37 | self.labelStatus.setProperty('isOn', False) |
| 38 | self.labelStatus.style().polish(self.labelStatus) # 刷新样式 |
| 39 | return |
| 40 | |
| 41 | # 根据配置连接串口 |
| 42 | name = self.comboBoxPort.currentText() |
| 43 | if not name: |
| 44 | QMessageBox.critical(self, '错误', '没有选择串口') |
| 45 | return |
| 46 | port = self._ports[name] |
| 47 | # self._serial.setPort(port) |
| 48 | # 根据名字设置串口(也可以用上面的函数) |
| 49 | self._serial.setPortName(port.systemLocation()) |
| 50 | # 设置波特率 |
| 51 | self._serial.setBaudRate( # 动态获取,类似QSerialPort::Baud9600这样的吧 |
| 52 | getattr(QSerialPort, 'Baud' + self.comboBoxBaud.currentText())) |
| 53 | # 设置校验位 |
| 54 | self._serial.setParity( # QSerialPort::NoParity |
| 55 | getattr(QSerialPort, self.comboBoxParity.currentText() + 'Parity')) |
| 56 | # 设置数据位 |
| 57 | self._serial.setDataBits( # QSerialPort::Data8 |
| 58 | getattr(QSerialPort, 'Data' + self.comboBoxData.currentText())) |
| 59 | # 设置停止位 |
| 60 | self._serial.setStopBits( # QSerialPort::Data8 |
| 61 | getattr(QSerialPort, self.comboBoxStop.currentText())) |
| 62 | |
| 63 | # NoFlowControl 没有流程控制 |
| 64 | # HardwareControl 硬件流程控制(RTS/CTS) |
| 65 | # SoftwareControl 软件流程控制(XON/XOFF) |
| 66 | # UnknownFlowControl 未知控制 |
| 67 | self._serial.setFlowControl(QSerialPort.NoFlowControl) |
| 68 | # 读写方式打开串口 |
| 69 | ok = self._serial.open(QIODevice.ReadWrite) |
| 70 | if ok: |
| 71 | self.textBrowser.append('打开串口成功') |
| 72 | self.buttonConnect.setText('关闭串口') |
| 73 | self.labelStatus.setProperty('isOn', True) |
| 74 | self.labelStatus.style().polish(self.labelStatus) # 刷新样式 |
| 75 | else: |
| 76 | self.textBrowser.append('打开串口失败') |
| 77 | self.buttonConnect.setText('打开串口') |
| 78 | self.labelStatus.setProperty('isOn', False) |
| 79 | self.labelStatus.style().polish(self.labelStatus) # 刷新样式 |
| 80 | |
| 81 | @pyqtSlot() |
| 82 | def on_buttonSend_clicked(self): |