GSM входящие байты от UART не завершены

Я использовал команды AT для считывания входящих байтов из последовательного буфера с SIM900A, но я не могу получить полное сообщение, используя приведенный ниже код:

while(ss.available()>0)
{
 inChar=ss.read();
 inString+=inChar;
}

Serial.println("Received messaged: ");
Serial.println(inString);

inString="";

Однако это одно ниже работает:

if(ss.available()>0)
{
  inString=ss.readString();
}

Serial.println("Received messaged: ");
Serial.println(inString);

inString="";

Интересно, в чем разница?

, 👍1

Обсуждение

Насколько велик " инСтринг`? Не могли бы вы, пожалуйста, опубликовать [Минимальный, воспроизводимый пример](https://stackoverflow.com/help/mcve), @sa_leinad


1 ответ


1

Данные поступают по последовательному каналу очень медленно по сравнению со скоростью MCU. В первом фрагменте вы прекращаете чтение при первом разрыве между байтами (доступно 0). Во втором фрагменте функция ReadString будет ждать следующего байта до второго (по умолчанию).

,