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

Панель Nextion

Добавлено: 21 янв 2019, 10:37
Sancho
Max писал(а): 20 янв 2019, 20:58
Alias писал(а): 20 янв 2019, 20:53Сохранять ее состояние при изменении в ПЗУ, а при включении отправлять обратно на панель ее атрибут.
Вы имеете ввиду атрибут isbr?
Нет.
Думаю, val надо.

Панель Nextion

Добавлено: 27 янв 2019, 19:49
Max
Вопрос.
Создал на главной странице, где собираются все данные-переменные и состояния с других страниц, такую конструкцию для экономии трафика с Ардуино:
n0.val=va3.val
page0.va3.val=page4.va2.val
n1.val=va4.val
page0.va4.val=page4.va1.val
n2.val=va5.val
page0.va5.val=page4.va6.val
n3.val=va6.val
page0.va6.val=page4.va4.val
page0.t2.txt=page1.t11.txt
page0.t2.bco=page1.t11.bco
page0.t3.txt=page1.t13.txt
page0.t3.bco=page1.t13.bco
page0.t7.txt=page3.t11.txt
page0.t7.bco=page3.t11.bco
page0.t8.txt=page3.t13.txt
page0.t8.bco=page3.t13.bco
Т.е. некоторые переменные повторяют значения перемененных с других страниц.
Так же должно дублироваться состояние bco (заливка) некоторых текстовых полей.
И вот проблема.
При включении данные переменных нормально записываются на главную страницу, а вот состояние заливки не передаются. И элементы все глобальные, и сигналы на вывод Send модулей Nextion Set Atr FlProg на передачу срабатывают, но поля так и остаются без изменений. Но, стоит перейти на страницу установок, откуда считываются состояния полей, то все срабатывает. Заливки передаются внутри панели.... Может что-то не знаю?

Панель Nextion

Добавлено: 28 янв 2019, 10:01
Sancho
[ref]Max[/ref], Страница, с которой запрашиваете данные - глобальная? Может из-за этого. Локальные вещи обрабатываются только в момент "появления перед глазами"

Отправлено спустя 1 минуту 41 секунду:
И вопрос- где создали такую конструкцию? в каком месте размещён сей код?

Панель Nextion

Добавлено: 28 янв 2019, 12:09
Max
Sancho писал(а): 28 янв 2019, 10:01[ref]Max[/ref], Страница, с которой запрашиваете данные - глобальная? Может из-за этого. Локальные вещи обрабатываются только в момент "появления перед глазами"

Отправлено спустя 1 минуту 41 секунду:
И вопрос- где создали такую конструкцию? в каком месте размещён сей код?
Все страницы глобальные, так же все переменные в том числе текстовые - глобальные. Весь код находится в единственном таймере на главной странице.
Наверное буду переделывать проект. Слишком много переменных. Попробую сделать передачу при помощи нескольких переменных и разбором на панели...
Вообще, надо бы в шапку темы выставить, так сказать, основные заповеди для работы с панелью NEXTION. Минимизация кода, решения уменьшающие трафик между панелью и контроллером...

Панель Nextion

Добавлено: 28 янв 2019, 13:05
Sancho
[ref]Max[/ref], Какие диапазоны значений у переменных?
Помните, что переменные в некстион - 32 битные, 31 значащий плюс знак! Вставить можно немерянно!

Отправлено спустя 47 минут 42 секунды:
Попробуйте такой эксперимент:
Тест приёма трёх уставок_v1.flp
Тест один таймер уставки v04.HMI
Не забудьте выполнить рекомендации отсюда

Панель Nextion

Добавлено: 28 янв 2019, 13:10
Max
Sancho писал(а): 28 янв 2019, 13:05[ref]Max[/ref], Какие диапазоны значений у переменных?
Помните, что переменные в некстион - 32 битные, 31 значащий плюс знак! Вставить можно немерянно!

