Здравствуйте Использую GPRS шилд от Амперки с платой Leonardo. Режим работы такой, что большую часть времени модем выключен и включается раз в 5-7 минут примерно на 1-2 минуты. SMS, которые отправлены на модем когда он включен - доходят. Другие - теряются. SMS получаю командой "AT+CMGL=ALL", т.е. уже из хранилища, а не в прямом эфире. Постоянно слушать модем не могу - устройство много чего делает параллельно. Также установлена настройка уведомления об SMS - AT+CNMI=2,0,0,0,0. И выставлен текстовый формат SMS (не PDU). Питание - от внешнего стабилизированного БП на 5 В и 2 А. Отправка SMS, получение в период включенного состояния и периодическая отправка информации по HTTP проходит четко без сбоев (пока пробовал длительную работу до 10 часов). Подскажите пожалуйста, в чем может быть дело. Код процедуры по разбору SMS: Код (C++): void CheckSMS() { Serial.println(F("Start checking SMS")); // Serial1.println("AT+CMGL=\"REC UNREAD\""); Serial1.println("AT+CMGL=\"ALL\""); long ts_temp = millis(); String str = ""; Serial.println(F("Waiting for answer")); bool fl1 = false; // в течение 15 секунд ждем ответа от модема и разбираем этот ответ построчно while (millis() - ts_temp < 15000) { while (Serial1.available()) { char c = Serial1.read(); Serial.write(c); str += c; if (c == '\n') { // отправляем строчку на парсинг, ищем управляющую команду, если она есть, то выставляем флаг, что получили хоть одну команду (для дальнейшегшо удаления всех смс) if (ParseSMS(str) == true) { fl1 = true; }; str = ""; } } } delay(100); Serial.println(F("End checking SMS")); // если получена хоть одна смс с управляющей командой - удаляем все if (fl1 == true) { DebugOut(F("Deleting SMS")); // удаляем все смс Serial1.println(F("AT+CMGD=1,4")); long ts_t = millis(); while (millis() - ts_t < 5000) { while (Serial1.available()) { char c = Serial1.read(); Serial.write(c); } } } }