我正在测试一些带USB到串行(RS232)转换器的卫星调制解调器。我已经测试了“连接”,并且可以正常工作。我正在使用minicom,并且能够捕获从一个终端(运行一个响应随机数的bash脚本)发送到另一终端的数据。
要使此调制解调器发送信息,我必须向其发送AT命令。最好的方法是什么?我应该从bash脚本中回显AT命令吗?还是有更好的方法?
#!/bin/bash
while true;
do
number=$RANDOM
echo $number >/dev/ttyUSB0
sleep 4
done
谢谢您的时间!
答案 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可以将转义符适当地转换为回车符和换行符。