SIM900 получение СМС в режиме GPRS
- Войдите на сайт для отправки комментариев
Доброго дня!
такая ситуация -
к ардуино Mega2560 подключен SIM900.
работает в режимах приема звонка, приема СМС И отправки данных на сервер.
проблема -
если не включен режим GPRS, то СМС принимается отлично, считываю строку, в которой есть номер телефона и сам текст СМС. его парсю, и все в порядке.
пример строки
,,+CMT: "+7911111111","","17/01/21,13:25:09+12",,wsk1,,
НО если включен режим GPRS, то строка принимается обрезанной
,,+HTTPACTION:0,200,19,,,,+CMT: "+79111111111","","17/01/21,13:
переменная заведомо длинее 190 символов.
вероятно я не до конца считываю поток с модуля. или не верно? прошу помощи, а то уже давно бьюсь.
аналогичные примеры на форумах смотрел, но не нашел решения проблемы
код считывания с модуля прилагаю.
буду рад услышать конструктивную помощь и направление, куда рыть...
char msg[190] = ""; GsmAvailable(); // проверим порт модуля void GsmAvailable() { // if (gsmSerial.available()) { // если идет поток с SIM, while (gsmSerial.available()) { char buf = gsmSerial.read(); if ('\r' == buf) // если конец инфы с модуля buf = ',' ; //Добавл if ('\n' == buf) // если конец инфы с модуля buf = ',' ; //Добавл msg[i++] = buf; } //закрываем массив // msg[i++] = '\0'; } Serial.print("soobsch GPRS 2 - "); Serial.println(msg); Serial.println(i); } if (i > 0) // определяем тип сообщения с модуля и запускаем соответствующую обработку GsmMes(); // парсю код i = 0; // этой процедурой подключаю HTTP ////////Инициализировать HTTP void P_initialized_Http() { init_gsm(); // сброс модуля stop_http(); // //остановить HTTP !!!!!!!!???? if (!SendAT("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"", "OK")) //тип подключения - GPRS return ; if (!SendAT("AT+SAPBR=3,1,\"APN\",\"internet.beeline.ru\"", "OK")) return; if (!SendAT("AT+SAPBR=3,1,\"USER\",\"beeline\"", "OK")) return; if (!SendAT("AT+SAPBR=3,1,\"PWD\",\"beeline\"", "OK")) return ; if (!SendAT("AT+SAPBR=1,1", "OK")) //Reopen bearer //Открыть несущую (Carrier) { delay(300); SendAT("AT+SAPBR=0,1", "OK"); //close bearer delay(300); if (!SendAT("AT+SAPBR=1,1", "OK")) return; } delay(300); if (!SendAT("AT+HTTPINIT", "OK")) //Инициализировать HTTP return; if (!SendAT("AT+HTTPPARA=\"CID\",1", "OK")) //Carrier ID для использования. return; initialized_Http = 1; // NextMillisOut = millis() + PeriodNextMillisOut; }