Вопрос про считывания данных с АТ команды

VeD
Offline
Зарегистрирован: 21.02.2016

У меня  gsm  модуль  sim800l v2 + usb340g  переходник. 

Я монитор порта отправляю команду ATD+79XXXXXXXXXXX; чтоб позвонить

И команду AT+CLCC для мониторинга статуса вызова.

При приеме вызова ответ получаю +CLCC: 1,0,0,0,0,"номер телефона","145",""

Теперь вопрос по какому алгоритму считывается эта информация?

Все эти данные нужно записать в буфер от+ до последней кавычки или какие то блоки могут быть как то отфильтрованы, например запятые или например доходим до самых первых кавычек до сюда +CLCC: 1,0,0,0,0,. значит данные можно сравнивать. 

Просто инфы по этому поводу не нашел. Есть примеры конечно. только не именно данной команды. Более простых, без всяких там 1,0,0,0  и так далее. 

vlad072
Offline
Зарегистрирован: 01.08.2017
  char at[128]= ""; // буфер приёма ат-уведомлений от модема
  //...
  char* _ptr = strstr(at, "+CLCC: 1,"); if (_ptr) {
    switch (_ptr[11]) {
      case '0': /* разговорное состояние */ break;
      case '2':
      case '3': /* исходящий дозвон абоненту */ break;
      case '6':
      case '7': /* исходное состояние */ break;
      case '4': /* входящий звонок */ 
    }
  }

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

VeD пишет:

Просто инфы по этому поводу не нашел. 

Да ну? А официальный мануал - с вами не согласен: http://www.mt-system.ru/sites/default/files/documents/sim800_series_at_command_manual_v1.10_0.pdf

Там описано всё, что вам нужно, в частности, на странице 72.

VeD
Offline
Зарегистрирован: 21.02.2016

Это всё я читал и терминал мне то же самое выводит. Вопрос в другом, как эта инфа поступает.какими блоками. Мне нужен сам процесс отслеживания и считывания. Чтоб например первый 0 не выдать за четвёртый 0

VeD
Offline
Зарегистрирован: 21.02.2016

Ну так я и думал, что нужно проверять поступающий байт(пусть будет байт, мне так проще) и сравнивать его. Только я хотел через strcmp(). Но тут есть нюанс, как приходят данные вообще? Так +CLCC или так + C L C C? Я считаю что вторым вариантом. Можно было попробовать с помощью экспериментов. Но как говориться. Не знаешь броду, не лезь в воду. Благодарю за пример кода

VeD
Offline
Зарегистрирован: 21.02.2016

Все, понял как