ATコマンドをモデムインターフェイス(/dev/ttyUSB3
)にエコーしており、コマンドは正常に実行されます。
たとえば、次のコマンドが機能し、出力は次のようになりますOK
。
echo -e "ATZ\r" > /dev/ttyUSB3
cat /dev/ttyUSB3
他のアクティブな端末でこれを見ることができます。
モデムから戻るデータを処理するためにどのように使用せずにcat
(たとえば、コマンドを送信して出力を取得するために使用する)、出力を変数またはファイルにリダイレクトできますか?OK
答え1
通常のファイルと同様に、シリアルデバイスを使用する必要があります。唯一の違いは、速度と制御線の設定にいくつかのioctl()が必要であることです。
os.system("echo
だから...を使用しないでください。しかし、f = open('/dev/ttyUSB3', 'rw')
そしてそしてf.write()
そしてf.read()
。
理論的にはこれを使用ioctl()
して速度などを設定できますが、その段階ではすべてのパラメータを直接マーシャリングするよりもpySerialを使用する方が簡単です。ser = serial.Serial(port='/dev/ttyUSB3', baudrate=9600, timeout=1, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS)
そしてser.write()
そしてser.read()
。
シリアルポートの識別名を設定するには、/dev/ttyUSB3をハードコーディングする代わりにudevを使用する必要があります。実行方法は次のとおりです。シングルUSB/RS-232アダプタ実行方法は次のとおりです。マルチポートUSB/RS-232アダプタ。
答え2
read modem_output < /dev/ttyUSB3