Страница 3 из 19

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

Добавлено: 28.01.2021{, 23:24}
ecoins
Serg_Grn писал(а):
28.01.2021{, 23:16}
Поделитесь, кто нибудь что нибудь понял, кроме Автора?
А то я собираюсь работать с панелькой, а предыдущие посты настораживают...
Попробуйте просто поработать с Nextion (например c примерами из Arduino IDE), потом с блоками которые есть в FLProg (желательно параметров хотя по 6-10 в обе стороны) - если у Вас все получится, то и наши предложения Вам не понадобятся.
В противном случае появятся конкретные вопросы.
---------------
P.S. Порог вхождения в дисплей Nextion ощутимо выше чем в LCD HD44780 -наверное имеет смысл оценить собственные силы и целесообразность.

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

Добавлено: 29.01.2021{, 00:14}
Serg_Grn
ecoins писал(а):
28.01.2021{, 23:24}
если у Вас все получится, то и наши предложения Вам не понадобятся
Пардон, как же у меня может всё получиться, если Ваши разработки, как я понял, и появились по причине не вполне удачных штатных блоков? Они же тормозят систему, как писалось выше...

В общем, чтоб не писать попусту ни о чём, я попробую, а там погляжу :) .
В любом случае, за Вашу работу и опубликованные результаты спасибо.

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

Добавлено: 29.01.2021{, 14:16}
Gordon0007
Serg_Grn, Я на 100% тоже не разобрался (но пока и времени не было свободного). Суть в следующем есть кучка переменных которая должна быть отправлена на дисплей и кучка переменных приходящая с панельки. Контроллер собирает эти несколько переменных и собирает в их оду общую и отправляет ее на дисплей с постоянной переодищностью, диспле принимает ее и разбивает обратно на кучку мелких. Обратно дисплей поступает аналогично собирает кучку битов (о сработке или нажатие "кнопок") группирует их в байт и отправляет их в контроллер, контроллер принимаемые байт разбивает на биты отправляя с постоянной переодичностью. Это как понял Я.
Если я правильно понял обмен происходит без подтверждения данных и посылается периодически, что позволяет ускорить передачу но занимает немного вычеслительной мощности у контроллер и панельки, так же ускорение происходит потому что не сыпятся много запросов и только ограниченное количество сгруппированых переменных.
если я не прав то ecoins поправит

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

Добавлено: 29.01.2021{, 16:30}
ecoins
Gordon0007 писал(а):
29.01.2021{, 14:16}
Если я правильно понял обмен происходит без подтверждения данных и посылается периодически, что позволяет ускорить передачу но занимает немного вычеслительной мощности у контроллер и панельки, так же ускорение происходит потому что не сыпятся много запросов и только ограниченное количество сгруппированых переменных.
Достаточно точно.
Дополнительно:
1.переменные посылаются только при изменении + с дополнительной контрольной посылкой 1 раз в 2 сек;
2.Из дисплея переменные приходят с контрольной суммой - если она не верно, ожидается следующий пакет;
3.Контроллер выполняет обмен (RX,TX) через буфер вывода - нет "торможения" при обмене;
4.При выводе в дисплей выполняется контроль заполненности буфера вывода - это позволяет избежать потерь данных при интенсивном изменении параметров в контроллере.
----------
Успехов.
----------
P.S. Некоторое время (1-2 месяца) развитием библиотеки Nextion заниматься не будем - переключились на другую задачу. На вопросы отвечать будем оперативно.

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

Добавлено: 29.01.2021{, 23:11}
Serg_Grn
Gordon0007, спасибо за информацию!

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

Добавлено: 14.08.2021{, 21:02}
ecoins
В первом посте выложил новую версию библиотеки для Nextion.
В тесте используются датчики DS1820,DHT22,HC-SR04.
Используемая концепция необычна - два мастера.
Обмен через UART с использованием аппаратных буферов - тест не тормозит совсем.
Реагирует на кнопки с обоих сторон визуально мгоновенно.
Nextion.jpg
Стенд MEGA2560.jpg

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

Добавлено: 16.08.2021{, 23:03}
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мс - вывод на дисплеи.
------------------
Все очень быстро и без "тормозов".

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

Добавлено: 30.12.2021{, 04:16}
dekorator
5.Из MCU транзакции отправляются по изменению или 1 раз в сек. Отправка по периоду не работает. Работает отправка только по изменению переменной.
Версия FL -7.4.2 MEGA2560. EIS.01.СИСТЕМА вер.1.22

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

Добавлено: 30.12.2021{, 12:12}
ecoins
dekorator писал(а):
30.12.2021{, 04:16}
5.Из MCU транзакции отправляются по изменению или 1 раз в сек. Отправка по периоду не работает. Работает отправка только по изменению переменной.
Версия FL -7.4.2 MEGA2560. EIS.01.СИСТЕМА вер.1.22
Так и задумано, чтобы не перегружать UART (чтобы буфер передачи не перегружался). Отправка по изменению, но не чаще чем установлен период.
И контрольные (для надежности, при обрыве связи и т.п.) 1 раз в сек.
При таком алгоритме разгружаются MCU и UART.

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

Добавлено: 30.12.2021{, 12:22}
dekorator
ecoins писал(а):
30.12.2021{, 12:12}
Так и задумано
Можно как-то подправить? Или объясните как, я сам попробую. Нужны актуальные данные раз в секунду.

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

