• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Web-свалка на RTL871x

pvvx

Активный участник сообщества
Т.к. этот проект я смотрел и работал он тогда нестабильно (может там что изменилось, конечно)
Работает он. Что будет то с LwIP-овым socket? Он отлажен годами... Но он жрет и держит память на буфера...
Переделал пример приема данных с adc на прием данных с uart.
Попробовал вместо teechart вместо dygraph.
Пора уже использовать WebGL, а не это унылое... :)
Скорости отображения графиков у них разные, на порядки...
WebGL Aquarium
А бедные дети всё приложения в маркет на телефоны с кривыми кнопками (те, что с привязкой к mqtt) пишут, когда устройство само способно всё выдать в броузере :)
TeeChart 3D Charting for JavaScript Three.js WebGL™ Basic Example
Теперь такой вопрос: получается так, что если одновременно открыть две веб-страницы, принимающие данные, на обеих страницах данные будут с пропусками. Потому как нет разницы, кто данные принял - кто успел, то и принял. Кто-то одну часть принял, кто-то другую.
Ну так организован протокол для ADC, чтобы ловить пропуски... Он не рассчитан на много пользователей.
Пока обдумываю два варианта:
Первый - если бы был где-то список подключенных web-сокет клиентов, то можно был бы определять, кому что отправлять, кто что получил, кто не получил. Но это сложно. И так-то алгоритм сложный, а тут ещё сложнее будет.
Второй вариант - отправлять всем, не разбираясь, буфер целиком. И уже на стороне клиента разбирать - что принять к использованию, что отбросить.
Это смотря что вам надо. Мне пока такого не требуется.
 
Последнее редактирование:

aloika

Active member
Столкнулся с интересным поведением прошивки, хотелось бы его осознать.

Есть функция, инициализирующая прерывание по приему символа в UART:

Код:
void uart_init(void)
{
     serial_t    sobj; 
    serial_init(&sobj,UART_TX,UART_RX);
    serial_baud(&sobj,9800);
    serial_format(&sobj, 8, ParityNone, 1);
    serial_irq_handler(&sobj, uart_irq, (uint32_t)&sobj);
    serial_irq_set(&sobj, RxIrq, 1);
 }
И есть соответствующий обработчик прерывания.

Вопрос - в каком месте нужно вызвать uart_init(), чтобы прерывание корректно обрабатывалось всегда?

Я тут поэкспериментировал немного:

1. Если вызвать uart_init() до запуска шедулера, то по приходу символа всё виснет и далее вотчдог.
2. Если вызвать uart_init() в user_init_thrd, то вроде бы начинает работать, но после применения новых настроек wi-fi по приходу символа всё виснет и далее вотчдог. Кстати, если обработчик прерывания сделать пустым, то поведение как в п.1.
3. Если вызвать uart_init() в web_int_callback (по определенному условию), то всё работает корректно.

Понятно, что такое поведение связано с freertos. В некорректных случаях исполнение программы попадает в обработчик прерывания и дальше никуда не идёт. Как можно понять такое поведение?
 

A_D

Active member
Начал тут утилиту одну писать, пригодится и в применении WEB свалки, да и других проектов, кому больше нравится на VS работать.

Собственно вот:
upload_2018-4-14_21-48-15.png
Создаём пустой проект Linux Makefile, который можно компилировать в WSL.
Далее скачиваем WEB свалку (для теста, можно любой другой проект, адаптированный для сборки в WSL), кладём вебсвалку в папку проекта VS (аля обычно расположение файлов, относительно корня\файла проекта VS), запускаем утилиту, выбираем файл проекта VS и выбираем какие файлы\папки добавить в фильтры и сам проект для компиляции - жмем Обновить - Потом жмем Сохранить (VS должна быть закрыта, иначе не даст сохранить).
Открываем проект в VS - и вауля, всё на месте, остаётся настроить для сборки команды и он собирается аналогично Eclipse.
ЗЫ. меня сильно удивило, что в VS таки нельзя нормально добавить рекурсивно папки и файлы, что бы они добавились как есть + еще добавлять пути (еще НЕ сделал!) надо для intellisense. В итоге решил сделать такую утилиту. Сейчас первый, более менее заработавший вариант получился.. на гите положил (пока еще есть проблемы и корневые элементы XML раскрываются двойным кликом, но стрелочки не показывается).
 

