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="";
Интересно, в чем разница?
@LinkedRom, 👍1
Обсуждение1 ответ
▲ 1
Данные поступают по последовательному каналу очень медленно по сравнению со скоростью MCU. В первом фрагменте вы прекращаете чтение при первом разрыве между байтами (доступно 0). Во втором фрагменте функция ReadString
будет ждать следующего байта до второго (по умолчанию).
,
@Juraj
Смотрите также:
- AT-команда не отвечает на последовательный монитор
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- Как остановить SoftwareSerial от получения данных и повторно включить его в какой-то другой момент?
- Ардуино для чтения с преобразователя RS232 в последовательный модуль TTL
- Не нашел датчик отпечатков пальцев :( Arduino Mega 2560 Adafruit Fingerprint Sensor
- Чтение SMS с помощью Arduino Uno и SIM800L и печать на LCD (16x2 буквенно-цифровых) с использованием последовательного соединения
- Как работает последовательная связь на Arduino?
- Как связаться с ESP8266 ESP01, отправив данные через программный сериал на Arduino Uno?
Насколько велик " инСтринг`? Не могли бы вы, пожалуйста, опубликовать [Минимальный, воспроизводимый пример](https://stackoverflow.com/help/mcve), @sa_leinad