#linux #adb #at-command #modem #cellular-network
#linux #adb #at-command #модем #сотовая связь-сеть
Вопрос:
Я тестирую разные команды AT, включая ту, которая используется для отправки текстового сообщения, а именно AT CMGS
.
Из того, что я прочитал в Интернете, вам просто нужно указать номер телефона, как показано ниже, и ввести CTRL-Z, чтобы отправить сообщение, но на самом деле ничего не происходит, когда я нажимаю CTRL-Z
echo -e "AT CMGS='"<phone_number>"'"r" > /dev/<port>
> Sending message...
<PRESS CTRL-Z but nothing happens>
Комментарии:
1. Трудно понять, как протестировать сотовое соединение. Вы уверены в расположении dbl и одинарных кавычек в вашей
echo -e
строке? Я считаю dbl-кавычки, которые не являются четным числом (чего я обычно ожидаю). Просто несколько идей. Удачи!2. Я бы также рекомендовал вам вводить буквальные данные. Использование
<>
символов в данных примера приводит к беспокойству о том, «является ли операция, использующая шаблон, найденным где-нибудь?» . Я бы рекомендовал попробоватьport=999; phone_num=3125274333 ; echo -e "AT_CMGS='$phone_num'r" > /dev/"$port"
. Конечно, для вашего тестирования используйте реальные значения дляport
иphone_num
, удачи.
Ответ №1:
Я предполагаю, что после отправки символов на ваш порт с echo -e
помощью , вы также получаете выходные данные с вашего последовательного порта с помощью
cat /dev/<port> amp;
так что каждый ответ от модема автоматически перенаправляется на вашу консоль.
В этом случае символ >
не означает, что вы можете напрямую отправить текст; вам придется продолжать отправлять его с echo -e
помощью . Вот последовательность команд с некоторыми комментариями справа, которые, очевидно, не обязательно включать
echo -e "AT CMGS='"<phone_number>"'"r" > /dev/<port> // Command
> // Modem's response
echo -e "My text!x1A" > /dev/<port> // Send text
CMGS: XYZ // Response to SMS sending
OK // It can take several seconds
Пожалуйста, обратите внимание, как двоичные данные передаются через xAB
escape-последовательность, где AB
— значение ASCII символа, который вы хотите добавить. Более подробная информация приведена на странице руководства.
Комментарии:
1. спасибо за подробный ответ. Я пытался использовать
echo
после отправки команды безрезультатно… Я не вижу ответа на свое текстовое сообщение, и я также не заставляю CTRL-Z работать2. кроме того, разве добавление
amp;
в конце команды не запускает материал в фоновом режиме и не выводит его на консоль?3. @Jazzy, я подтверждаю, что
amp;
это работает в фоновом режиме, чтобы консоль была «свободной» для отправки первых команд. Однако вывод команды в любом случае выводится в стандартный вывод. Вы видите вывод какой- либо команды? Что, если вы предоставитеecho -e "ATr" > /dev/port
?