pvvx

Активный участник сообщества
VS со своим аккаунтом в MicroSoft задо... Это не аккаунт а кошелек с рекламой :)
C WSL есть проблемы с Jtag. USB там ещё не поддерживается. Запросы пользователей по обеспечению эмуляции там libusb ещё не выполнены. Собрать OpenOCD тоже представляется проблемным, если не владеете ручной правкой всего на свете...
В итого выходит кривенько - винегрет из компиляторов под Ubuntu и Jlink в Win среде. С другими адаптерами ещё проблемнее, т.к. они не адаптированы на USB3.0 -> USB2.0 (скрипты могут не работать с USB2.0 воткнутым в разъем USB3.+ из-за внутренних изменений в самой win с USB3.+).
Это всё пока и закрывает возможность поиграться "телепузикам" в компиляцию с заливкой стороннего пакета по одной кнопке...
 
Последнее редактирование:

A_D

Active member
VS со своим аккаунтом в MicroSoft задо... Это не аккаунт а кошелек с рекламой :)
VS 2017 не обязательно акк для использования, можно 30 дней юзать хоть Enterprice и все норм. Ну и дальше можно ключик подсунуть при желании и опять же акк не нужен.. MS Store тоже без акка скачивает Ubuntu и т.п.

C WSL есть проблемы с Jtag. USB там ещё не поддерживается. Запросы пользователей по обеспечению эмуляции там libusb ещё не выполнены. Собрать OpenOCD тоже представляется проблемным, если не владеете ручной правкой всего на свете...
В итого выходит кривенько - винегрет из компиляторов под Ubuntu и Jlink в Win среде. С другими адаптерами ещё проблемнее, т.к. они не адаптированы на USB3.0 -> USB2.0 (скрипты могут не работать с USB2.0 воткнутым в разъем USB3.+ из-за внутренних изменений в самой win с USB3.+).
Да, с USB я уже понял... когда RAK831 пробовал запустить на нём. Но до отладки еще не дошел... там пока еще есть другие недоработки.
 

pvvx

Активный участник сообщества
VS 2017 не обязательно акк для использования, можно 30 дней юзать хоть Enterprice и все норм. Ну и дальше можно ключик подсунуть при желании и опять же акк не нужен.. MS Store тоже без акка скачивает Ubuntu и т.п.
Да, но 30 дней... Это мало и не для каждого пойдет, если нет безлимитного Инет от 100 Мбит/сек на скачивание "обдейтов" VS, до того как приступить с ней работать. :)
 

A_D

Active member
Да, но 30 дней... Это мало и не для каждого пойдет, если нет безлимитного Инет от 100 Мбит/сек на скачивание "обдейтов" VS, до того как приступить с ней работать. :)
Ну опять же - есть Community Edition, полностью бесплатная.
И да, я же не призываю использовать VS всем и всегда, только предлагаю другой путь, кому нравится VS и всё. А не нравится - то не используйте. ;)
 

pvvx

Активный участник сообщества
Ну опять же - есть Community Edition, полностью бесплатная.
И да, я же не призываю использовать VS всем и всегда, только предлагаю другой путь, кому нравится VS и всё. А не нравится - то не используйте. ;)
Основа не спор, а применение в качестве простого средства для "начинающих". Не предупредив о сложностях применения VS не стоит её навязывать. Более ничего.
Если вы сможете решить и написать скрипты на все случаи, автоматически решающие все проблемы по установке VS, то и разговоров то нет. ;) Кроме её монструозности и "загрязнения системы" обычному пользователю Win10, есть ещё такой фактор, что вам придется постоянно поддерживать и менять эти скрипты для каждой версии и чиха Микрософт...
WSL в данном случае попроще - его можно снести пару кликами, когда он станет ненужен. А в случае работы с другими микроконтроллерами и прочими компиляторами, решение через WSL является более универсальным из-за поддержки Unix/Linux/...
Из оболочек, к примеру Eclipse, вcё равно в какой из сред Linux или Windows она работает. Принципы и описания решения проблем и задач совпадают для неё в любой среде...
 
