2012-08-28 69 views
6

下Microcom公司命令的Linux存在的命令microcom与串行调制解调器通讯:重定向AT命令在<code>BusyBox</code><a href="http://en.wikipedia.org/wiki/BusyBox">command</a> Linux的

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命令我想insise把他们的一个文本文件并将该文件的内容重定向为上述命令的stdin。例如,我有一个文件

/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的stdin。可能与如何解释行尾或文件结束有关。如果有人有一些想法,我会感谢一些帮助。

感谢,

亚历

+0

您正在使用什么壳呢? – tMC

回答

5

林Slitaz里4.0 &下运行在BusyBox的v1.18.4的Microcom公司我复制问题&然后解决它。如果您要在此级别模拟键盘输入,则由于键盘键发送^ M(0x0D),因此takefile必须在每行之后具有完整的CRLF。大多数ASCII编辑器编写的Linux标准0x0A是不够的。

有很多方法可以做到这一点,但我只是在每一行的末尾创建了一个额外的字节的采集文件,然后使用ncurses-hexedit程序将字节变为0x0D。我测试了上述命令,&通过从这样的文件中得到的输入得到了OK响应。

希望这会有所帮助。

5

你需要结束AT命令特殊字符\ r

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

随着\ n它不工作

素不相识

+0

如果在busybox旁边使用一个真正的shell,比如bash,请不要忘记-e和-n标志以回显:'echo -ne“AT + CSQ \ r \ n”| microcom -X -t 1000/dev/modem_at1' –