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