Подскажите по работе с w5100

Тема в разделе "Arduino & Shields", создана пользователем AlexVS, 27 ноя 2014.

  1. AlexVS

    AlexVS Гик

    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
     
    Последнее редактирование: 27 ноя 2014
  2. AlexVS

    AlexVS Гик

    Не большое уточнение, итоговый размер странички примерно 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Кб, как получить остальные данные?
     
  3. Unixon

    Unixon Оракул Модератор

  4. AlexVS

    AlexVS Гик

    По второй ссылке поднимается проблема, но решения нет. С первой ссылкой вечером покопаюсь.....
     
  5. Unixon

    Unixon Оракул Модератор

  6. AlexVS

    AlexVS Гик

  7. Unixon

    Unixon Оракул Модератор

    В смысле может на W5300 тоже уже есть готовый шилд...
     
  8. AlexVS

    AlexVS Гик

    Ну вот результат: поправил файлы w5100.h, w5100.cpp, Ethernet.h, Ethernet.cpp, получилось 2 сокета и 4Кб.

    Это прокатило, а вот 1 сокет и 8Кб - уже не хочет работать. Интересно что в результате принимается не 4096 байт, а больше, но не вся страница. И если просто выводить побайтно в сериал, принимается больше, чем если я заменяю вывод в сериа на свой парсер (обработчик).
     
  9. AlexVS

    AlexVS Гик

    Чет все молчат? Нет никаких мыслей на эту тему? Жаль!
     
  10. Unixon

    Unixon Оракул Модератор

    А если быстро втянуть в атмегу данные из w5100 без разбора, удастся ли освободить место достаточно быстро для приема еще одного-двух пакетов? Сомневаюсь, что это чем-то особо поможет, но тем не менее...
     
  11. AlexVS

    AlexVS Гик

    Вряд ли получиться, учитывая размер данных. Я правда не совсем понимаю что там вообще происходит после того как я сделал 4Кб буфер , т.к. client.available() возвращает число меньше чем, выводиться в тот же сериал.принт.