вопрос про Arduino WebServer
- Войдите на сайт для отправки комментариев
Пт, 18/08/2017 - 20:27
Добрый день.
Хотелось бы у знающих людей спросить по поводу примера WebServer на Arduino https://www.arduino.cc/en/Tutorial/WebServer
Допустим у меня на SD карте файл размером в 300кб обычные текстовые данные скажем за пол года.
Если я буду считывать по 128 байт и отправлять как в примере client.println("<!DOCTYPE HTML>"); то удастся ли мне отобразить эту веб страничку в браузере клиенту или на ардуине закончится ОЗУ?
Спасибо.
Удастся, есть такая вещь как буфер. Читаем в него с карты, отдаём в сеть. Снова читаем в него из карты, но не из того же места а на длину буфера правее. Отдаём в сеть. Читаем. Отдаём. И так до бесконечности.
Voodoo Doll, понял. спасибо. т.е. после client.println уже в браузер уходят данные, и эта память которая занималась у ардуины очистилась..?
Не очистилась а находящиеся там данные более не нужны, и можно занять новым куском.
Сам подход у Вас fsdb, правильный, но дявол кроется в мелочах. А "мелочи" здесь - переполнение буфера. Дело в том что буферов в цепочке по ходу передачи данных на самом деле будет несколько - внутри библиотеки выгребающей с карты, у Вас в скетче, в библиотеке сервера, в сетевой железяке и т.д. И вся сложность - переписывать данные в очередной буфер в цепочке только тогда, когда в нем есть достаточно свободного места. Это надо контролировать. Или не надо ;), если выгребать в самом начале данные медленно, чтоб заведомо все успевало пропускать предыдущие данные и освобождатся. Но тогда медленно будет.