Последнее редактирование:

A_D

Active member
Основа не спор, а применение в качестве простого средства для "начинающих". Не предупредив о сложностях применения VS не стоит её навязывать. Более ничего.
Если вы сможете решить и написать скрипты на все случаи, автоматически решающие все проблемы по установке VS, то и разговоров то нет. ;) Кроме её монструозности и "загрязнения системы" обычному пользователю Win10, есть ещё такой фактор, что вам придется постоянно поддерживать и менять эти скрипты для каждой версии и чиха Микрософт...
WSL в данном случае попроще - его можно снести пару кликами, когда он станет ненужен. А в случае работы с другими микроконтроллерами и прочими компиляторами, решение через WSL является более универсальным из-за поддержки Unix/Linux/...
Из оболочек, к примеру Eclipse, вcё равно в какой из сред Linux или Windows она работает. Принципы и описания решения проблем и задач совпадают для неё в любой среде...
Я как бы и не пишу, что это для "начинающих" и тем более не навязываю (откуда вы это взяли..). Мне к примеру удобно использовать одну IDE, тем более с кучей удобств в плане рефакторинга и написания кода, может кто то так же думает - почему бы не поделится инфой...
Установка VS сложна?... ну как сказать.. я потихоньку почти полностью на 2017 перелез и проблем не заметил, кроме одного раза, когда на новой машине ставил с функциями мобильной разработки - что то не так поставилось, но руками в конф.файле правится и делов на минуту. А так - установщик VS сейчас крайне дружелюбен и интуитивно понятен, имхо.
Ну как говорится - о вкусах не спорят, не нравится - не используйте. ;)
 

pvvx

Активный участник сообщества
Ну как говорится - о вкусах не спорят, не нравится - не используйте. ;)
У меня наверно извращенный вкус - установлены и используются VS нескольких версий и всё остальное :)
Подскажите, как собрать в VS OpenWRT для Omega2+ ?
Недавно пробовал собрать под WSL openosd-esp32 редакции Espressif для платформы Windows, как-то знание VS совсем не помогли, как и рекомендации на сайтах ESP-IDF. :) Но всё-же удалось собрать, плюнув на описания от фанатов ESP-IDF... Это к тому, что пришлось разбираться самому, в том что установлено и что надо установить, да что поменять... Среда VS и знания по ней в данном случае никаким боком не поможет. А это всего типовые задачи, уровнем немного выше мигания светодиодом в Arduino...
Из этого выходит, что VS – это среда немного выше чем амбразура в Arduino. Позволяет создавать пользовательские приложения для мигания уже парой светодиодов :) , но не решает задач по созданию более сложных систем. Альтернатив у VS множество, но классическим так и остается сборка через make в среде Linux, используя любой редактор.
Толстый и жирный VS безуспешно пытается конкурировать с MC в linux или FAR в Windows. :)
 
Последнее редактирование:

A_D

Active member
У меня наверно извращенный вкус - установлены и используются VS нескольких версий и всё остальное :)
Ну у меня пока тоже 2015 и 2017 стоит, на 2015 основной проект по работе и первые эксперименты по SoC делал, а на 2017 уже новые проекты и изучаю новые фишки C# 7.0+ (одни только локальные функции чего стоят - как я раньше без них жил.. :D ), потом постепенно рабочий проект переедет на 2017ю тоже. Пример приложения:
upload_2018-4-18_12-12-1.png upload_2018-4-18_12-12-44.png

