Отсутствующие символы HTTPREAD с Arduino и SIM900

Я использую модуль SIM900 с моим Arduino, и в нем отсутствуют символы, хотя он возвращает правильное ожидаемое количество символов. У меня есть ОШИБКА на AT+SAPBR=1,1 и AT+HTTPINIT, поэтому я не уверен, что это причина. Я тоже не уверен, как решить эти проблемы.

AT+CGATT?

+CGATT: 1

OK
AT+CGATT=1

OK
AT+SAPBR=3,1,"CONTYPE","GPRS"

OK
AT+SAPBR=3,1,"APN","mobile.o2.co.uk"

OK
AT+SAPBR=1,1

ERROR
AT+HTTPINIT

ERROR
AT+HTTPPARA="URL","http://www.xxxxxxxxxxx.com/temp/"

OK
AT+HTTPACTION=0

OK

+HTTPACTION:1,200,56
AT+HTTPREAD

+HTTPREAD:56
{"type":"dOK

Моя функция, которая читает символы по мере их поступления:

void whileAvailable() {
  char data;
  while (SIM900.available()) {
    data=SIM900.read();
    if (data>0) Serial.print(data);
  }
}

Я считаю, что функция нормально читает символы, но я не уверен, почему ей не удается найти остальные символы.


person Enayet Hussain    schedule 21.11.2015    source источник
comment
Хотя это может быть переполнением буфера, это НЕ единственная причина. Веб-сайт, отвечающий на запрос, также вызывает его (заголовки ответа). Скорее всего, приведенный выше код работает для google.com.hk, но не для вашего сайта.   -  person karanis    schedule 11.06.2017


Ответы (2)


Это происходит из-за переполнения последовательного буфера Arduino Uno или Mega, который вы используете. Увеличьте размер буфера, чтобы он вмещал больше байтов; и эти данные могут отображаться.

person goddland_16    schedule 19.05.2016
comment
Это не дает ответа на вопрос. Получив достаточную репутацию, вы сможете /comment">прокомментировать любой пост; вместо этого дайте ответы которые не требуют разъяснений от спрашивающего. – Из обзора - person MLavoie; 19.05.2016
comment
@MLavoie Это ответ, и в настоящее время единственный, поскольку мне кажется, что размер буфера действительно является проблемой. Однако изменить это не так просто, потому что это встроено в библиотеки UART, поэтому @ user3661027, не могли бы вы предоставить более подробную информацию или пример, как это сделать? - person CherryDT; 19.05.2016
comment
Да, это возможно. Перейдите в папку установки C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino и измените SERIAL_TX_BUFFER_SIZE на 128 и SERIAL_RX_BUFFER_SIZE на 128 в HardWareSerial.h. Это решение для отсутствующих символов в Serial.print() - person goddland_16; 23.05.2016

Вам необходимо отключить режимы AT+SAPBR и AT+HTTPINIT

Попробуйте это: AT+SAPBR=0,1

       AT+HTTPTERM
person FurkanAltay    schedule 27.06.2020