Ответ 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 в последовательный порт
}
}
//Конец
@Mohamed Essam, 👍0
Обсуждение1 ответ
Лучший ответ:
Только для тех, у кого в будущем возникнет такая же проблема.
Проблема заключалась в том, что скорость передачи данных 115200 довольно высока для последовательной программной реализации, поэтому я просто изменил ее на 9600
sim800l.begin(9600); //Начинаем последовательную связь с Arduino и SIM800L
удачи из прошлого :)
- AT-команда не отвечает на последовательный монитор
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- Чтение SMS с помощью Arduino Uno и SIM800L и печать на LCD (16x2 буквенно-цифровых) с использованием последовательного соединения
- Как связаться с ESP8266 ESP01, отправив данные через программный сериал на Arduino Uno?
- Последовательная связь от Arduino до ESP8266 NodeMCU работает, но от NodeMCU до Arduino не работает
- SIM800L не отвечает на AT-команды
- GSM SIM900A Содержимое SMS не отображается
- HLW8032 UART отправляет случайные данные (регистры часто переполняются)
Не могли бы вы поделиться своим кодом? Размер буфера не должен быть проблемой в зависимости от того, как вы получаете ответ., @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