Отправлено спустя 47 минут 42 секунды:
Попробуйте такой эксперимент:Тест приёма трёх уставок_v1.flpТест один таймер уставки v04.HMI
Не забудьте выполнить рекомендации отсюда
Переменные как раз передаются! Я же писал, что не передается значения заливки bco.

Панель Nextion

Добавлено: 28 янв 2019, 14:25
Sancho
Max писал(а): 28 янв 2019, 12:09Слишком много переменных. Попробую сделать передачу при помощи нескольких переменных и разбором на панели...
Я об этом говорил.

Отправлено спустя 6 минут 34 секунды:
Таймер не привязан к странице.
Измените порядок передачи, из ардуино - сначала на главную/стартовую, потом дальше.

Панель Nextion

Добавлено: 28 янв 2019, 14:49
Max
Sancho писал(а): 28 янв 2019, 14:25
Max писал(а): 28 янв 2019, 12:09Слишком много переменных. Попробую сделать передачу при помощи нескольких переменных и разбором на панели...
Я об этом говорил.

Отправлено спустя 6 минут 34 секунды:
Таймер не привязан к странице.
Измените порядок передачи, из ардуино - сначала на главную/стартовую, потом дальше.
А если нужно отслеживать состояние bco не на главной странице? У меня состояние переменных меняется на второстепенной странице и так же состояние bco, а главная, как сборщик состояний переменных и bco должна дублировать эти данные. Т.е. изменяешь состояние на второстепенной, изменяется так же битовая переменная, или int и эта информация должна продублироваться на главной странице.

В общем, надо начать проект сначала, с учетом новых знаний.

Панель Nextion

Добавлено: 28 янв 2019, 15:05
Sancho
Max писал(а): 28 янв 2019, 14:49У меня состояние переменных меняется на второстепенной странице и так же состояние bco, а главная, как сборщик состояний переменных и bco должна дублировать эти данные. Т.е. изменяешь состояние на второстепенной, изменяется так же битовая переменная, или int и эта информация должна продублироваться на главной странице.
Вот и получается - состояние переменных не определено после старта, а Вы пытаетесь считать. После перехода на страницу, их вычислений, они уже передаются на главную.

Панель Nextion

Добавлено: 19 апр 2019, 07:37
Siberian
Здравствуйте, Коллеги!
Я плотно занимался несколько месяцев разными тестовыми проектами в связке Arduino + Nextion, много получил ответов на свои вопросы от программистов на форуме,
очень благодарен откликнувшимся, тем самым я получил первичные навыки программирования панели Nextion.
Но, к сожалению не всё так радужно, как хотелось бы, основной ужасный функционал, это прием-передача по RX-TX между Arduino и Nextion.

Не буду огорчать форумчан у которых не большой проект Arduino + Nextion, если у вас пару кнопок и пару выводов информации на дисплей, например температура и влажность с одного датчика.
Всё будет хорошо!

Но! Если у Вас не малый проект, несколько страниц в панели, на страницах более 50 кнопок, и более 40 данных (получить-задать параметр), то время передачи-отклика займет не меньше
20-30 секунд.

Если не лень, создайте проект в панели, создайте штук 50 кнопок, и просто передавайте нажатие-отпускание кнопки в Arduino (FLProg) для включения-выключения светодиода.
Подключите в проекте FLProg кнопки к базовому элементу "OR", а выход на пин светодиода, типа, как на примере картинки, только штук 50 входов.
[spoiler]Изображение[/spoiler]

При нажатии (удерживании) кнопки, Вы будете ожидать секунд 15-30 до того момента, пока светодиод зажжется, затем, после отпускания кнопки, светодиод будет светиться еще секунд 15-20.
Если в FLProg (при большом проекте) использовать "Получить ID страницы", то если Вы в Nextion создадите кнопку перехода между страницами (например page page2),
и перейдете со страницы 1 на страницу 2, в ардуинке еще секунд 15-20 будет висеть страница 1.

