Ausgabe von Schnittstelle umleiten?

Ausgabe von Schnittstelle umleiten?

Ich gebe einen AT-Befehl an eine Modemschnittstelle ( /dev/ttyUSB3) weiter und der Befehl wird erfolgreich ausgeführt.

Beispielsweise funktioniert der folgende Befehl und hat folgende Ausgabe OK:

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

Ich kann dies sehen, indem ich ein anderes Terminal cat /dev/ttyUSB3aktiv habe.

Wie leite ich die Ausgabe in eine Variable oder Datei um, damit ich vom Modem zurückgegebene Daten verarbeiten kann, anstatt sie zu verwenden cat(z. B. einen Befehl zu verwenden, um einen Befehl zu senden und die Ausgabe zurückzuerhalten) ?OK

Antwort1

Sie sollten das serielle Gerät wie eine normale Datei verwenden. Der einzige Unterschied besteht darin, dass einige ioctl()s erforderlich sind, um die Geschwindigkeit und die Steuerleitung einzurichten.

Verwenden Sie also nicht os.system("echo... aber f = open('/dev/ttyUSB3', 'rw')und dann f.write()und f.read().

Theoretisch könnten Sie verwenden, ioctl()um die Geschwindigkeit usw. einzustellen, aber in diesem Stadium ist es einfach einfacher, pySerial zu verwenden, als die gesamte Parameteranordnung selbst durchzuführen. ser = serial.Serial(port='/dev/ttyUSB3', baudrate=9600, timeout=1, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS)mit ser.write()und ser.read().

Beachten Sie, dass Sie udev verwenden sollten, um einen eindeutigen Namen für den seriellen Port festzulegen, anstatt /dev/ttyUSB3 fest zu codieren. So geht das für eineneinzelner USB/RS-232-Adapterund hier erfahren Sie, wie Sie das für einMultiport-USB/RS-232-Adapter.

Antwort2

read modem_output < /dev/ttyUSB3

verwandte Informationen