adb shell cmgs AT 命令在 Redmi 7 上的 pdu 模式下不起作用



我运行以下命令:

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

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

cat /dev/smd7 &
echo "some_data" > /dev/smd7
  1. cat /dev/smd7 &:收听设备/dev/smd7:从现在开始,来自该设备的所有数据都将重定向到stdout(您正在写入的shell(。在后台(&(进行操作,以便能够发送进一步的命令
  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 字符(ASCII0x1A(终止序列。

strace 2>/dev/null -e inject=ioctl:retval=0 microcom /dev/smd7

对于交互式会话:D

最新更新