pyserialを使用してシリアルポートを介して2台のコンピューターと通信するアプリケーションを開発しようとしています。
基本的な考え方は、複数のコマンドを双方向に送信することです。
Computer A ---- INI ----> Computer B
Computer A <--- OKINI --- Computer B
Computer A ---- OK -----> Computer B
コンピューター A のコードは次のとおりです。
s = serial.Serial(port='/dev/ttyUSB0', baudrate=19200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=0, rtscts=0)
s.flushOutput()
s.write("*INI,COMPUTER_A*")
s.flushInput()
data = s.read(18)
if data:
print data
s.flushOutput()
s.write("*OK,COMPUTER_A*")
s.close()
コンピューター B のコードは次のとおりです。
s = serial.Serial(port='/dev/ttyUSB0', baudrate=19200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=0, rtscts=0)
s.flushInput()
data = s.read(16)
if data:
print data
s.flushOutput()
s.write("*OKINI,COMPUTER_B*")
s.flushInput()
data2 = s.read(15)
if data2:
print data2
s.close()
両方のコードが正しく動作する場合があります。実行がガベージを出力する場合があります。何が問題なのかわからない。PySerial を使用したシリアル ポートからの送信と書き込みで何が間違っていますか?
シリアルポートでの読み取りと書き込みには、スレッド化されたプログラムを実装して、スレッドをリッスンして読み取り、1 つはリッスン用、もう 1 つは書き込み用に実装する方が良いですか?