Подскажите, как собрать в VS OpenWRT для Omega2+ ?
Недавно пробовал собрать под WSL openosd-esp32 редакции Espressif для платформы Windows, как-то знание VS совсем не помогли, как и рекомендации на сайтах ESP-IDF. :) Но всё-же удалось собрать, плюнув на описания от фанатов ESP-IDF... Это к тому, что пришлось разбираться самому, в том что установлено и что надо установить, да что поменять... Среда VS и знания по ней в данном случае никаким боком не поможет. А это всего типовые задачи, уровнем немного выше мигания светодиодом в Arduino...
Из этого выходит, что VS – это среда немного выше чем амбразура в Arduino. Позволяет создавать пользовательские приложения для мигания уже парой светодиодов :) , но не решает задач по созданию более сложных систем. Альтернатив у VS множество, но классическим так и остается сборка через make в среде Linux, используя любой редактор.
Толстый и жирный VS безуспешно пытается конкурировать с MC в linux или FAR в Windows. :)
Ну это уже будет скоро дискуссия как с определёнными пользователями тут (известных по перлам типа "10 кОм в затвор MOSFET от управляющей ножки для ШИМ и всё будет работать" и подобным). Если цель стоит именно собрать - то IDE и не нужна конечно, а если написание кода - то тут уже выбирает каждый сам, с чем ему удобнее работать.
Я к примеру ваш пример WEB свалки смог не меняя, экспортировать в Makefile проект для Linux и собрать без проблем. Для этого написал утилиту (далее её можно в расширение потом переделать), которая работает с проектными файлами VS, а их структура, что для 2015, что для 2017 - не меняется, поэтому и переписывать не требуется. И это безусловно не для ардуинщиков - я как бы и не пытаюсь предложить простейшее решение из коробки... ибо надо развиваться и изучать, а не тупо использовать готовое. (я к примеру изучение сборки makefile освоил именно благодаря Вашим проектам и своему желанию запустить это в VS, намучался, еще далеко не все понимаю, но все-равно я этому очень рад, т.к. не плохо расширил свои знания)

Еще из плюсов, к слову, встроенный клиент GitHub - очень удобно, пишешь проект и когда надо заливаешь, не отвлекаясь:
upload_2018-4-18_12-43-39.png
 
Последнее редактирование:

pvvx

Активный участник сообщества
Если цель стоит именно собрать - то IDE и не нужна конечно, а если написание кода - то тут уже выбирает каждый сам, с чем ему удобнее работать.
В таких случаях требуются мелкие коррекции, в которых как раз отследить зависимости бы, но тысячи файлов VS распарсить не можетЪ :( Итог: Ручками и поиском по проекту.. Т.е. и тут VS отпадает :)
 

A_D

Active member
В таких случаях требуются мелкие коррекции, в которых как раз отследить зависимости бы, но тысячи файлов VS распарсить не можетЪ :( Итог: Ручками и поиском по проекту.. Т.е. и тут VS отпадает :)
upload_2018-4-18_14-21-32.png
2017я парсит) Ваш проект RTL00_WEB без изменений экспортировал и пожалуйста - смотри, переходи, изменяй. Сегодня как раз докрутил экспорт списка папок, которые парсить и опробовал.
ЗЫ. со свеже созданным проектом правда еще косяк - отсутствие .vcxproj.filters сейчас поправил, создает сам, а с отсутствующими секциями в .vcxproj еще не поборол косяк - работает, если вначале сами вручную добавили пару файлов разного типа, а если не добавляли (просто голый проект) - пока не создает сам...
upload_2018-4-18_15-8-42.png
 
Последнее редактирование:

pvvx

Активный участник сообщества
Посмотреть вложение 6286
2017я парсит) Ваш проект RTL00_WEB без изменений экспортировал и пожалуйста - смотри, переходи, изменяй. Сегодня как раз докрутил экспорт списка папок, которые парсить и опробовал.
Сплошной файл автоДизасма->СИ всей ROM c либами "парсит"?
Eclipse требует изменения максимального кол-ва строк обработки в файле, при изменении тормозит - лаги :) Файл СИ псего-то 4 мегабайта :)
Без него как-то плохо писать - не видно что делают вызываемые функции...
 
Последнее редактирование:

A_D

Active member
Сплошной файл автоДизасма->СИ всей ROM c либами "парсит"?
Eclipse требует изменения максимального кол-ва строк обработки в файле, при изменении тормозит - лаги :)
Такое не проверял, врать не буду. И это уже специфичные задачи) То вначале вы ардуинщиков защищаете - мол вот сложно им же установить VS и т.п., то приводите в пример специфичный пример применения, который откровенно не для ардуинщиков.
Отсюда цель только одна виднеется - желание просто дискутировать на тему как плохо применять VS по любой причине ?
 

pvvx

