Get запросом читаю с web-странички информацию (XML). Вычитывается только первые 2 Кб, хотя размер RX-буфера судя по описанию 8Кб. Как забрать оставшиеся 2-6 Кб ? Код: Код (Text): while (client.available()) { char inChar = client.read(); Serial.print(inChar); } int s = client.available() - тоже возвращает 2048, но размер страницы значительно больше - это точно. Нашел в коде w5100.h такие строки: Код (Text): public: static const uint16_t SSIZE = 2048; // Max Tx buffer size private: static const uint16_t RSIZE = 2048; // Max Rx buffer size
Не большое уточнение, итоговый размер странички примерно 18Кб. Вот ссылка http://api.openweathermap.org/data/2.5/forecast?q=Krasnoyarsk&mode=xml&units=metric Вот код обработки: Код (Text): const char FCserver[] = "api.openweathermap.org"; if (client.connect(FCserver, 80)) { Serial.println("Connected!"); client.println("GET /data/2.5/forecast?q=Krasnoyarsk&mode=xml&units=metric HTTP/1.1"); client.print("Host: "); client.println(FCserver); client.println("Connection: close"); client.println(); while (!client.available()); while (client.available()) { char inChar = client.read(); Serial.print(inChar); // readNextByteThreeHour(); } } client.stop(); Не могу понять почему возвращается только первые 2Кб, как получить остальные данные?
http://forum.arduino.cc/index.php?PHPSESSID=q4vc9e8bf9n57bqcs4hlusnqn7&topic=19260.0 http://forums.parallax.com/showthread.php/121213-W5100-and-TCP-packet-size http://habrahabr.ru/post/230661/
Есть еще вариант перейти на W5300, у нее 128 Kb буферов. http://www.wiznet.co.kr/Sub_Modules/en/product/Product_Line.asp?cate1=5&cate2=7
Не мое. Использую готовый шилд http://www.ebay.com/itm/TOP-Mini-W5...775?pt=LH_DefaultDomain_0&hash=item5d4e449ff7
Ну вот результат: поправил файлы w5100.h, w5100.cpp, Ethernet.h, Ethernet.cpp, получилось 2 сокета и 4Кб. Это прокатило, а вот 1 сокет и 8Кб - уже не хочет работать. Интересно что в результате принимается не 4096 байт, а больше, но не вся страница. И если просто выводить побайтно в сериал, принимается больше, чем если я заменяю вывод в сериа на свой парсер (обработчик).
А если быстро втянуть в атмегу данные из w5100 без разбора, удастся ли освободить место достаточно быстро для приема еще одного-двух пакетов? Сомневаюсь, что это чем-то особо поможет, но тем не менее...
Вряд ли получиться, учитывая размер данных. Я правда не совсем понимаю что там вообще происходит после того как я сделал 4Кб буфер , т.к. client.available() возвращает число меньше чем, выводиться в тот же сериал.принт.