вопрос про Arduino WebServer

fsdb
Offline
Зарегистрирован: 24.10.2015

Добрый день.

Хотелось бы у знающих людей спросить по поводу примера WebServer на Arduino https://www.arduino.cc/en/Tutorial/WebServer

Допустим у меня на SD карте файл размером в 300кб обычные текстовые данные скажем за пол года.
Если я буду считывать по 128 байт и отправлять как в примере client.println("<!DOCTYPE HTML>");   то удастся ли мне отобразить эту веб страничку в браузере клиенту или на ардуине закончится ОЗУ? 

Спасибо. 

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

Удастся, есть такая вещь как буфер. Читаем в него с карты, отдаём в сеть. Снова читаем в него из карты, но не из того же места а на длину буфера правее. Отдаём в сеть. Читаем. Отдаём. И так до бесконечности.

fsdb
Offline
Зарегистрирован: 24.10.2015

Voodoo Doll, понял. спасибо. т.е. после  client.println уже в браузер уходят данные, и эта память которая занималась у ардуины  очистилась..?

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

Не очистилась а находящиеся там данные более не нужны, и можно занять новым куском.

Logik
Offline
Зарегистрирован: 05.08.2014

Сам подход у Вас fsdb, правильный, но дявол кроется в мелочах. А "мелочи" здесь - переполнение буфера. Дело в том что буферов в цепочке по ходу передачи данных на самом деле будет несколько - внутри библиотеки выгребающей с карты, у Вас в скетче, в библиотеке сервера, в сетевой железяке и т.д. И вся сложность - переписывать данные в очередной буфер в цепочке только тогда, когда в нем есть достаточно свободного места. Это надо контролировать. Или не надо ;), если выгребать в самом начале данные медленно, чтоб заведомо все успевало пропускать предыдущие данные и освобождатся. Но тогда медленно будет.