pvvx
Активный участник сообщества
С некоторыми переменными используется область данных буфера modbus, по тому и вызывается...например, он вызывает init_mdbtab() при включении RS485DRV даже, если MODBUS отключен в конфигурации.
С некоторыми переменными используется область данных буфера modbus, по тому и вызывается...например, он вызывает init_mdbtab() при включении RS485DRV даже, если MODBUS отключен в конфигурации.
версия 0.6.3 у меня тоже не собралась а версия 0.6.4 собраласьПоследняя версия с github не собирается в режиме rs485. Используется функция из файла tcp2uart, который в конфигурации rs485 не включен в трансляцию:
EDIT: Рекомендацию закомментировать ветку с uart_data я видел. Но с учетом того, что мелкие исправления из RTL варианта, как пишется, попадают и в ESP, было бы логичным поправить код так, чтобы стандартные варианты проектов (0, 1, 2) исходно транслировались.Код:web_int_callbacks.c: In function 'web_int_callback': web_int_callbacks.c:497:7: error: implicit declaration of function 'tcp2uart_ajax_rx' [-Werror=implicit-function-declaration] tcp2uart_ajax_rx(ts_conn, tmo);
С этим-то я уже разобрался. А вот основной вопрос остался без ответа, к сожалению. Ну да ладно, что-то сделаю.С некоторыми переменными используется область данных буфера modbus, по тому и вызывается...
Я обычно беру версию из git, считая ее априори последней. Не собирается мастер, и в релизах последняя 0.6.3. Где искать 0.6.4 - не знаю.версия 0.6.3 у меня тоже не собралась а версия 0.6.4 собралась
Дык исправьте "ругающиеся" обращения ...Пришлось отключить этот warning, ибо, иначе надо переделывать описание modbus table. В основном коде все хорошо. На винде собирается все компилятором из UDK (4.8.1, вроде).
Там реализован неполный алгоритм выбора файлов для сжатия, по этому не позволил использовать его в web-свалке.И спасибо @Neov: с небольшими доработками его питоновский вариант WebFS утилиты для генерации web-диска заработал, как надо.
MacOS тут ни причем. Речь о том, что приведение типов вида:Дык исправьте "ругающиеся" обращения ...
У меня нет MacOS (и наверно никогда не будет - не люблю) и код написан для компилятора UDK c виндой.
Я не знаю, в какой версии было неправильно. Но в текущей версии с моим патчем все работает корректно, а размер сжатого файла получается меньше. Если файл помечен как динамик, но переменных нет - он сжимается. Списки исключения для несжатия там тоже работают. Там действительно были проблемы в реализации этого (списки не работали корректно), что и исправлено моим патчем, но с ним все в порядке.Там не полный алгоритм - надо ещё проверку на включение в файлы переменных, а если их там нет то сжимать. Так-же, в оригинале, есть ещё список исключения для файлов которые не сжимать, кроме указания "сжимаемых"...
Если в проекте будет web-диск побольше, то это сразу скажется. По этой причине использовать текущий вариант не получилось - итоговый вариант диска получается сильно больше, чем у "оригинала".
./webfs_tool.py build -d "*.htm, *.html, *.cgi, *.xml, *.bin, *.txt, *.wav" -n "mdbini.bin, *.inc, *.ini, snmp.bib, *.ovl" -s ./WEBFilesTCP2UART ./webbin/WEBFiles.bin
В общем случае web-свалка не является примером для изучения СИ или других стандартов описания. По этому ваши претензии не катят. Тогда уж исправляйтье всё, включая и алгоритмы, т.к. они не являются общепринятыми и не годятся для "в общем случае" и вообще для примеров программирования.MacOS тут ни причем. Речь о том, что приведение типов вида:
[inline]#define drv_host_ip ((ip_addr_t *)mdb_buf.ubuf)[42>>1][/inline],
где элементы ubuf имеют тип uint16_t, само по себе формально влечет undefined behavior, что может быть приемлемым в случае конкретного компилятора (что и делается путем -Wno-strict-aliasing), но никуда не годится в общем случае.
У меня нет привычки перебивать чужие копирайты и я не занимаюсь коммерческими проектами на ESP8266. Просто у меня завалялось несколько модулей, которые хотелось к чему-то пристроить, чтобы не выкидывать. И тут вылезла неприятная привычка делиться опытом (не важно, своим кодом или найденным решением чужой проблемы). Видимо, тут это не нужно.И если хотите что-то исправить - исправляете и переписываете в свой git со своим "(c)", да занимаетесь поддержкой. Это приветствуется и я не отказываюсь от помощи в этом любому...
Есть же все исходники, а что надо выкинуть для специфики вашего варианта я не знаю. Описывать тут трактат что надо сделать или встраивать ещё одну ветку сборки в исходники долго, т.к. больше не желаю связываться с глюкодромом ESP8266.А вот на заданный вопрос о наиболее простой реализации полудуплексного RS-485 я ответа так и не увидел.
В одно предложение или даже ограничение на размер поста на форуме это не укладывается. По тому ответа и нет. Ещё раз - там нет классического стиля структурированного программирования и понятий "отдельный драйвер". Иначе это не лезет в стандартную flash модуля и/или работает с дикими ограничениями.Ну вообще ожидался ответ вида:
"Полудуплексный TCP2RS485 поддерживается из коробки, для чего в прошивке RS485 надо запретить работу Modbus установкой X и разрешить работу полудуплексного RS-485 через TCP установкой Y".
Или
"Из коробки драйвер RS485 привязан только к Modbus. Для получения желаемого надо отключить Modbus (командой Z, так как исключить из трансляции не выйдет из за внутренних завязок) и написать свой обработчик по аналогии с TCP2UART, но через RS485DRV".
Ключевой момент вопроса был: поддерживается ли такая конфигурация штатно (потому что если есть драйвер Serial и есть драйвер RS485, то вполне логично предположить, что второй может использоваться точно также, как и первый, без привязки к конкретному протоколу). К сожалению, ответа не получил.
А за исходники спасибо - да, сделать можно все. Просто с учетом бесперспективности модуля хотелось сэкономить время, причем, не за счет времени автора, а за счет того, что он знает архитектуру системы и может дать мгновенный ответ в одно предложение, в которой в противном случае придется ковыряться. Но, как я уже писал, вопрос снят. На этого монстра писал драйверы и приложения в ранних восьмидесятых, и сейчас еще не все позабыл
Ответ был в вашем вопросе:Ещё раз повторю: меня интересовало, предусмотрена ли в том, что уже есть, возможность работы моста полудуплексного RS-485 через TCP без использования Modbus (при определенной конфигурации свалки) или нет.
Ожидался ответ вида:
- да, включить переменные X=off, Y=on, и установить порт через Z=P, либо
- да, только на этапе компиляции (#define RS485DRV, #undef TCP2UART, #undef MODBUS), либо
- нет без переписывания кода.
Не более того.
в котором последнее предложение гласит, что надо переписывать. А моё молчание - знак согласия с вашим-же утверждением.Насколько я вижу, вариант TCP2UART мне не подходит - в нем нет драйвера RS-485 с управлением направлением передачи. А вариант RS485 содержит MODBUS, который мне не нужен. Итого, вопрос: можно ли штатно сконфигурировать второй вариант (RS485) в режиме TCP2RS485 на отдельном порту, запретив MODBUS? Если нет, то тогда, видимо, нужно делать свой вариант, используя драйвер RS485 без MODBUS, для чего придется править основной код (например, он вызывает init_mdbtab() при включении RS485DRV даже, если MODBUS отключен в конфигурации).
Посмотрите в сторону железа. Есть драйвер 485 интерфейса с авто переключением прем-передача max13487Ещё раз повторю: меня интересовало, предусмотрена ли в том, что уже есть, возможность работы моста полудуплексного RS-485 через TCP без использования Modbus (при определенной конфигурации свалки) или нет.
Ожидался ответ вида:
- да, включить переменные X=off, Y=on, и установить порт через Z=P, либо
- да, только на этапе компиляции (#define RS485DRV, #undef TCP2UART, #undef MODBUS), либо
- нет без переписывания кода.
Не более того.
То, с чем борется oswn - как вырезать автоматический стек-очередь управления транзакциями Modbus, стоящий между программным драйвером RS-485 и TCP, когда сам программный драйвер RS-485 адаптирован на данное применение и скорость обработки пакетов по протоколу Modbus.Посмотрите в сторону железа. Есть драйвер 485 интерфейса с авто переключением прем-передача max13487
Это проблема "Свободного программного обеспечения" созданная в его корне Ричардом Столлманом из-за включения в само понятие и дальнейшее его развитие лицензирования и авторства. Это сильно проявлено в дальнейшем - в GPL. GPL вообще уже свободным не является, т.к. при получении исходных кодов в нем заложены обязательства и ограничения ваших действий - вы обязаны сопровождать (с) на авторское право. В итоге это всё является бомбой, заложенной в основание "Свободного программного обеспечения" и тормозящее его развитие. По этому на сегодня и не имеется корректных и простых путей создания переносимого ПО, добавки исправлений/улучшений и т.д.А нет никаких претензий!
Просто я понимаю, что на данный момент это лучшая реализация subj. И я не один, кто проявляет к ней интерес несмотря на то, что развитие прекращено. И что вопрос о том, почему последняя версия в git не собирается более новым компилятором, будет всплывать еще долго. Поэтому я посчитал полезным обратить внимание других на то, что такая-то проблема действительно есть, но обходится таким-то путем, после чего проект собирается на всех платформах (Windows, Linux, Mac).
Ну а будет ли оно правиться в официальном репозитории или нет - мне, в принципе, безразлично.
Поставить галочку в меню web: System Setup -> Captive Portal AP.как сделать так, что бы при подключении к esp8266 при наборе любого адреса в браузере происходила автоматическая переадресация на сайт вебсервера, что бы не гадать IP адрес?