【发布时间】:2023-02-17 05:22:28
【问题描述】:
在 PyQt5 中,我想在写入(请求值)后读取我的串口。我已经使用 readyRead.connect(self.readingReady) 让它工作了,但是我仅限于输出到一个文本字段。
请求参数的代码向串口发送一个字符串。之后,我使用 readingReady 函数读取串行端口并将结果打印到 plainTextEdit 表单。
def read_configuration(self):
if self.serial.isOpen():
self.serial.write(f"?request1\n".encode())
self.label_massGainOutput.setText(f"{self.serial.readAll().data().decode()}"[:-2])
self.serial.write(f"?request2\n".encode())
self.serial.readyRead.connect(self.readingReady)
self.serial.write(f"?request3\n".encode())
self.serial.readyRead.connect(self.readingReady)
def readingReady(self):
data = self.serial.readAll()
if len(data) > 0:
self.plainTextEdit_commandOutput.appendPlainText(f"{data.data().decode()}"[:-2])
else: self.serial.flush()
我遇到的问题是,我希望串行端口的每个答案都转到不同的 plainTextEdit 表单。我现在看到的唯一解决方案是为每个请求编写一个单独的 readingReady 函数(我有很多!现在只显示三个)。这必须以更好的方式成为可能。也许在 readingReady 函数中使用参数?或者从我可以重定向到正确形式的函数返回一个值?
在不使用 readyRead 信号的情况下,我所有的值都落后一位。所以第一个请求什么都不打印,第二个请求打印第一个等等,最后一个不打印出来。
有人有更好的方法来实现此功能吗?
【问题讨论】:
标签: python pyqt5 serial-port signals-slots qiodevice