Активный участник сообщества
Такое не проверял, врать не буду. И это уже специфичные задачи) То вначале вы ардуинщиков защищаете - мол вот сложно им же установить VS и т.п., то приводите в пример специфичный пример применения, который откровенно не для ардуинщиков.
Отсюда цель только одна виднеется - желание просто дискутировать на тему как плохо применять VS по любой причине ?
Дискутирование не по поводу VS. Это вы её защищаете. Проблемс во всех оболочках. Их функциональность от простого редактора текста далеко не ушла и многие обходятся без таких оболочек от слова сопсем. На этом построены все проекты собираемые под Linux...
 

A_D

Active member
Дискутирование не по поводу VS. Это вы её защищаете.
Ну я предлагаю просто вариант пути, а вы по любому поводу откидываете VS (т.е. а-ля нападаете), начиная от простейших предлогов и заканчивая уже специфическими, просто по порядку проходясь по всем - опять же, если не нравится - то можно и не использовать, я ведь не навязываю...

Проблемс во всех оболочках. Их функциональность от простого редактора текста далеко не ушла и многие обходятся без таких оболочек от слова сопсем. На этом построены все проекты собираемые под Linux...
В этом как по мне и странность... если есть возможность использования не просто блокнота, а удобного редактора\IDE - зачем есть кактусы. Ну опять же дело вкуса.)

ЗЫ. Для меня главное - пока я разбираюсь в этом, я получаю опыт. И в С# и в построении си makefile проектов.
А далее уже этот опыт можно применить к написанию linux программ для встраиваемых систем, iMX6 или других. Если получится нормально сделать с использованием VS - то это будет только в плюс для работы.
По возможности делюсь наработками (опытом) - а далее уже решать тому, кто читает\смотрит на наработки - использовать\перенять\подсказать\хаить и т.д.
 

pvvx

Активный участник сообщества
Ну я предлагаю просто вариант пути, а вы по любому поводу откидываете VS (т.е. а-ля нападаете), начиная от простейших предлогов и заканчивая уже специфическими, просто по порядку проходясь по всем - опять же, если не нравится - то можно и не использовать, я ведь не навязываю...
А я интересуюсь, в чем "прелесть" VS.
В этом как по мне и странность... если есть возможность использования не просто блокнота, а удобного редактора\IDE - зачем есть кактусы. Ну опять же дело вкуса.)
Вкус тут на последнем плане. Во всех IDE надо затратить время на "встраивание готового проекта" в них, что не окупается.
Когда опыта достаточно для перевода проекта в любую IDE, то это не вкус, а привычка.
 

A_D

Active member
А я интересуюсь, в чем "прелесть" VS.
Дык выше же писал:
Мне к примеру удобно использовать одну IDE, тем более с кучей удобств в плане рефакторинга и написания кода, может кто то так же думает - почему бы не поделится инфой...
Вкус тут на последнем плане. Во всех IDE надо затратить время на "встраивание готового проекта" в них, что не окупается.
Когда опыта достаточно для перевода проекта в любую IDE, то это не вкус, а привычка.
Ну у меня видимо да, больше привычка уже. Но не вижу ничего плохого, если можно использовать один инструмент, а не зоопарк держать на ПК.. (конечно без фанатизма, если быстро не переводится - то смысла заниматься портированием мало)
 

pvvx

Активный участник сообщества
Дык выше же писал:
Я думал что напишите что более технически интересное... Например как проще собрать проект с нуля на VS к примеру на Omega2+ не LEDE с OpenWRT, а что-то типа FreeBSD(PicoBSD/NanoBSD) или ещё проще на RTOS...
Ну у меня видимо да, больше привычка уже. Но не вижу ничего плохого, если можно использовать один инструмент, а не зоопарк держать на ПК.. (конечно без фанатизма, если быстро не переводится - то смысла заниматься портированием мало)
А как без зоопарка, если у всех свои привычки, а нормальный проект составляется из суммы разных кусков? Это же не светодиодом моргать в Arduino.
Для мигалок уже есть всякие платные проприетарные расширения к VS...
VS это как Arduino - покупаете готовые модули, к которым в цену уже входят либы к ней. Китайские подделки не в счет - они в софт не вкладывались и за счет этого и существуют...
 
Последнее редактирование:
Сверху Снизу