PyQT 4.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()
PS問題はPySerialではなく別の場所にある可能性があります。もう一方のコンピューターでは、このコマンド「./binary_data_generator> / dev/ttyS0」を使用してttyS0に書き込んでいます。ASCII文字(テキスト+数字)のみを送信した場合、同じコードが正常に機能しているように見えました