PyQT 4.7没有从QIODevice继承的允许直接与串口通信的类(例如QSerialDevice)。所以我认为使用QProcess类并实现从不同进程实际读取/写入到串行端口将会更容易,该进程将使用QProcess接口与我的主要QT应用程序进行交互。使用PySerial从串口读取二进制数据
现在的问题是,当我使用下面的代码时,发送和接收的字节数量不一样。 所以我的问题是如何正确读取串行端口的二进制数据,然后将所有内容转发到标准输出?
这是我的主要QT程序中摘录创建QProcess中:
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字符(文本+数字)时,相同的代码似乎工作正常
的问题是不是STDOUT(至少目前还没有)。我刚刚证实pyserial给了我更多的字节,而实际上在另一端使用以下命令“./binary_data_gen>/dev/ttyS0”写入了字节。基本上我发送一个大小不变的信息。当消息中的某些字节发生变化时,我将开始在另一端接收更多的字节。 – 2011-04-13 16:55:22