通过 bash 脚本发送 AT 命令

Sending AT command through bash script

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

要让这个调制解调器发送东西,我必须向它发送 AT 命令。最好的方法是什么?我应该从我的 bash 脚本中回显 AT 命令吗?或者有什么更好的方法吗?

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

感谢您的宝贵时间!

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

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

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

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

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

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 不在任何存储库中。