2016-02-22 2 views
1
echo -ne "ATZ\r\n" > /dev/ttyUSB0 
echo -ne "AT+CMGF=1\r\n" > /dev/ttyUSB0 
echo -ne "AT+CMGS=\"888XXXXXXX\"\rhello\x1a\n" > /dev/ttyUSB0 

Поскольку CMS ERROR-96 не указана для обязательной информации.Получение + CMS ОШИБКА: 96 При попытке отправить смс с помощью AT-команд

+0

Я категорически возражаю против закрытия этого вопроса как «непонятного, о чем вы спрашиваете». Вопрос, возможно, немного короток в тексте прозы, но присутствует требуемый инфомация. На самом деле вопрос действительно хорошо задан для нового пользователя. Он хорошо отформатирован, и Venkat искал значение ошибки 96 и включал описание. – hlovdal

ответ

0

Нет, вы не можете отправлять AT-команды таким образом. Начните с чтения V.250 (все главы 5) и спецификации 27.005 (команда AT + CMGS), ссылки находятся в tag info page. Эти документы научат вас многому в отношении обработки, синтаксиса и поведения AT-команд.

Худшая ошибка заключается в отправке командных строк AT без ожидания окончательного кода результата. Точно так же вы не будете писать HTTP-клиент, который полностью игнорирует ответы с HTTP-сервера, вам не следует отправлять AT-команды и полностью игнорировать ответы от модема.

И для AT+CMGS команды вы должны ждать с не передавать данные смс полезной нагрузки до тех пор, после того, как вы получили префикс "\r\n> " (см первую часть this answer для деталей).

Другие вещи, командные строки AT должны быть завершены только \r, а не \r\n. Это может быть проблемой при открытии и закрытии модемного устройства снова и снова, как перенаправление нескольких команд командной оболочки. Это полностью зависит от конкретного модема, и нет гарантии, что это будет работать надежно.

Для решения этих последних вопросов я написал программу atinout, чтобы сделать отправку AT-команды из командной строки простой и надежной. Первые две AT команды могут быть посланы как

$ echo ATZ | atinout - /dev/ttyUSB0 - 
ATZ 
OK 
$ echo AT+CMGF=1 | atinout - /dev/ttyUSB0 - 
AT+CMGF=1 
OK 
$ 

или альтернативно

$ echo ATZ > commands.txt 
$ echo AT+CMGF=1 >> commands.txt 
$ atinout commands.txt /dev/ttyUSB0 output.txt 

но AT + CMGS Я думаю, вы должны use expect на некоторое время (в будущем atinout будет иметь программу спутник специально для отправки AT + CMGS).

Смежные вопросы