Ответ GSM-модуля sim800l не завершен

Я использую sim800l GSM-модуль с nodemcu esp8266 и общаюсь с ним с помощью команд AT+. Модуль работает правильно, но я пытаюсь использовать команду AT+CLCC, чтобы получить состояние всех текущих вызовов, но он отвечает только информацией о первом вызове и частью второго вызова.

Это ответ при наличии двух активных вызовов

15:37:19.156 -> AT+CLCC
15:37:19.156 -> +CLCC: 1,0,1,0,0,"+0123456789",145,"name"
15:37:19.156 -> 
15:37:19.156 -> +CLCC: 2,

Я думаю, что это проблема последовательного буфера, потому что размер последовательного буфера составляет 64 байта, а ответ больше, но я не знаю, как с этим справиться

Надеюсь, кто-нибудь сможет помочь.

РЕДАКТИРОВАТЬ: это код, который я использую

#include <SoftwareSerial.h>
#include <cstring>

#include <Arduino.h>

#define simTX D3
#define simRX D4

SoftwareSerial sim800l(simRX, simTX);  //Приём, Передача

void setup() {

  Serial.begin(115200);  //Начинаем последовательную связь с Arduino и Arduino IDE (Serial Monitor)

  sim800l.begin(115200);  //Начинаем последовательную связь с Arduino и SIM800L

}

void loop() {

  updateSerial();

}


//Начинать
// этот метод принимает входные данные от последовательного монитора и передает их на sim800l через последовательную связь
void updateSerial() {
  delay(500);
  while (Serial.available()) {
    sim800l.write(Serial.read());  //Пересылаем полученные последовательные данные в последовательный порт программного обеспечения
  }
  while (sim800l.available()) {
    Serial.write(sim800l.read());  //Пересылаем полученное ПО Serial в последовательный порт
  }
}
//Конец

, 👍0

Обсуждение

Не могли бы вы поделиться своим кодом? Размер буфера не должен быть проблемой в зависимости от того, как вы получаете ответ., @Nick S.

@НикС. я добавил это в вопрос :), @Mohamed Essam

избавьтесь от задержки()... измените while на if ... посмотрите, что произойдет, @jsotola

@jsotola я удалил задержку() и изменил время на if, как вы упомянули, и вот результат 22:54:55.552 -> AT+CLCC 22:54:55.552 -> +CLCC: 1,0,0,0,1,"+0123456789",145,"имя" 22:54:55.552 -> 22:54:55.552 -> +CLCC: все еще та же проблема, @Mohamed Essam


1 ответ


Лучший ответ:

2

Только для тех, у кого в будущем возникнет такая же проблема.

Проблема заключалась в том, что скорость передачи данных 115200 довольно высока для последовательной программной реализации, поэтому я просто изменил ее на 9600

 sim800l.begin(9600);  //Начинаем последовательную связь с Arduino и SIM800L

удачи из прошлого :)

,