Как отправить текстовое сообщение через AT CMGS?

#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 ?