PyQT 4.7 没有从 QIODevice 继承的允许直接与串口通信的类(例如 QSerialDevice)。因此,我认为使用 QProcess 类并从不同的进程实现对串行端口的实际读/写会更容易,该进程将使用 QProcess 接口与我的主 QT 应用程序接口。
现在的问题是,当我使用下面的代码时,发送和接收的字节数是不一样的。所以我的问题是如何正确地从串口读取二进制数据,然后将所有内容转发到标准输出?
这是我创建 QProcess 的主要 QT 程序的摘录:
self.micromouse_socket = QProcess()
self.micromouse_socket.start("/home/ansis/Source/Perforce-pele/Pele/tools/console/comtalker.py", "")
self.micromouse_socket.started.connect(self.on_micromouse_socket_started)
self.label_8.setText("Starting COM...")
这是将与串口通信的进程(comtalker.py;非阻塞部分尚未完成):
#!/usr/bin/python
import serial
import sys
if __name__ == "__main__":
ser = serial.Serial(0)
while 1 :
x = ser.read(1)
sys.stdout.write(x)
sys.stdout.flush()
PS 这可能是问题出在其他地方,而不是在 PySerial 中。在另一台计算机上,我正在使用此命令“./binary_data_generator > /dev/ttyS0”写入 ttyS0。当我只发送 ASCII 字符(文本+数字)时,相同的代码似乎工作正常