Добавлено: 30.12.2021{, 13:11}
ecoins
dekorator писал(а):
30.12.2021{, 12:22}
ожно как-то подправить? Ил
dekorator писал(а):
30.12.2021{, 12:22}
Можно как-то подправить?
Да, конечно. Но не вполне понимаю проблему. Вроде обеспечивает передачу всех новых данных в Nextion? Или не так?
dekorator писал(а):
30.12.2021{, 12:22}
Или объясните как, я сам попробую.
Отправка осуществляется функцией SetVal () в библиотеке - файл RT_HW_NEXT.cpp - строки 127-134.
dekorator писал(а):
30.12.2021{, 12:22}
Нужны актуальные данные раз в секунду.
Вроде обеспечивает передачу всех новых данных в Nextion? Или не так?

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

Добавлено: 30.12.2021{, 13:30}
KulibinOrsk
ecoins, подскажите - если использовать панель просто как дисплей то нужно ли в Nextion что то загружать, обновлять, менять или достаточно просто использовать ваши блоки в FLProg для ардинки ?
Честно говоря не очень хочется вникать в программирование самой панели для использования сенсорной панели поэтому использую просто как дисплей для вывода информации с датчиков (хотя может от того что не попадалось описание на русской для программирования панели)

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

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

Отправлено спустя 1 час 59 минут 59 секунд:
ecoins писал(а):
30.12.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.01.2021{, 16:30}
Если я правильно понял обмен происходит без подтверждения данных и посылается периодически,
ecoins писал(а):
29.01.2021{, 16:30}
Достаточно точно.
Не достаточно точно. Это на половину точно. Точно только в направлении дисплей ---> контроллер. А из контроллера в дисплей, если данные не изменятся, то можно ждать отправки вечность и так и не дождаться.

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

Добавлено: 30.12.2021{, 17:06}
ecoins
dekorator писал(а):
30.12.2021{, 15:52}
Что тут изменить чтобы отправлялось принудительно, один раз за период ms, указав период в настройке блока?
Закомментировать строку и не будет пропусков вывода если данные не изменились.
//if(id.agoVal==val) {return;} //--check на изменение переменной;
Может быть со временем добавим флаг на эту проверку, который можно будет менять в блоке FLProg.
dekorator писал(а):
30.12.2021{, 15:52}
Не достаточно точно. Это на половину точно. Точно только в направлении дисплей ---> контроллер. А из контроллера в дисплей, если данные не изменятся, то можно ждать отправки вечность и так и не дождаться.
MCU только ждет посылок из Nextion и "распихивает" принятые байты по соответствующим регистрам.
Отправкой из Nextion занимается скрипт, который прописывается в Nextion. Он может быть написан по разному.
Образцы, которые мы выкладываем содержат следующий алгоритм - отправка посылки по изменениям, но реже 1 раз в сек.
Устойчивость связи не сложно проверить - отключайте/подключайте кабель и убедитесь, что связь восстанавливается.

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

Добавлено: 30.12.2021{, 17:12}
ecoins
Отправлено спустя 4 минуты 11 секунд:
KulibinOrsk писал(а): ↑Сегодня{, 10:30}
ecoins, подскажите - если использовать панель просто как дисплей то нужно ли в Nextion что то загружать, обновлять, менять или достаточно просто использовать ваши блоки в FLProg для ардинки ?
Честно говоря не очень хочется вникать в программирование самой панели для использования сенсорной панели поэтому использую просто как дисплей для вывода информации с датчиков (хотя может от того что не попадалось описание на русской для программирования панели)
------
Нужно.

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

Добавлено: 30.12.2021{, 17:14}
ecoins
KulibinOrsk писал(а):
30.12.2021{, 13:30}
ecoins, подскажите - если использовать панель просто как дисплей то нужно ли в Nextion что то загружать, обновлять, менять или достаточно просто использовать ваши блоки в FLProg для ардинки ?
Честно говоря не очень хочется вникать в программирование самой панели для использования сенсорной панели поэтому использую просто как дисплей для вывода информации с датчиков (хотя может от того что не попадалось описание на русской для программирования панели)
Отправлено спустя 4 минуты 11 секунд:
Еще как нужно.
Как минимум надо создать элементы - индикаторы, окошки и прочее.
У них появляются идентификаторы - по ним уже можно записывать в Nextion значения для индикации.
Если один экран, то попроще. Если несколько экранов, то несколько посложнее.

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

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

Так и проверялось. Связь восстанавливается, но без закоментирования - id.agoVal==val) {return;}, данные на дисплее не обновляются. На дисплее "0". В контроллере есть актуальные но не новые данные, и соответственно они в дисплей не отсылаются.
Кстати, закоментировать надо и строку 160.

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

Добавлено: 30.12.2021{, 19:36}
ecoins
dekorator писал(а):
30.12.2021{, 17:50}
Так и проверялось. Связь восстанавливается, но без закоментирования - id.agoVal==val) {return;}, данные на дисплее не обновляются. На дисплее "0". В контроллере есть актуальные но не новые данные, и соответственно они в дисплей не отсылаются.
Кстати, закоментировать надо и строку 160.
Интересные результаты. Буду иметь ввиду. В следующей версии поправим.

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

Добавлено: 08.01.2022{, 07:06}
KulibinOrsk
ecoins, Доброе утро. А нет ли случаем руссифицированного ПО для NEXTION ? Или может имеется какое никакое описание на русском ? Ссылочку если не трудно.

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

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