При большом проекте, например "Получить параметр" > "Период опроса" не имеет значения, какой период опроса Вы зададите, хоть 100 мс, хоть 1 сек, результат по отклику будет одинаковый.
[spoiler]Изображение[/spoiler]

Если есть страница, которая используется только для настроек, то в FLProg можно создать переменную и функцию "Выполнять при условии:".
Но если на этой странице постоянное отслеживание "Получить параметр", и этих параметров порядка 50 штук, то такой вариант не пройдет...

Так-же есть самое не Приятное.
Если в большом проекте у Вас есть датчик температуры, с управлением заданной температуры через ПИД, допуск составляет (+),(-) 0,1 градуса, контроль ПИД будет через 20-30 секунд,
а это разброс не менее 0,9 - 1,5 градуса.

Отправлено спустя 33 минуты 35 секунд:
Сама по себе панель работает довольно шустро.
Можно сделать весь проект в панели, а ардуино использовать только как исполнительное устройство.
Но здесь перед нами новые грабли, если нужно использовать EEPROM, то в панели всего 1024 BYTE.

Панель Nextion

Добавлено: 19 апр 2019, 07:42
Sancho
[ref]Siberian[/ref], Александр, а Вы пробовали поднять скорость связи с 9600 до, например, 57600?
50 кнопок, простых, - это две переменных.
Можно посмотреть Ваши тестовые проекты, проблемные, медленные?

Панель Nextion

Добавлено: 19 апр 2019, 08:00
Siberian
Sancho писал(а): 19 апр 2019, 07:42 [ref]Siberian[/ref], Александр, а Вы пробовали поднять скорость связи с 9600 до, например, 57600?
50 кнопок, простых, - это две переменных.
Можно посмотреть Ваши тестовые проекты, проблемные, медленные?
Здравствуйте, Александр!
Скорость поднимал, разницы нет.
Я удалил все тесты, их накопилось очень много, а толку нет. Поэтому сижу и чешу репу, что делать дальше... Покупал две панели 7.0 дюймов, удовольствие не дешевое, думаю, куда теперь их применить.

Отправлено спустя 5 минут 20 секунд:
PS.
50 кнопок двумя перемененными не обойтись, т.к. каждая пара кнопок привязана к дополнительным переменным, а таких переменных не один десяток...

Отправлено спустя 7 минут 5 секунд:
Проблема ардуино в том, что самостоятельно не может определять изменение по RX, только нужно периодически делать опрос через определенное время.

Панель Nextion

Добавлено: 19 апр 2019, 08:38
grin-mpx
Как-то очень грустно Вы все написали. У меня в проекте около 40 страниц, более 50 параметров, кнопок правда мало. Все работает нормально.
Главное получать и отправлять информацию на дисплей когда это необходимо и не постоянно, а в момент ее изменения или перехода по страницам.

Панель Nextion

Добавлено: 19 апр 2019, 09:54
Siberian
grin-mpx писал(а): 19 апр 2019, 08:38 Как-то очень грустно Вы все написали. У меня в проекте около 40 страниц, более 50 параметров, кнопок правда мало. Все работает нормально.
Главное получать и отправлять информацию на дисплей когда это необходимо и не постоянно, а в момент ее изменения или перехода по страницам.
Дело в том, что получить параметр из панели можно только по заданному периоду времени, от этого и происходят задержки, пока ардуинка не прочитает всё. С отправкой параметра нет проблем, можно отправлять при определенном условии.

Отправлено спустя 27 минут 42 секунды:
Если Вы выбираете получить параметр кнопки из панели Button, то в программе FLProg автором уже заложен период опроса по умолчанию 100 мс.
[spoiler]Изображение[/spoiler]
Если выбрать получить параметр кнопки Dual-state button, то сами задаете период опроса, тоже самое будет и с периодом опроса, например параметра Number/
[spoiler]Изображение
Изображение[/spoiler]
Происходит чтение в ардуино с заданным периодом времени опроса по порядку. От этого и весь тормоз получается, если у Вас большое количество опроса переменных из панели.

Панель Nextion

