将AT命令重定向到Linux下的microcom命令

disho6za  于 2023-10-16  发布在  Linux
关注(0)|答案(3)|浏览(206)

在Linux的BusyBoxcommand中,存在与串行调制解调器通信的命令microcom

BusyBox v1.13.2 (2012-05-10 17:13:08 CEST) multi-call binary

Usage: microcom [-d DELAY] [-t TIMEOUT] [-s SPEED] [-X] TTY

Copy bytes for stdin to TTY and from TTY to stdout

Options:    
        -d  Wait up to DELAY ms for TTY output before sending every next byte to it
        -t  Exit if both stdin and TTY are silent for TIMEOUT ms
        -s  Set serial line to SPEED
        -X  Disable special meaning of NUL and Ctrl-X from stdin

我不想使用stdin来输入AT命令,我想把它们放在一个文本文件中,并将该文件的内容重定向为上述命令的stdin。例如,我有一个文件

/tmp/at.txt

AT命令AT,通常由TTY用OK确认。使用stdin的标准会话如下所示:

microcom -t 3000 -X /dev/ttyS5                                 
at
OK

其中字符串at直接在键盘上输入。为了使用文件/tmp/at.txt的内容(只包含'at\n')。要做到这一点,。我尝试了以下变化:

microcom -t 3000 -X /dev/ttyS5  < /tmp/at.txt   
microcom -t 3000 /dev/ttyS5  < /tmp/at.txt 
cat /tmp/at.txt |  microcom -t 3000 /dev/ttyS5
tail -f  /tmp/at.txt |  microcom -t 3000 /dev/ttyS5
cat /tmp/at.txt |  microcom -t 3000 /dev/ttyS5 -X
tail -f  /tmp/at.txt |  microcom -t 3000 /dev/ttyS5 -X

没有一个成功,也就是说。这些命令都没有在屏幕上返回文本“OK”。因此,我得出结论,将文件/tmp/at.txt的内容重定向为命令microcom的stdin存在一些问题。也许这与如何解释行结束或文件结束有关。如果有人有什么想法,我会感激一些帮助。
谢谢你,
亚历克斯

b4lqfgs4

b4lqfgs41#

您需要以特殊字符**\r结束AT COMMANDS**

echo "AT+CIMI\r" | microcom -t 2000 /dev/ttyS5

用**\n**它不起作用
格雷廷斯

5ssjco0h

5ssjco0h2#

我在SliTaz 4.0下运行BusyBox v1.18.4中的微通信,我复制了这个问题,然后解决了它。如果你要在这个级别上模拟键盘输入,takefile必须在每行之后都有一个完整的CRLF,因为键盘键传输了一个^M(0x 0 D)。大多数ASCII编辑器编写的Linux标准0x 0A是不够的。
有很多方法可以做到这一点,但我只是在每行末尾创建了一个额外的字节,然后使用ncurses-hexedit程序将字节转换为0x 0 D。我测试了上面的命令,得到了一个OK响应,输入来自这样一个文件。
希望这对你有帮助。

db2dz4w8

db2dz4w83#

回波自动测试设备|sudo socat - /dev/ttys5,crnl

相关问题