Прошивка TCP2UART переходника с настройкой по Web

oleg_777

New member
Уважаемый pvvx.

Помогите сделать фичу ту, что я описал выше, а то голова идет кругом от исходников. Ведь для вас это легкое дело, а для меня просто виселица (я с С вообще не знаком.).

Плиз, плиз, плиз ...
 

pvvx

Активный участник сообщества
Уважаемый pvvx.

Помогите сделать фичу ту, что я описал выше, а то голова идет кругом от исходников. Ведь для вас это легкое дело, а для меня просто виселица (я с С вообще не знаком.).

Плиз, плиз, плиз ...
Неа. На это наложено табу. :) (в принципе и на все с ESP8266)
Возможна передача и прием в UART только через websocket как бинарных данных...
 

pvvx

Активный участник сообщества

vad7

Active member
@pvvx, у меня на планшете выдавал какую-то ошибку, уже не помню какую, вылечилось этим.
Возможно и по другому вылечить можно. Щас работает, а новые проблемы буду решать по мере поступления...
 

oleg_777

New member
Два дня мучений и сделал фичу о которой просил ранее. Тестировал вроде все работает отлично.

pvvx посмотри и если нормально то можешь включить это в репозитарий.

Надеюсь это многим пригодиться.

Все ушел делать HMI интерфейсы к своим устройствам. :)
 

Вложения

pvvx

Активный участник сообщества
Все ушел делать HMI интерфейсы к своим устройствам. :)
HMI без websocket? На устаревшей ajax? На HTML5 и SSL/TSL у ESP8266 критически не хватает ресурсов, а ESP-32S - это всего альфа версия и слишком много закрытого кода (т.е. только для энтузиастов-мазохистов).
Сильно страдает интерактивность. Всё это планируется на RTL871x, т.к. там больше ресурсов, да есть RTOS и они устойчивее по всем параметрам и стандартизирован внутренний интерфейс api и mbed, что дает возможность переноса приложений и на другие модули с ARM. Но пока дорабатывается SDK и никак не успеть всё и сразу :)
Уже выходят новые RTL871xBx - скоро в продаже...
По этому с любыми доработками на ESP8266 уже завязал. Только исправление ошибок в проекте web-свалки в качестве "поддержки", и то по указанию пользователей. На них уже и времени жалко - устарели.
 
Последнее редактирование:

oleg_777

New member
Понятно, но мне деваться некуда, т.к. были закуплены 50 шт. ESP-12E.

А потом буду с нетерпением ждать, все этого на базе RTL871x.

Но вы все равно добавьте ajax фичу в RTL871x, т.к. в IE11 это единственная возможность (при работе в локалке). А таких пользователей в ближайшие годы будет еще много.
 

oleg_777

New member
В архиве есть файл readme.txt
работает следующим образом:
отправляем запрос (можно на любую страницу), например:
http://sesp8266/uart.htm?uart_data=Fe0045

где Fe0045 - это бинарные данные в hex кодировке

получаем ответ (тоже бинарные данные в hex кодировке) через макрос ~uart_data~ или ~uart_data_tmo_100~

где 100 - это таймаут в миллисекундах.

только коммитте с учетом того что, я использовал исходники из версии 0.6.2, а сейчас у вас что-нибудь изменилось.
 

aloika

Active member
отправляем запрос (можно на любую страницу), например:
http://sesp8266/uart.htm?uart_data=Fe0045

где Fe0045 - это бинарные данные в hex кодировке

получаем ответ (тоже бинарные данные в hex кодировке) через макрос ~uart_data~ или ~uart_data_tmo_100~

где 100 - это таймаут в миллисекундах.
А как связан запрос с ответом?
 

pvvx

Активный участник сообщества
Блин - ну сказано же уже - websocket c бинарными данными.
В web-свалке стоит заглушка на бинарные данные в нем. Меняете на прием передачу блоков в UART. Прием должен проверять, что открыт websocket и передавать в него. Если websocket закрыт, то принимаемые данные по UART просто скипаются.
Это позволяет КАК УГОДНО работать с UART на web странице. Можно сделать простой WEB-UART терминал на javascript. Но он будет конфликтовать с TCP2UART каналом.
Так-же, такое решение не позволяет работать с UART в многопользовательском варианте - не известно какие данные с UART пришли для какого пользователя, если даже от каждого открытого одновременно сеанса пользователя мы можем послать всё в UART.
А предложенное oleg_777 - это костыль для ajax с тысячами ограничений.
Представьте двух пользователей или открытых окон в браузере, опрашивающих uart.htm. Они не дождутся ответа на свой запрос, т.к. ответ выдаст первому опросившему uart.htm, после ответа внешнего устройства по UART. :)
Хочется баловаться - балуйтесь... :) HMI на таких глупостях не будут работать. Это дет-сад и Arduino.
Вставил, т.к. надоело бороться с детсадом - пусть он и там растет :)
 
