0

我运行这些命令:

cat /dev/smd7 & echo "AT+CSCS=\"GSM\";\r" > /dev/smd7
cat /dev/smd7 & echo "AT+CMGF=0;\r" > /dev/smd7
cat /dev/smd7 & echo "AT+CMGS=24;\r" > /dev/smd7

然后我输入PDU消息:

07...985C369F01

我得到这个输出:

/system/bin/sh: 07...985C369F01: not found
4

1 回答 1

1

让我们分析一下您提供给 shell 的两个命令:

cat /dev/smd7 &
echo "some_data" > /dev/smd7
  1. cat /dev/smd7 &:听设备/dev/smd7:从现在开始,来自该设备的所有数据都将被重定向到标准输出(您正在写入的外壳)。在后台执行 ( &) 以便能够发送更多命令
  2. echo "some_data" > /dev/smd7:发送some_data 设备/dev/smd7

    1. 与设备的连接已打开
    2. 数据已发送
    3. 连接关闭,控制权回到外壳

当你寄出echo "AT+CMGS=24;\r" > /dev/smd7

  1. AT+CMGS=24;\r被发送到设备
  2. 连接已关闭
  3. ... 同时设备发回>提示字符,告诉您它正在等待 PDU 消息
  4. ...但外壳有控制权。>提示只是shell上的一个打印,所以任何发送的数据都将直接发送到shell!
  5. 由于发送的数据不是shell命令,所以not found显示错误

总之,为了正确发送PDU消息到设备,只需通过echo命令继续发送:

echo "07...985C369F01" > /dev/smd7

注意:确保使用 CTRL+Z 字符 (ASCII 0x1A) 终止序列。

于 2020-06-19T15:54:59.587 回答