2

ZANE:1:00004:XX_X.X_XXXX_000XX:\r\nPythonとのシリアル通信で送信する必要があります。

ここに私のコードがあります:

import serial
ser = serial.Serial('/dev/cu.usbserial-A901HOQC')
ser.baudrate = 57600

msg = 'ZANE:1:00004:XX_X.X_XXXX_000XX:\r\n'

私が書く場合:

>>> ser.write(msg)

答えは33、送信するメッセージのバイト単位の長さです。

どうすれば答えを受け取ることができますか? 接続されたデバイスは、彼がメッセージを受信した直後に応答しますが、私が入力すると

>>> ser.write(msg); ser.readline()

その結果readline、メッセージがまったく表示されなくなります...

何か案は?

4

4 に答える 4

1

以前の回答では、書き込みと読み取りに同じポートを使用していることを理解していなかったと思います。

私は同じ問題を抱えており、スリープ機能を使用して解決しました。基本的:

import serial
from time import sleep
ser = serial.Serial('/dev/cu.usbserial-A901HOQC', timeout=1)
ser.baudrate = 57600

msg = 'ZANE:1:00004:XX_X.X_XXXX_000XX:\r\n'
ser.write(msg)
sleep(0.5)
ser.readline()

したがって、そのスリープで、受信者 (マシン?) に応答を送信する時間を与えています。また、readline を使用する場合は、タイムアウトを追加する必要があることに注意してください。

于 2015-04-15T02:37:36.733 に答える