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

Обсуждение

Обычно это проблема переполнения буфера. какой у вас сейчас размер буфера приема?, @goddland_16

Я изменил его на 256 с 64., @knowledgeispower

Вы имеете в виду, что вы изменили программный последовательный буфер RX или аппаратный последовательный буфер RX?, @goddland_16

Я добавил изображение файла SoftwareSerial.cpp и внес в него изменения., @knowledgeispower


1 ответ


1

Ваш код абсолютно правильный. Я проверял его на своем Mega с Serial3, подключенном к GSM SIM900. Мне кажется, что-то подозрительное в SoftwareSerial. Дважды проверьте местоположение SoftwareSerial.

C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial\src

Возможно, вы сможете увидеть, превышает ли использование оперативной памяти безопасный предел. Вот мой вывод:

,