Порт GPRSSerial и его данные

Нет ответов
Constx7
Offline
Зарегистрирован: 25.03.2018

Хочу отправлять на 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? Спасибо.