по команде — AT ^ SYSINFO и терминальная программа C ++

Я написал программу, которая последовательно коммутирует с USB-модемом 3g. Когда я открываю порт и пишу AT-команду

AT

На модем я получаю нормальный ответ «ОК» и могу прочитать его, используя функцию последовательного чтения. В терминале, когда я пишу команду

AT^SYSINFO

Я получаю следующий ответ:

^SYSINFO:#,#,#,#,#,#

С цифрами #. Однако, когда я пытаюсь написать одну и ту же команду последовательно, используя мою программу, я читаю только этот ответ:

AT^SYSINFO

Я пытаюсь затем прочитать другую строку входящих данных, но данные не приходят.
Кто-нибудь может мне с этим помочь? В сообщении ^ SYSINFO есть информация, которую мне нужно извлечь.

0

Решение

Вы ДОЛЖЕН завершить командную строку AT \r и ничего больше (если вы не изменили ATS3но не стоит)1. Процитировать Спецификация V.250:

5.2.1   Command line general format

A command line is made up of three elements: the prefix, the body, and
the termination character. The command line prefix consists of the
characters "AT" or "at", or, to repeat the execution of the previous
command line, the characters "A/" or "a/". The body is made up of
individual commands as specified later in this Recommendation. Space
characters are ignored and may be used freely for formatting purposes,
unless they are embedded in numeric or string constants (see 5.4.2.1
or 5.4.2.2). The termination character may not appear in the body. The
DCE shall be capable of accepting at least 40 characters in the body.
The termination character may be selected by a user option (parameter S3),
the default being CR (ASCII value 13).

DCE означает модем.

(Я удалил ссылки IA5 в приведенной выше цитате, поскольку это только сбивает с толку)


1
Завершается с \r\n будет обычно работать, но это только из-за задержки ожидания прерывания 125 мс, что делает дополнительный \n не прерывать команду.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector