Порт GPRSSerial и его данные
- Войдите на сайт для отправки комментариев
Вс, 25/03/2018 - 14:34
Хочу отправлять на GPRS Shield SMS с данными о состоянии некого оборудования. SMS формируется как строка с переменными, переменные разделяются символами - "vl=33*vh=51*vt_i=78*vt_a=146"
Принимаю Shieldом, передаю на Leonardo:
if (!gprsSerial.available()){ //Если порт не готов, то выходим
delete_str1 = "ОБРЫВ ПОРТА";
return;
} else {
delete_str1 = "ПОРТ ГОТОВ";
}Переменная delete_str1 для проверки состояния.
Обрабатываю так:
char currSymb = gprsSerial.read(); //читаем данные из порта
if ('\r' == currSymb) {//Если конец строки \r
if (isStringMessage) {
delete_str = currStr;
//Здесь будет код обработки SMS
isStringMessage = false;
} else {
if (currStr.startsWith("+CMT")) {
isStringMessage = true;
}
}
currStr = "";
} else if ('\n' != currSymb) {
currStr += String(currSymb);
}Теперь проблема: порт GPRSSerial принимает только часть SMS, 13 символов, например - "vl=33*vh=51*v" и дальше Монитор порта выдает "ОБРЫВ ПОРТА", то есть порт пуст. Где оставшаяся часть SMS? Сколько можно утолкать в GPRSSerial байт от одной SMS. И наконец, как принять длинную SMS, скажем символов в 100? Спасибо.