1

同じシリアルポートから読み書きしています。問題は次のとおりです。

以下のコードのように、シリアルポートに次々と書き込むと:

import serial
import array


rec = serial.Serial()
trans = serial.Serial()

rec.port = "/dev/ttyUSB0"
rec.baudrate = 9600
rec.timeout = 0.5
rec.open()

trans.port = "/dev/ttyUSB0"
trans.baudrate = 9600
trans.timeout = 0.5
trans.open()


if trans.isOpen():
   trans.write("\xFE\x1D\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE2")    
   trans.write("\xFE\x1D\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE3")

while rec.isOpen():

response = rec.readline()


etc. etc. etc

while ループが回っている限り、最初に送信された文字列だけを読み続けます。また、while ループの直後にデータを送信しようとしました: (if ステートメントは削除しませんでした)

while rec.isOpen():
    trans.write("\x00\x00")
    response = rec.readline()

シリアルポートから読み取ったのは、まだ
「\xFE\x1D\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\」です。 xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE2"

最初のデータ以外は送信できません。なぜそれが起こっているのですか?私は何をすべきか?

注: また、while ループで 2 回読み取ろうとしました: response = rec.readline() response = rec.readline()

今回、読み取った配列を出力すると [] が出力され、何も読み取れないことを意味します。よろしく

編集: 2 つの異なる USB ポート ttyUSB0 と ttyUSB1 を使用して、問題がその状況に関連しているかどうかを確認しました。しかし、同じポートからの書き込みと読み取りに問題はないようです。

4

2 に答える 2

0

問題は、ポートの構成ミスである可能性があります。適切な値を設定する必要があります

ser = serial.Serial(
    port='/dev/ttyUSB0',
    baudrate=9600,
    parity=???,
    stopbits=???,
    bytesize=???)
于 2012-06-28T10:13:34.533 に答える
0

改行が表示されなかったので、rec.read(bytes) で試すか、\0d\0a などで行を終了する必要があります。

http://pyserial.sourceforge.net/shortintro.html#readlineを参照してください

于 2012-06-28T12:41:56.343 に答える