/dev/smd0 和 /dev/ttyS0 是 device files。此类文件是virtual files,它提供了一个文件 I/O 操作接口,用于处理一些底层事物,例如串行端口、硬盘和内存等硬件资源,或处理信息、随机数输入、终端等非硬件资源画面输出等
设备文件有两种风格,字符和块。串口是字符设备,你可以验证c是ls -l输出的第一个字符:
$ ls -l /dev/ttyS0
crw-rw----. 1 root dialout 4, 64 Apr 7 00:25 /dev/ttyS0
$
/dev/ttyS0 是 linux 台式电脑上串口使用的设备名称,对应 DOS/Windows 中的COM1(在 linux 的非常非常早期使用 /dev/cua,你可能偶尔会遇到引用到那个)。对于手机的虚拟 USB 串行接口/dev/ttyACM0 和/dev/ttyACM1 使用。其他一些设备使用 /dev/ttyUSB0。对于 Android,有几个不同的设备文件名在使用,/dev/smd0 就是其中之一。您的手机可能会使用另一部手机,因此您必须检查您应该专门为您的手机使用的手机。
echo -e "AT" > /dev/smd0 命令没有意义。 -e 选项可以解释反斜杠转义字符,但由于以下字符串不包含此类字符,因此它仅相当于 echo "AT" > /dev/smd0。
但是,当向调制解调器发送 AT 命令时,命令行应该仅以 \r 结束,没有其他内容。这是V.250 强制要求的。
因此向调制解调器发送命令“AT”的正确命令应该是
echo -n -e "AT\r" > /dev/smd0
但是,即使将 AT 命令正确发送到调制解调器,您也必须读回调制解调器的响应。在执行此操作时多次关闭和(重新)打开设备文件(您将通过运行一系列 shell 命令来完成)不是一个好方法,所以我建议您使用我的程序 atinout专门写用于命令行AT命令通信:
$ echo AT | atinout - /dev/smd0 -
AT
OK
$
或
$ echo AT > input.txt
$ atinout input.txt /dev/smd0 output.txt
$ cat output.txt
AT
OK
$
这样您将正确执行所有调制解调器通信。