Sim900a AT+HTTPREAD не получает полного ответа

поменял прошивку на SIM900B

попытаться отправить запрос на получение http://dummy.restapiexample.com/api/v1/employee/1 AT+HTTPACTION=0вернул +HTTPACTION:0,200,98

но когда я пытаюсь прочитать (AT+HTTPREAD или AT+HTTPREAD=0,98) данные ответа Я получил неверный ответ

ожидаемый результат:

+HTTPREAD:98
{"id":"1","employee_name":"Shibani","employee_salary":"999","employee_age":"0","profile_image":""}

и фактические результаты:

+HTTPREAD:98
{"id":"1","employee_name":"Shibani","employee_salary":"999","empe_"0"olme"

+HTTPREAD:98
{"id":"1","employee_name":"Shibani","employee_salary":"999","empe_"0"fea"}

+HTTPREAD:98
{"id":"1","employee_name":"Shibani","employee_salary":"999""pea:,piig"

+HTTPREAD:98
{"id":"1","employee_name":"Shibani","employee_salary":"999",moeg""reae}

мой код Arduino выглядит так

void setup() {
  Serial.begin(9600);
  mySerial.begin(57600);
  delay(5000);
  mySerial.println("AT");
  Serial.println("End of the setup");
}

void loop() {
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}

, 👍0

Обсуждение

Отредактируйте вопрос: опубликуйте свой код Arduino. Похоже, может произойти переполнение строки., @tavis

Может быть, вы делаете это глупое «подождите 5 секунд и предположим, что есть ответ», которое я вижу повсюду. Или, может быть, вы используете SoftwareSerial на скорости 115200 бод... Никто не может знать, если вы не поделитесь своим кодом..., @Majenko

@Majenko, спасибо, я изменил бод на 9600, и он заработал нормально, @JVic

@Majenko После того, как сделал mySerial.println("AT+HTTPACTION=0"); mySerial.println("AT+HTTPREAD"); задержка(1000); //как получить ответ, не дожидаясь определенного времени., @b.john


1 ответ


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

2

Видимо, вы запускали SoftwareSerial со слишком высокой скоростью передачи данных (57 600), и снижение ее до 9 600 устранило проблему.

,