Команда adb shell cmgs AT в режиме pdu на Redmi 7 не работает - PullRequest
0 голосов
/ 18 июня 2020

Я запускаю эти команды:

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

1 Ответ

1 голос
/ 19 июня 2020

Давайте проанализируем две команды, которые вы предоставляете своей оболочке:

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. ... но оболочка имеет управление. Приглашение > - это просто печать в оболочке, поэтому любые отправленные данные будут напрямую отправлены в оболочку!
  5. Поскольку отправленные данные не являются командой оболочки, not found отображается ошибка

В заключение , чтобы правильно отправить сообщение PDU на устройство, просто продолжайте отправлять его через echo команду:

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

Примечание: Обязательно завершайте последовательность символом CTRL + Z (ASCII 0x1A).

...