Задать вопрос
@Catmengi
Зачем я это делаю? Просто потому что

Возможно ли сделать браузер как на старый сотовых телефонах на esp32?

Я делаю свой кпк на базе esp32s3, и я хочу сделать на нем небольшой браузер вдохновленный браузерами кнопочных телефонов нулевых. Я не планирую добавлять в него поддержку JS и/или css(я знаю что без него сейчас совсем тяжело). Я хотел сделать отображение html элементов как lvgl объекты(текстовые поля, кнопки и т.п.) У меня есть 4 варианта как это можно сделать в теории

1. Рендеринг страницы на сервере, создание скриншота в нужном разрешении и json описание интерактивных элементов(условных кнопок и ссылок)

Плюсы:
красиво и поддержка современных web технологий. Просто в реализации

Минусы:
нужен достаточно мощный сервер, перепрошитый роутер уже не подойдет. Не аутентично

2. Рендеринг страницы полностью на устройстве. Парсинг html и рендер в lvgl

Плюсы:
аутентично

Минусы:
отсутствие нормального парсера html на си с документацией и который не заброшен. Сложность написания своего.

3. Перевод html страницы в json описание на сервере и рендер данного json в элементы lvgl

Плюсы:
рендер на устройстве, есть нормальные библиотеки json парсеров на Си

Минусы:
1. возможен огромный блоб json который нужно распарсерить и не убить кучу(фрагментацией)
2. Если пытаться убрать первый минус - достаточно сложно будет переписать существующую библиотеку парсинга (например cJSON) под кучу использующую хэндлы

4. Не делать.

Плюсы:
самый легкий вариант

Минусы:
Самый скучный вариант
  • Вопрос задан
  • 103 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Есть же Lynx - он на си, вполне возможно попробовать выпилить системные API и всё остальное отсутствующее в esp. Если написать свой простенький HTML парсер - то абсолютное большинство современных сайтов будут всё равно недоступны, т.к. сейчас куча всяких реактов, вью и прочих фреймворков с генерацией интерфейса на клиенте. Но в целом задаче вполне реализуемая, а кроме того на esp вполне можно запустить JS - так что реализация простенького браузера тоже вполне возможна. Полноценную же поддержку современных веб-технологий просто физически не вместить на esp - браузерные движки нынче очень тяжёлые. Так что в реальности остаётся либо превращать вашу esp в тонкого клиента с ренедрингом/парсингом на своём сервере либо взять что-то более производительное и поставить туда полноценный линукс.
Ответ написан
@rPman
Настоятельно рекомендую генерировать веб страницу на сервере, чистить от визуального мусора (достаточно простого инжекта на страницу, поиск видимых элементов с текстами и чистка от лишних пробелов), плюс ссылки a href и элементы с onclick/onmousedown ивентами... и editbox/textarea (визуально как то их выделяй как просто объект, при выборе которого на весь экран раскроется редактор, и помним что нужна кнопка enter и esc)

На маленьком экране вся визуальщина абсолютно бесполезна (достаточно выделять в новую строку заголовки и списки). Скорости слабого железа не будет хватать для адекватного парсинга даже простых сайтов.

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

Зато пользоваться результатом можно будет вполне почти на всех сайтах.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы