Разработки ecoins для дисплея Nextion

ecoins
Полковник
Сообщения: 3423
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 36 раз
Поблагодарили: 29 раз

Разработки ecoins для дисплея Nextion

Сообщение ecoins »

Serg_Grn писал(а): 28 янв 2021, 23:16 Поделитесь, кто нибудь что нибудь понял, кроме Автора?
А то я собираюсь работать с панелькой, а предыдущие посты настораживают...
Попробуйте просто поработать с Nextion (например c примерами из Arduino IDE), потом с блоками которые есть в FLProg (желательно параметров хотя по 6-10 в обе стороны) - если у Вас все получится, то и наши предложения Вам не понадобятся.
В противном случае появятся конкретные вопросы.
---------------
P.S. Порог вхождения в дисплей Nextion ощутимо выше чем в LCD HD44780 -наверное имеет смысл оценить собственные силы и целесообразность.
Serg_Grn
Лейтенант
Сообщения: 333
Зарегистрирован: 11 фев 2018, 13:07
Имя: Сергей

Разработки ecoins для дисплея Nextion

Сообщение Serg_Grn »

ecoins писал(а): 28 янв 2021, 23:24 если у Вас все получится, то и наши предложения Вам не понадобятся
Пардон, как же у меня может всё получиться, если Ваши разработки, как я понял, и появились по причине не вполне удачных штатных блоков? Они же тормозят систему, как писалось выше...

В общем, чтоб не писать попусту ни о чём, я попробую, а там погляжу :) .
В любом случае, за Вашу работу и опубликованные результаты спасибо.
Gordon0007
Сержант
Сообщения: 138
Зарегистрирован: 19 апр 2018, 13:37
Имя: Павел

Разработки ecoins для дисплея Nextion

Сообщение Gordon0007 »

[ref]Serg_Grn[/ref], Я на 100% тоже не разобрался (но пока и времени не было свободного). Суть в следующем есть кучка переменных которая должна быть отправлена на дисплей и кучка переменных приходящая с панельки. Контроллер собирает эти несколько переменных и собирает в их оду общую и отправляет ее на дисплей с постоянной переодищностью, диспле принимает ее и разбивает обратно на кучку мелких. Обратно дисплей поступает аналогично собирает кучку битов (о сработке или нажатие "кнопок") группирует их в байт и отправляет их в контроллер, контроллер принимаемые байт разбивает на биты отправляя с постоянной переодичностью. Это как понял Я.
Если я правильно понял обмен происходит без подтверждения данных и посылается периодически, что позволяет ускорить передачу но занимает немного вычеслительной мощности у контроллер и панельки, так же ускорение происходит потому что не сыпятся много запросов и только ограниченное количество сгруппированых переменных.
если я не прав то [ref]ecoins[/ref] поправит
ecoins
Полковник
Сообщения: 3423
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 36 раз
Поблагодарили: 29 раз

Разработки ecoins для дисплея Nextion

Сообщение ecoins »

Gordon0007 писал(а): 29 янв 2021, 14:16 Если я правильно понял обмен происходит без подтверждения данных и посылается периодически, что позволяет ускорить передачу но занимает немного вычеслительной мощности у контроллер и панельки, так же ускорение происходит потому что не сыпятся много запросов и только ограниченное количество сгруппированых переменных.
Достаточно точно.
Дополнительно:
1.переменные посылаются только при изменении + с дополнительной контрольной посылкой 1 раз в 2 сек;
2.Из дисплея переменные приходят с контрольной суммой - если она не верно, ожидается следующий пакет;
3.Контроллер выполняет обмен (RX,TX) через буфер вывода - нет "торможения" при обмене;
4.При выводе в дисплей выполняется контроль заполненности буфера вывода - это позволяет избежать потерь данных при интенсивном изменении параметров в контроллере.
----------
Успехов.
----------
P.S. Некоторое время (1-2 месяца) развитием библиотеки Nextion заниматься не будем - переключились на другую задачу. На вопросы отвечать будем оперативно.
Serg_Grn
Лейтенант
Сообщения: 333
Зарегистрирован: 11 фев 2018, 13:07
Имя: Сергей

Разработки ecoins для дисплея Nextion

Сообщение Serg_Grn »

[ref]Gordon0007[/ref], спасибо за информацию!
ecoins
Полковник
Сообщения: 3423
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 36 раз
Поблагодарили: 29 раз

Разработки ecoins для дисплея Nextion

Сообщение ecoins »

В первом посте выложил новую версию библиотеки для Nextion.
В тесте используются датчики DS1820,DHT22,HC-SR04.
Используемая концепция необычна - два мастера.
Обмен через UART с использованием аппаратных буферов - тест не тормозит совсем.
Реагирует на кнопки с обоих сторон визуально мгоновенно.
Nextion.jpg
Стенд MEGA2560.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ecoins
Полковник
Сообщения: 3423
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 36 раз
Поблагодарили: 29 раз

Разработки ecoins для дисплея Nextion

Сообщение ecoins »

16.08.21 Обновление: исправлены ошибки, добавлены функции для STM32, в многофункциональном генераторе добавлен счетчик моточасов.
Изменения в 1-ом посте.
тут viewtopic.php?t=6942&start=80#p105849 тест:============
Что делает тест:
1.Выводит на консоль параметры платы с перечнем доступных пинов (цифровой и буквенной форме).
2.Вызов плат выполняется диспетчер.
3.Сенсоры - DHT22,DS1820,HTU21.
4.Опрашивается аналоговый ввод (потенциометр) - результат выводится на пин PWM (управление яркостью светодиода) и на дисплеи.
5.Три дисплея: 1) HD44780 16x2 i2c; 2)HD44780 20x4 i2c; 3) Nextion 8" UART.
Вывод на дисплеи внешне мгновенный - глаз не отличает, на слух тоже.
6.Вывод через SPI на регистр 74HC595 - светодиоды бегают со сменой 100мс. Можно сделать и меньше (даже меньше 1 мс) - но глаз различать не будет.
7.Вывод через i2c на два регистра MCP23017 - на один со счетчика "Пила", на другой со счетчика "Треугольник" - светодиоды быстро бегают (50мс).
8.Кнопка с защитой от дребезга 50мс - вывод на дисплеи.
------------------
Все очень быстро и без "тормозов".
Аватара пользователя
dekorator
Лейтенант
Сообщения: 427
Зарегистрирован: 06 сен 2015, 09:39
Откуда: Баку

Разработки ecoins для дисплея Nextion

Сообщение dekorator »

5.Из MCU транзакции отправляются по изменению или 1 раз в сек. Отправка по периоду не работает. Работает отправка только по изменению переменной.
Версия FL -7.4.2 MEGA2560. EIS.01.СИСТЕМА вер.1.22
ecoins
Полковник
Сообщения: 3423
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 36 раз
Поблагодарили: 29 раз

Разработки ecoins для дисплея Nextion

Сообщение ecoins »

dekorator писал(а): 30 дек 2021, 04:16 5.Из MCU транзакции отправляются по изменению или 1 раз в сек. Отправка по периоду не работает. Работает отправка только по изменению переменной.
Версия FL -7.4.2 MEGA2560. EIS.01.СИСТЕМА вер.1.22
Так и задумано, чтобы не перегружать UART (чтобы буфер передачи не перегружался). Отправка по изменению, но не чаще чем установлен период.
И контрольные (для надежности, при обрыве связи и т.п.) 1 раз в сек.
При таком алгоритме разгружаются MCU и UART.
Аватара пользователя
dekorator
Лейтенант
Сообщения: 427
Зарегистрирован: 06 сен 2015, 09:39
Откуда: Баку

Разработки ecoins для дисплея Nextion

Сообщение dekorator »

ecoins писал(а): 30 дек 2021, 12:12Так и задумано
Можно как-то подправить? Или объясните как, я сам попробую. Нужны актуальные данные раз в секунду.
ecoins
Полковник
Сообщения: 3423
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 36 раз
Поблагодарили: 29 раз

Разработки ecoins для дисплея Nextion

Сообщение ecoins »

dekorator писал(а): 30 дек 2021, 12:22 ожно как-то подправить? Ил
dekorator писал(а): 30 дек 2021, 12:22 Можно как-то подправить?
Да, конечно. Но не вполне понимаю проблему. Вроде обеспечивает передачу всех новых данных в Nextion? Или не так?
dekorator писал(а): 30 дек 2021, 12:22 Или объясните как, я сам попробую.
Отправка осуществляется функцией SetVal () в библиотеке - файл RT_HW_NEXT.cpp - строки 127-134.
dekorator писал(а): 30 дек 2021, 12:22 Нужны актуальные данные раз в секунду.
Вроде обеспечивает передачу всех новых данных в Nextion? Или не так?
KulibinOrsk
Лейтенант
Сообщения: 516
Зарегистрирован: 25 фев 2018, 08:48
Откуда: Оренбург
Имя: Александр

Разработки ecoins для дисплея Nextion

Сообщение KulibinOrsk »

[ref]ecoins[/ref], подскажите - если использовать панель просто как дисплей то нужно ли в Nextion что то загружать, обновлять, менять или достаточно просто использовать ваши блоки в FLProg для ардинки ?
Честно говоря не очень хочется вникать в программирование самой панели для использования сенсорной панели поэтому использую просто как дисплей для вывода информации с датчиков (хотя может от того что не попадалось описание на русской для программирования панели)
Аватара пользователя
dekorator
Лейтенант
Сообщения: 427
Зарегистрирован: 06 сен 2015, 09:39
Откуда: Баку

Разработки ecoins для дисплея Nextion

Сообщение dekorator »

ecoins писал(а): 30 дек 2021, 13:11 Вроде обеспечивает передачу всех новых данных в Nextion? Или не так?
Конечно так.
Но актуальные не всегда новые!!!!
Например, если дисплей что-то пропустит или перезагузится, то данные на экране будут те что по умолчанию (Initial value--). Если в MCU не будет изменений передаваемой переменной долго, например час, день, сутки...? Это нужно как типа страховка. Не обязательно же слать повторно данные каждую миллисекунду, тогда конечно что хочешь забьется)))

Отправлено спустя 1 час 59 минут 59 секунд:
ecoins писал(а): 30 дек 2021, 12:12 Отправка по изменению, но не чаще чем установлен период.
Может можно добавить отдельный вход или параметр и возможность отправлять по изменению на входе "en", без ожидания новых данных (обязательно - отличающихся) от предыдущих?

Что тут изменить чтобы отправлялось принудительно, один раз за период ms, указав период в настройке блока?

Код: Выделить всё

if(id.dir==1) {							      //==check условий на вывод (периодичность && изменение переменной;
 if(id.run==1){id.dir=2; return;}							//--check готовности переменной для вывода;
 if(id.agoBlink==ptr[id.num]->blink) {return;}				//--check на изменение тика от тактового генератора;
 id.agoBlink=ptr[id.num]->blink;							//--reservation нового значения от тактового генератора;
 if(++id.cnt<id.tick) {return;}								//--waiting периода вывода;
 id.cnt=0;													//--reset счетчика тиков;
 if(id.agoVal==val)   {return;}								//--check на изменение переменной;
 id.run=1; id.dir++;}										//--goto на этап вывода переменной;
Отправлено спустя 20 минут 19 секунд:
ecoins писал(а): 29 янв 2021, 16:30 Если я правильно понял обмен происходит без подтверждения данных и посылается периодически,
ecoins писал(а): 29 янв 2021, 16:30 Достаточно точно.
Не достаточно точно. Это на половину точно. Точно только в направлении дисплей ---> контроллер. А из контроллера в дисплей, если данные не изменятся, то можно ждать отправки вечность и так и не дождаться.
ecoins
Полковник
Сообщения: 3423
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 36 раз
Поблагодарили: 29 раз

Разработки ecoins для дисплея Nextion

Сообщение ecoins »

dekorator писал(а): 30 дек 2021, 15:52 Что тут изменить чтобы отправлялось принудительно, один раз за период ms, указав период в настройке блока?
Закомментировать строку и не будет пропусков вывода если данные не изменились.
//if(id.agoVal==val) {return;} //--check на изменение переменной;
Может быть со временем добавим флаг на эту проверку, который можно будет менять в блоке FLProg.
dekorator писал(а): 30 дек 2021, 15:52 Не достаточно точно. Это на половину точно. Точно только в направлении дисплей ---> контроллер. А из контроллера в дисплей, если данные не изменятся, то можно ждать отправки вечность и так и не дождаться.
MCU только ждет посылок из Nextion и "распихивает" принятые байты по соответствующим регистрам.
Отправкой из Nextion занимается скрипт, который прописывается в Nextion. Он может быть написан по разному.
Образцы, которые мы выкладываем содержат следующий алгоритм - отправка посылки по изменениям, но реже 1 раз в сек.
Устойчивость связи не сложно проверить - отключайте/подключайте кабель и убедитесь, что связь восстанавливается.
ecoins
Полковник
Сообщения: 3423
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 36 раз
Поблагодарили: 29 раз

