0

我有一个 USB 调制解调器和一个 GSM 卡插入,希望与它通信。我安装了 minicom 和 atinout,并在 minicom 中使用了这个命令:

AT+CUSD=1,"*137#",15 
ERROR

在 atinout 上我也做了:

$ atinout - /dev/ttyUSB3 - < <(echo "AT+CUSD=1,\"*137#\",15")
ERROR

笔记:

  • 使用调制解调器管理器 GUI,USSD 命令和 AT 运行良好
  • 在 atinout 上它几天前可以工作,然后它拒绝工作硬件版本:

    制造商:TCT Mobile International Limited Model: HSPA Data Card Revision: IX1B5400XX

4

1 回答 1

2

如果设备在某些终端仿真器中工作,但在其他终端仿真器中不工作,则终端可能设置不正确(“不正确”的意思是“与连接另一端的设备的配置方式不同”;没有对错之分。)

通常问题是波特率、本地回声或 LF 与 CRLF 线路结束之一。stty您可以使用(或)配置 linux 如何处理 tty 设备setserial

例子:

在这里,我使用atinout通过 UART 与 Telit DE910 “AUX”端口通信。

$ echo 'AT+CREG?' | atinout - /dev/ttyO1 -
AT+CREG?
+CREG: 1,1

OK

到目前为止,一切都很好。但是这个调制解调器支持每个逻辑接口的多个物理接口,并且我的设备逻辑端口“AUX”也可以通过/dev/ttyUSB2. 一般来说,我喜欢使用/dev/ttyUSBn,因为至少可以设置的一些荒谬的选项stty是固定的。atinout但是在这种情况下,即使我们向同一个逻辑端口发出相同的命令,默认值也不够好:

$ echo 'AT+CREG?' | atinout - /dev/ttyUSB2 -
AT+CREG?


+CREG: 1,1



OK

AT+CREG


ERROR

^C

在这种情况下,额外的 CRLF 是赠品,并且通过配置终端来stty raw修复它。(在我的情况下是实际需要-icrnl的唯一部分raw。)

$ stty -F /dev/ttyUSB2 raw
$ echo 'AT+CREG?' | atinout - /dev/ttyUSB2 -
AT+CREG?
+CREG: 1,1

OK

使用的问题stty是您已经为其他人更改了设备。您可以使用 stty 保存初始配置,以便在完成后恢复它。

$ OLDSETTINGS=$(stty -g -F /dev/ttyUSB2)
$ stty -F /dev/ttyUSB2 -igncr -icrnl -ixon -ixoff 
$ stty -F /dev/ttyUSB2 "$OLDSETTINGS"

最后,我建议使用timeoutwithatinout来避免在调制解调器未按atinout预期方式响应时挂起。

$ echo 'AT+CREG?' | timeout -t5 atinout - /dev/ttyUSB2 -
于 2016-05-24T16:23:35.163 回答