![重定向接口的输出?](https://linux22.com/image/36133/%E9%87%8D%E5%AE%9A%E5%90%91%E6%8E%A5%E5%8F%A3%E7%9A%84%E8%BE%93%E5%87%BA%EF%BC%9F.png)
我正在将 AT 命令回显到调制解调器接口 ( /dev/ttyUSB3
),并且该命令成功运行。
例如,以下命令有效并且输出为OK
:
echo -e "ATZ\r" > /dev/ttyUSB3
我可以通过另一个处于cat /dev/ttyUSB3
活动状态的终端来看到这一点。
如何不使用cat
(例如使用一个命令发送命令并获取输出),而是将输出重定向OK
到变量或文件,以便我可以处理从调制解调器返回的数据?
答案1
您应该像使用普通文件一样使用串行设备。唯一的区别是它需要一些 ioctl() 来进行速度和控制线设置。
所以不要使用os.system("echo
... butf = open('/dev/ttyUSB3', 'rw')
和 thenf.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()
。
请注意,您应该使用 udev 为串行端口设置唯一的名称,而不是硬编码 /dev/ttyUSB3。以下是如何做到这一点单个 USB/RS-232 适配器以下是如何做到这一点多端口 USB/RS-232 适配器。
答案2
read modem_output < /dev/ttyUSB3