Разработки ecoins для дисплея Nextion

Сообщение ecoins »

Отправлено спустя 4 минуты 11 секунд:
KulibinOrsk писал(а): ↑Сегодня{, 10:30}
ecoins, подскажите - если использовать панель просто как дисплей то нужно ли в Nextion что то загружать, обновлять, менять или достаточно просто использовать ваши блоки в FLProg для ардинки ?
Честно говоря не очень хочется вникать в программирование самой панели для использования сенсорной панели поэтому использую просто как дисплей для вывода информации с датчиков (хотя может от того что не попадалось описание на русской для программирования панели)
------
Нужно.
Последний раз редактировалось ecoins 30 дек 2021, 17:16, всего редактировалось 1 раз.
ecoins
Полковник
Сообщения: 3423
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 36 раз
Поблагодарили: 29 раз

Разработки ecoins для дисплея Nextion

Сообщение ecoins »

KulibinOrsk писал(а): 30 дек 2021, 13:30 ecoins, подскажите - если использовать панель просто как дисплей то нужно ли в Nextion что то загружать, обновлять, менять или достаточно просто использовать ваши блоки в FLProg для ардинки ?
Честно говоря не очень хочется вникать в программирование самой панели для использования сенсорной панели поэтому использую просто как дисплей для вывода информации с датчиков (хотя может от того что не попадалось описание на русской для программирования панели)
Отправлено спустя 4 минуты 11 секунд:
Еще как нужно.
Как минимум надо создать элементы - индикаторы, окошки и прочее.
У них появляются идентификаторы - по ним уже можно записывать в Nextion значения для индикации.
Если один экран, то попроще. Если несколько экранов, то несколько посложнее.
Аватара пользователя
dekorator
Лейтенант
Сообщения: 427
Зарегистрирован: 06 сен 2015, 09:39
Откуда: Баку

Разработки ecoins для дисплея Nextion

Сообщение dekorator »

ecoins писал(а): 30 дек 2021, 17:11 Устойчивость связи не сложно проверить - отключайте/подключайте кабель и убедитесь, что связь восстанавливается.

Так и проверялось. Связь восстанавливается, но без закоментирования - id.agoVal==val) {return;}, данные на дисплее не обновляются. На дисплее "0". В контроллере есть актуальные но не новые данные, и соответственно они в дисплей не отсылаются.
Кстати, закоментировать надо и строку 160.
ecoins
Полковник
Сообщения: 3423
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 36 раз
Поблагодарили: 29 раз

Разработки ecoins для дисплея Nextion

Сообщение ecoins »

dekorator писал(а): 30 дек 2021, 17:50 Так и проверялось. Связь восстанавливается, но без закоментирования - id.agoVal==val) {return;}, данные на дисплее не обновляются. На дисплее "0". В контроллере есть актуальные но не новые данные, и соответственно они в дисплей не отсылаются.
Кстати, закоментировать надо и строку 160.
Интересные результаты. Буду иметь ввиду. В следующей версии поправим.
KulibinOrsk
Лейтенант
Сообщения: 516
Зарегистрирован: 25 фев 2018, 08:48
Откуда: Оренбург
Имя: Александр

Разработки ecoins для дисплея Nextion

Сообщение KulibinOrsk »

[ref]ecoins[/ref], Доброе утро. А нет ли случаем руссифицированного ПО для NEXTION ? Или может имеется какое никакое описание на русском ? Ссылочку если не трудно.
ecoins
Полковник
Сообщения: 3423
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 36 раз
Поблагодарили: 29 раз

Разработки ecoins для дисплея Nextion

Сообщение ecoins »

KulibinOrsk писал(а): 08 янв 2022, 07:06 ecoins, Доброе утро. А нет ли случаем руссифицированного ПО для NEXTION ? Или может имеется какое никакое описание на русском ? Ссылочку если не трудно.
http://nextion.info/
https://www.mcu4you.ru/videokursy/
Ответить

Вернуться в «Команда ecoins»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей