1

2 行の ASCII テキストをデバイスに送信しようとしていますが、デバイスはこれらの 2 行を 1 行追加されたものとして読み取ります。遅延の問題ですか、それとも終了文字が間違っていますか? 私は本当に問題が見えないようです。

import serial
ser = serial.Serial('/dev/cu.usbserial-FTVFV0X7', 19200, timeout=10)
ser.write("x0")
ser.flush()
ser.write("11")
ser.flush()

エンド デバイスは、およびx011の代わりにこれを受け取ります。x011

通常の端末プログラムからテストすると、2 つの行を別々に受信することに問題はありません。

4

1 に答える 1

0

多くのハードウェア シリアル デバイスは、キャリッジ リターンを使用して、行または命令の終わりを知らせます。通信しようとしているデバイス(またはそれが期待するプロトコル)を知らなくても、おそらく試してみることをお勧めします

ser.write("x0\r")
ser.flush()
ser.write("11\r")

ドキュメントに示されているように、pySerial は EOL パラメータをサポートしなくreadline()なったため、デバイスが応答を返している場合 (および\r終了した回線でそうしている場合) は、アドバイスどおりに行いio.TextIOWrapper、適切なタイムアウトを使用して受信データも解析する必要があります。 .

于 2013-02-27T14:20:00.753 に答える