インターフェースからの出力をリダイレクトしますか?

インターフェースからの出力をリダイレクトしますか?

AT コマンドをモデム インターフェイス ( /dev/ttyUSB3) にエコーしていますが、コマンドは正常に実行されます。

たとえば、以下のコマンドは機能し、出力は次のようになりますOK

echo -e "ATZ\r" > /dev/ttyUSB3

別の端末をアクティブにすることでこれを確認できますcat /dev/ttyUSB3

catモデムから返されたデータを処理できるように、(たとえば、1 つのコマンドを使用してコマンドを送信し、出力を取得する)代わりに、出力を変数またはファイルにリダイレクトするにはどうすればよい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

関連情報