Добавлено: 19 апр 2019, 10:29
Sancho
[ref]Siberian[/ref], Позволю себе с Вами поспорить, хотя многое зависит от проекта. Назначение Вашего нам не ведомо. Как нет и проекта для того, что-бы убедится в таких огромных задержках.
Есть такой термин оптимизация.
Как я помню, вы пытаетесь задавать много параметров кнопками больше/меньше, и их у Вас тьма.
Не проще ли сделать две, и выбрать кнопки выбора изменяемого параметра - возможно, получится сделать всего один экран!
Кнопки с фиксацией укладываются в одну переменную 31 штука. Итого - немалая, очень, экономия трафика.
То-же возможно сделать и с параметрами - вопрос разрядности.
Неужели и вправду всё удалили???

Отправлено спустя 1 минуту 33 секунды:
Всё остальное - гадание на кофейной гуще (кофе не пью) и разговор не о чём.

Панель Nextion

Добавлено: 19 апр 2019, 10:33
Siberian
Так-же, если передавать из панели значение переменной Button в "Отслеживание нажатий" (FLProg), то при частом нажатии (3-5 раз в секунду) Кнопки Button, напрочь происходит зависание (в нажатом состоянии) именно в ардуино. Об этом уже писалось многими пользователями и на форуме, и в багтрекере.

Отправлено спустя 1 минуту 41 секунду:
Sancho писал(а): 19 апр 2019, 10:29 [ref]Siberian[/ref], Позволю себе с Вами поспорить, хотя многое зависит от проекта. Назначение Вашего нам не ведомо. Как нет и проекта для того, что-бы убедится в таких огромных задержках.
Есть такой термин оптимизация.
Как я помню, вы пытаетесь задавать много параметров кнопками больше/меньше, и их у Вас тьма.
Не проще ли сделать две, и выбрать кнопки выбора изменяемого параметра - возможно, получится сделать всего один экран!
Кнопки с фиксацией укладываются в одну переменную 31 штука. Итого - немалая, очень, экономия трафика.
То-же возможно сделать и с параметрами - вопрос разрядности.
Неужели и вправду всё удалили???

Отправлено спустя 1 минуту 33 секунды:
Всё остальное - гадание на кофейной гуще (кофе не пью) и разговор не о чём.
К сожалению удалил.

Панель Nextion

Добавлено: 19 апр 2019, 12:38
grin-mpx
Siberian писал(а): 19 апр 2019, 10:33 то при частом нажатии (3-5 раз в секунду) Кнопки Button, напрочь происходит зависание (в нажатом состоянии) именно в ардуино.
Вот именно по этому у меня в проектах нет ни одного непосредственного опроса кнопок.На стороне дисплея реализована упаковка/распаковка состояния кнопок, значений и пр. которые опрашиваются при определенных условиях.
Вот скрин одной из страниц дисплея, данные на него выводятся за пару сек., а то и меньше. около 40 значений! Естественно я не отправляю с ардуины
каждое значение отдельно.
[spoiler]
неделя.jpg
[/spoiler]

Отправлено спустя 4 минуты 1 секунду:
На этом видео показана работа с этой страницей, примерно с 3 минуты.
[spoiler]https://www.youtube.com/watch?v=OrXh_8oCeRw[/spoiler]

Панель Nextion

Добавлено: 20 апр 2019, 07:08
Siberian
[ref]grin-mpx[/ref], можно посмотреть Ваш проект .HMI, или коммерческая тайна? :)

Панель Nextion

Добавлено: 22 апр 2019, 10:19
grin-mpx
Siberian писал(а): 20 апр 2019, 07:08 grin-mpx, можно посмотреть Ваш проект .HMI, или коммерческая тайна?
Да, проект коммерческий. Выложить не могу. Не смог Вам ответить в личку, у Вас она отключена.

Панель Nextion

Добавлено: 23 апр 2019, 06:52
Siberian
Включил личку. Не знаю, почему настройка слетела... :smile37: