49

Выдача произвольных файлов на севере ESP32 под Arduino IDE

Как показало гугление - вопрос выдачи через веб-сервер на микроконтроллере каких-либо файлов не попадающих под гребенку текстовых волнует очень многих.

А вот достойных решений в открытом доступе нет. Максимум что я видел это использование SD-карты и чтение уже с нее.

Дабы не пополнять стройные ряды мудаков "Вопрос решил, тему закрываю" выкладываю этот пост.


А ведь ларчик довольно просто открывается.

Есть путь настоящих самураев, записывая файл напрямую в энергонезависимую память и читая потом по ячейкам.

А можно всего лишь нужный файл перевести в Си-подобную переменную что бы ее понимал компилятор и мог с ней работать.


У каждого из методов есть свои плюсы. Здесь я опишу именно второй способ, так как он требует меньше всего трудозатрат при массовом внедрении в разных проектах.

Я написал простой исполняемый sh-файл который перебирает любой файл побайтово и создает заголовочный файл с массивом собственно байт.

https://github.com/SUNsung/bash_convert_to_byte_arr


Интерфейс простейший:

- есть две переменные, в первую мы записываем имя файла или полный путь к файлу который хотим отдавать через веб-сервер, а вторую переменную без пробелов и спецсимволов пишем собственно имя переменной в которой должен лежать байтовый массив.

Выдача произвольных файлов на севере ESP32 под Arduino IDE Arduino, Esp32, Длиннопост, Текст

В итоге создается новый файл (или перезаписывается старый) имя которого совпадает с именем переменной.


Внутри уже сформирован массив байт:

Выдача произвольных файлов на севере ESP32 под Arduino IDE Arduino, Esp32, Длиннопост, Текст

... и указана размерность:

Выдача произвольных файлов на севере ESP32 под Arduino IDE Arduino, Esp32, Длиннопост, Текст

IDE вполне себе спокойно открывает такие файлы, будь они даже под 300Кб и компилятор так же отлично компилирует без всяких плясок занимая фактический размер, не больше и не меньше.


Дальше просто стандартное подключение файлов в С++:

Выдача произвольных файлов на севере ESP32 под Arduino IDE Arduino, Esp32, Длиннопост, Текст

И бонусом как в ардуино-подобной среде можно отдавать сразу на выгрузку:

Выдача произвольных файлов на севере ESP32 под Arduino IDE Arduino, Esp32, Длиннопост, Текст

Arduino & Pi

1.5K поста20.8K подписчика

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу