在ubuntu上使用USB调制解调器发送AT命令时,我一直收到错误

时间:2016-02-10 15:55:23

标签: ubuntu serial-port at-command stty

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

var formData = new FormData($('form')[0]);

在atinout上我也做了:

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

注释:

  • 使用调制解调器管理器GUI,USSD命令和AT运行良好
  • 并且几天前它曾经工作过,然后它拒绝工作 硬件版本:

    制造商:TCT Mobile International Limited $ atinout - /dev/ttyUSB3 - < <(echo "AT+CUSD=1,\"*137#\",15") ERROR Model: HSPA Data Card

1 个答案:

答案 0 :(得分:0)

如果设备在某些终端仿真器中工作但在其他终端仿真器中不工作,那么终端可能设置不正确(&#34;错误地&#34;含义&#34;与连接另一端的设备不同已配置&#34 ;;没有对错。)

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

示例:

在这里,我使用atinout与Telit DE910&#34; AUX&#34;通过UART端口。

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

OK

到目前为止一切顺利。但是这个调制解调器支持每个逻辑接口的多个物理接口,以及我的设备逻辑端口&#34; AUX&#34;也可以通过/dev/ttyUSB2获取。一般来说,我喜欢使用/dev/ttyUSBn因为at least some of the ridiculous number of options that can be set by stty are fixed。但在这种情况下,即使我们向同一逻辑端口发出相同的命令,默认值也不足以atinout

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


+CREG: 1,1



OK

AT+CREG


ERROR

^C

在这种情况下,额外的CRLF是赠品,并使用stty raw配置终端修复它。 (就我而言,-icrnlraw实际需要的唯一部分。)

$ 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"

最后,我建议将timeoutatinout一起使用,以避免在调制解调器没有按atinout预期的方式做出响应时挂起。

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