用PySerial从串行p读取二进制数据

2024-09-29 02:20:59 发布

您现在位置:Python中文网/ 问答频道 /正文

Pyqt4.7没有从QIODevice继承的类,该类允许直接与串行端口(例如QSerialDevice)进行对话。因此,我认为使用QProcess类并从另一个使用QProcess接口与主QT应用程序接口的进程实现对串行端口的实际读/写会更容易。

现在的问题是,当我使用下面的代码时,发送和接收的字节数是不一样的。所以我的问题是如何正确地从串行端口读取二进制数据,然后将所有数据转发到stdout?

这是我创建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()

可能是问题出在别的地方而不是PySerial。在另一台计算机上,我用这个命令“/binary\u data\u generator>;”dev/ttyS0”写入ttyS0。当我只发送ASCII字符(文本+数字)时,同样的代码似乎工作得很好


Tags: 数据端口代码pyimportselfstdoutsys