我正在將 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