通过bash脚本发送AT命令

时间:2019-03-29 18:03:23

标签: serial-port at-command tty

我正在测试一些带USB到串行(RS232)转换器的卫星调制解调器。我已经测试了“连接”,并且可以正常工作。我正在使用minicom,并且能够捕获从一个终端(运行一个响应随机数的bash脚本)发送到另一终端的数据。

要使此调制解调器发送信息,我必须向其发送AT命令。最好的方法是什么?我应该从bash脚本中回显AT命令吗?还是有更好的方法?

#!/bin/bash
while true;
  do 
    number=$RANDOM
    echo $number >/dev/ttyUSB0
    sleep 4     
  done

谢谢您的时间!

2 个答案:

答案 0 :(得分:1)

我从这里得到了一个有效的答案:

https://unix.stackexchange.com/questions/97242/how-to-send-at-commands-to-a-modem-in-linux

首先使用 socat。

echo "AT" | socat - /dev/ttyUSB2,crnl

效果很好。

然后我用了 atinout

echo AT | atinout - /dev/ttyACM0 -

最终我选择了 socat,因为 atinout 不在任何存储库中。

答案 1 :(得分:0)

由于您正在使用调制解调器进行通信,因此与调制解调器进行通信的一般方法是使用ModemManager,该应用程序可以为您处理与调制解调器的通信。

如果由于某种原因无法使用ModemManager或必须使用bash,请注意,命令必须以\r\n结尾才能被调制解调器使用。我发现最好的方法是使用/bin/echo,如下所示:

/bin/echo -n -e "AT\r\n" > /dev/ttyUSB0

这可以确保echo可以将转义符适当地转换为回车符和换行符。