GSM SIM900A Содержимое SMS не отображается
Я пытаюсь прочитать сообщения, отправленные с моего мобильного телефона на модуль GSM SIM900A на моем последовательном мониторе Arduino. Ни команда AT+CMGR, ни команда AT+CMGL не отображают содержимое SMS. Я также пытался увеличить размер буфера приемника в библиотеке SoftwareSerial , но безрезультатно. Я просто пытаюсь прочитать «check123». Я хочу сохранить полученное SMS в виде строки для дальнейшей обработки. Но я застрял без отображения содержимого SMS на последовательном мониторе.
Мой код:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(9, 10);
String content = "";
char character;
int i;
void setup() {
mySerial.begin(9600);
Serial.begin(9600);
delay(100);
}
void loop() {
ReceiveSMS();
delay(2000);
}
void ReceiveSMS() {
mySerial.println("AT+CMGF=1");
delay(2000);
toSerial();
mySerial.println("AT+CPMS=\"SM\",\"SM\",\"SM\"");
delay(2000);
toSerial();
mySerial.println("AT+CMGL=\"ALL\"\r");
delay(5000);
toSerial();
mySerial.println("AT+CMGD=1,4");
delay(2000);
toSerial();
}
void toSerial() {
while (mySerial.available() != 0) {
Serial.write(mySerial.read());
}
}
Выход:
Изменить:
Файл SoftwareSerial.cpp. Я отметил область, в которой изменил значение с 64 на 256 в соответствии с предыдущим справочным сообщением.
1 ответ
Ваш код абсолютно правильный. Я проверял его на своем Mega с Serial3, подключенном к GSM SIM900. Мне кажется, что-то подозрительное в SoftwareSerial. Дважды проверьте местоположение SoftwareSerial.
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial\src
Возможно, вы сможете увидеть, превышает ли использование оперативной памяти безопасный предел. Вот мой вывод:
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- Чтение SMS с помощью Arduino Uno и SIM800L и печать на LCD (16x2 буквенно-цифровых) с использованием последовательного соединения
- SIM800L не отвечает на AT-команды
- Как связаться с GPS SIM900a без serial monitor
- AT-команда не отвечает на последовательный монитор
- SIM800L не регистрируется в сети
- Ардуино для чтения с преобразователя RS232 в последовательный модуль TTL
- Как связаться с ESP8266 ESP01, отправив данные через программный сериал на Arduino Uno?
Обычно это проблема переполнения буфера. какой у вас сейчас размер буфера приема?, @goddland_16
Я изменил его на 256 с 64., @knowledgeispower
Вы имеете в виду, что вы изменили программный последовательный буфер RX или аппаратный последовательный буфер RX?, @goddland_16
Я добавил изображение файла SoftwareSerial.cpp и внес в него изменения., @knowledgeispower