【问题标题】:Redirecting AT commands to microcom command under LinuxLinux下将AT命令重定向到microcom命令
【发布时间】:2012-08-28 14:17:17
【问题描述】:

BusyBoxcommand for Linux 中存在命令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

我不想使用标准输入键入 AT 命令,而是将它们放入一个文本文件中,并将该文件的内容重定向为上述命令的标准输入。比如我有一个文件

/tmp/at.txt

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

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 的标准输入存在一些问题。也许与如何解释行尾或文件结尾有关。如果有人有一些想法,我将不胜感激。

谢谢,

亚历克斯

【问题讨论】:

    标签: linux redirect pipe stdin tty


    【解决方案1】:

    您需要以特殊字符 \r

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

    使用 \n 不起作用

    问候

    【讨论】:

    • 如果你在busybox旁边使用真正的shell,比如bash,不要忘记指定-e和-n标志来回显:echo -ne "AT+CSQ\r\n" | microcom -X -t 1000 /dev/modem_at1
    【解决方案2】:

    我在 SliTaz 4.0 下的 BusyBox v1.18.4 中运行 microcom,我复制了这个问题,然后解决了它。如果您要在此级别模拟键盘输入,则 takefile 必须在每一行之后都有一个完整的 CRLF,因为键盘键传输一个 ^M (0x0D)。大多数 ASCII 编辑器编写的 Linux 标准 0x0A 是不够的。

    有很多方法可以做到这一点,但我只是在每行末尾创建了一个额外的字节,然后使用 ncurses-hexedit 程序将字节转换为 0x0D。我对上述命令进行了测试,并得到了从此类文件中获取的输入的 OK 响应。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2014-05-02
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多