Последнее редактирование:

oleg_777

New member
Протестировал работу на одновременные запросы.
Сделал страницу запрашивающую по ajax с периодом от 200 до 300 мс. Открыл таких вкладок по 3 шт. в 3 разных браузерах. На странице сделал проверку принятых данных. Бывает раз в 1000 запросов, какой-либо запрос теряется, но не портиться и не вклинивается в другой, так что статус равен 0, и это можно обработать.

Я прекрасно понимаю pvvx в вопросе надежности таких вещей, но т.к. uart не подрузамевает многопользовательскую работу, то и такой результат более чем достаточен, если другого способа нет.

В моих устройствах в протоколе uart используется подобие modbus (только без адресации), поэтому целостность данных более менее проверяема.

Также можно вставить код на проверку открытого канала tcp2uart и не выполнять ajax запросы если он открыт.

Это решение мне подходит тем, что у моих устройств уже есть каналы общения с пользователем:
1) Родной экран и кнопки
2) USB-UART-TTL переходник
3) Bluetooth переходник
А теперь еще и WiFi ESP8266, так что меня устраивает.

Также вопрос к pvvx:

Если сервер парсить страницу (1), то в это время если поступает другой запрос, сервер одновременно начинает парсить и эту страницу (2) или ждет окончания парсинга страницы (1).
Т.е. ос вытесняющая или другая?
Как можно задействовать мьютексы?
И что происходить, если в коде парсинга встречается os_delay_us ?

Я использовал файл web_int_callbacks.c от версии 0.6.2 а при коммите он у вас вырезал ваш код add uart_ajax @oleg_777 · pvvx/esp8266web@8ac1fde · GitHub

Вот прикрепил правильный файл.
 

Вложения

Последнее редактирование:

pvvx

Активный участник сообщества
Как можно задействовать мьютексы?
Нету в NON OS мультизадачности. Всё работает последовательно по событиям.
Не последовательно (вклиниваются) только аппаратные прерывания.
>И что происходить, если в коде парсинга встречается os_delay_us ?
Всё, кроме прерываний останавливается.
>Я использовал файл web_int_callbacks.c от версии 0.6.2 а при коммите он у вас вырезал ваш код
Я не брал ваши исходники, а вставил в свои, то что надо было. Исключены обрашения к TSF...
 
Последнее редактирование:

oleg_777

New member
Спасибо за ответы, я так и думал, почему все прекрасно заработало без сбоев. На freertos (RTL871x) придеться с мьютексами (или еще как) делать значит.

И еще раз спасибо вам за ваши усилия, вы просто с этой прошивкой сделали мою мечту осуществимой.

P.S. читая ваши посты, понимаешь насколько вы глубоко и правильно мыслите, так что не обращайте внимания на нашу критику, мы просто иногда не догоняем вас. :oops:
 

safari

New member
Всем добрый вечер.
А может ли глубоко уважаемая мной прошивка TCP2UART(использую больше года в одном проекте) одновременно быть и клиентом и севером?
Необязательно для разных UART, можно и на одном висеть.
 

pvvx

Активный участник сообщества
Всем добрый вечер.
А может ли глубоко уважаемая мной прошивка TCP2UART(использую больше года в одном проекте) одновременно быть и клиентом и севером?
Необязательно для разных UART, можно и на одном висеть.
Одновременно - нет. Необходимо переделывать и дополнять.
 

alex35567

New member
Здравствуйте! Уважаемый pvvx, подскажите пожалуйста как заставить оверлей wdrv запускать генерацию при запуске (перезагрузке) модуля? Пробовал по всякому в init.ini настраивать, добился только чтобы оверлей загружался при перезапуске модуля, а чтобы запустить генерацию надо в веб интерфейсе старт нажимать...
Пробовал и ovl$=1 и ovl$=2.
 
Сверху Снизу