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

ecoins
Полковник
Сообщения: 2924
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

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

#261

Сообщение ecoins » 19.04.2023{, 08:50}

WildCat писал(а):
19.04.2023{, 02:50}
Обратил внимание, что у меня некоторые переменные не сохраняются при передаче с дисплея.
В данном случае, номер стартового регистра передачи из nxt был 30.
Начал проверять остальные, адреса от 1 до 16 - ок, начиная с 17 не принимаются. Блоки get пробовал и из проф редактора, и из простого.
Меняю стартовый адрес на 1 - всё принимается.
Это надо бы довести до рабочего состояния.
Вопросы:
1.А на контроллере точно в блоке direсt точно определен размер байтового массива соотвествующего размера (например 40)?
2.Коротко опишите какими блоками и как часто передаются данные из Nextion в контроллер?
Особенностью примененного подхода является асинхронный протокол. То есть дисплей отправляет данные, но не отслеживает получил их контроллер
или нет. Да, в рекомендованном для дисплея алгоритме отправка осуществляется и периодически, повторно. Контроллер должен успевать их получать. Он их получает в аппаратный буфер, и для ESP32 он приличного размера и потому проблем вроде не должно быть, но знать об этой особенностью полезно.
3.И конечно эффективно смотреть на логическом анализаторе действительно ли пакеты уходят из Nextion, т.е. правильно ли написаны скрипты. Это также можно увидеть и в отладчике Nextion.

ecoins
Полковник
Сообщения: 2924
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

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

#262

Сообщение ecoins » 19.04.2023{, 08:58}

WildCat писал(а):
19.04.2023{, 02:50}
Второй момент:
Ладно, бог с ними, с адресами, у меня в флп условие работы платы= номер активной страницы. В nxt так же передача переменных только тех, что на странице.
И все равно получаемые переменные перемешиваются.
То есть: допустим, передаю данные со страницы 15. Адрес стартового регистра= 1. Плата в МК включается при активной странице 15. Запись переменой в eeprom, отправка значения из eeprom на страницу 15.

Захожу в страницу 2, туда так же поступают переменные с начальным адресом 1. И переменная каким-то образом считывает значение переменой с адресом 1, которая была на странице 15.
Давайте уточним. Основной принцип - переменные созданные в дисплее типа in0, in1, и т.д. явным образом не привязаны к страницам. Привязка к страницам выполняется только Вашими скриптами в дисплее. Соответствено одни и те же переменные можно отображать на разных страницах. Чтобы снизить путаницу лучше логически разнести из по страницам, например in0-in9 - 1-й экран, in10-in19 - 2-ой экран, in100-in109 - 10экран и т.д.
Мв сходим образом понимаем примененный подход?

ecoins
Полковник
Сообщения: 2924
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

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

#263

Сообщение ecoins » 19.04.2023{, 08:59}

WildCat писал(а):
19.04.2023{, 02:50}
Есть ли какие-то ограничения на количество передаваемых и принимаемых переменных?
Да в общем то нет. На Nextion сколько надо, там памяти много. В контроллере не забывать задавать требуемый размер байтового массива.

WildCat
Лейтенант
Сообщения: 425
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

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

#264

Сообщение WildCat » 19.04.2023{, 09:31}

ecoins писал(а):
19.04.2023{, 08:50}
на контроллере точно в блоке direсt точно определен размер байтового массива соотвествующего размера (например 40)?
Вот ответ (

Этот проект мне все жилы вытянул (
Очень большой объем приходится прописывать и много взаимодействий. Усталость и невнимательность.
Этот параметр в блоке direct = 20.

Если у меня 35 переменных на приеме из nxt и 55 на отправку в дисплей, какое значение нужно ставить?
ecoins писал(а):
19.04.2023{, 08:58}
Это также можно увидеть и в отладчике Nextion.
В отладчике всё ок, отправлялись. Причем у меня сначала было опасение, что отправка, скажем, 32-го регистра будет содержать нулевые значения всех предыдущих регистров, но нет, отправляется только то что надо.
У меня в основном со страницы отправляется 2..3 переменных. Только с одной страницы - 6. И на прием так же.
Так что с буфером должно быть всё ок.


Вот про размер массива я не подумал.
Раньше по дефолту хватало, и не отложилось, что его тоже контролировать надо.

Спасибо

ecoins
Полковник
Сообщения: 2924
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

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

#265

Сообщение ecoins » 19.04.2023{, 10:05}

WildCat писал(а):
19.04.2023{, 09:31}
Если у меня 35 переменных на приеме из nxt и 55 на отправку в дисплей, какое значение нужно ставить?
Ну поставьте 50 с запасом в блоке direct. Это на Nano, Mega надо экономить и потому маленькое значение поставил по умолчанию.
С эти Вы вроде самостоятельно разобрались.
Кол-во переменных на вывод в контроллере не задается - определите с большим запасом в дисплее переменные типа inxx и все будет хорошо.
WildCat писал(а):
19.04.2023{, 09:31}
Этот проект мне все жилы вытянул (
Очень большой объем приходится прописывать и много взаимодействий. Усталость и невнимательность.

Если чем-то могу помочь, постараюсь. Пишите без стеснения.
У меня и мотив личный есть :)
От таких как Вы, и от Вас конкретно, человека который реализует прикладные проекты на FLProg с личной (и наверное большой) ответственностью перед заказчиком, пользы для развития FLProg, больше чем от десятков советчиков, которые пытаются "учить воробья летать". Делают они это самоотверженно, энергично, но в какой-то момент деструктивно и даже разрушительно.
От Вас исходит реальный драйв и конкретная для проекта FLProg польза.
Спасибо.
С Уважением, Энвер.

WildCat
Лейтенант
Сообщения: 425
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

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

#266

Сообщение WildCat » 19.04.2023{, 10:45}

ecoins писал(а):
19.04.2023{, 10:05}
Если чем-то могу помочь, постараюсь. Пишите без стеснения.
Спасибо)
Я вроде не стесняюсь спрашивать, и Вы даёте оперативно ответы. Бо́льшей помощи не требуется :smile9:

Аватара пользователя
dmitriydef
Рядовой
Сообщения: 20
Зарегистрирован: 26.04.2023{, 20:59}
Репутация: 2
Откуда: Архангельск
Имя: Дмитрий
Контактная информация:

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

#267

Сообщение dmitriydef » 27.04.2023{, 17:29}

Доброго времени суток. Весь день провозился безрезультатно. Требуется помощь.

Железо: NX1060P101-011C-I, Arduino UNO и Arduino Nano (Old bootloader)
Софт: FLProg 8.2.1, 1000_EIS_Library_1.11f_29.03.23.zip, 001_ECOINS_29.03.2023.zip, Nextion Editor 1.65.1, Win10-64
Задача: сделать панель приборов для авто (по факту, надо пушить значения параметров из МК в NXT)

Сначала сделал MVP с использованием встроенного блока Nextion Set Attr. Оно плюс-минус работает.
Потом прочитал, что встроенный блок - такое себе решение и решил запилить на ecoins.
Делал по инструкции из шапки топика.
Со стороны дисплея прописал Program.s, поставил таймер, привязал переменные. Проверил в дебагере Next Edition. Подключился к устройству. Команда in0=120 приводит к нужному результату на устройстве.
Так же, нужный результат получается, если заюзать встроенный в FLProg блок, то есть вместо z2.val=120 передать in0=120.
Но, если заменить на ecoins, то на hmi панели ничего не происходит.
В мониторе сериал порта видно, что данные уходят (in0=23???in0=100???in0=120....), но на панели ничего.
Если на uart пины контроллера подкинуть FTDI, то в мониторе также видно что на этих пинах есть данные...
И здесь я попал в тупик.
Пробовал менять МК с UNO на Nano. Без результата. Пробовал понижать версии блоков и библиотек. Пробовал проф и бэсик. Не помогло. Смотрел примеры из ветки. Вроде, всё делаю так же.
В чём я ошибаюсь? (проекты в аттаче)
Вложения
ArcticWay_Test_bk.zip
(245.29 КБ) 20 скачиваний
Panel_1c_ecoins.flp
(5.46 МБ) 21 скачивание

ecoins
Полковник
Сообщения: 2924
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

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

#268

Сообщение ecoins » 27.04.2023{, 18:04}

dmitriydef писал(а):
27.04.2023{, 17:29}
Так же, нужный результат получается, если заюзать встроенный в FLProg блок, то есть вместо z2.val=120 передать in0=120.
Но, если заменить на ecoins, то на hmi панели ничего не происходит.
В мониторе сериал порта видно, что данные уходят (in0=23???in0=100???in0=120....), но на панели ничего.
Если в порт уходит, то от программы в контроллере уже ничего не зависит - все на стороне дисплея...
Из понятного - скорости должны совпадать.
На стороне дисплей в секции Programs.c внизу стоит(или установить) параметры
baud=115200
page 0
----
Или пины RX/TX попробовать поменять (RX->TX, TX->RX).
dmitriydef писал(а):
27.04.2023{, 17:29}
Пробовал менять МК с UNO на Nano. Без результата. Пробовал понижать версии блоков и библиотек. Пробовал проф и бэсик. Не помогло. Смотрел примеры из ветки. Вроде, всё делаю так же.
В чём я ошибаюсь? (проекты в аттаче)
у Вас все нормально в контроллере, ищите на стороне дисплея или в соединениях.
dmitriydef писал(а):
27.04.2023{, 17:29}
Железо: NX1060P101-011C-I, Arduino UNO и Arduino Nano (Old bootloader)
Такой большой (и не дешевый дисплей) и такой простенький контроллер :) . ESP32 неплохо подошел бы, и UART там отдельный можно выделить под дисплей.
Но это не принципиально.
------
Пробуйте, пишите, задавайте вопросы.
С уважением, Энвер.

WildCat
Лейтенант
Сообщения: 425
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

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

#269

Сообщение WildCat » 27.04.2023{, 19:19}

dmitriydef, при использовании штатных блоков скорость UART 9600. Без возможности изменения.
В дисплее во вкладке program.s (если Вы просто скопировали текст из инструкции) - 115200.

В блоке direct nxt какие параметры стоят?

Отправлено спустя 12 минут 34 секунды:
Посмотрел программы, всё верно.
Rx/Tx верно подключены? Синий на Nxt (tx) надо на Rx контроллера.

Аватара пользователя
dmitriydef
Рядовой
Сообщения: 20
Зарегистрирован: 26.04.2023{, 20:59}
Репутация: 2
Откуда: Архангельск
Имя: Дмитрий
Контактная информация:

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

#270

Сообщение dmitriydef » 27.04.2023{, 19:33}

ecoins писал(а):
27.04.2023{, 18:04}
Из понятного - скорости должны совпадать.
На стороне дисплей в секции Programs.c внизу стоит(или установить) параметры
baud=115200
page 0
Или пины RX/TX попробовать поменять (RX->TX, TX->RX).
Скорости совпадают. Пробовал их понижать. Ничего:) baud и page есть. Пины тоже пробовал переставлять.
ecoins писал(а):
27.04.2023{, 18:04}
у Вас все нормально в контроллере, ищите на стороне дисплея или в соединениях.
Ну, вот. Два скетча. Один на встроенном модуле, другой на ecoins.

Мы же в дисплее ничего радикально не меняли, просто объявили кучу переменных. Значит, код с использованием встроенного модуля должен работать (который посылает команды вида z2.val=10). Единственное, значения будут сбрасываться таймером, потому что in0, in1... остаются дефолтными из Programs.c. Правильно?

Заливаем первый скетч в контроллер. Стрелки на дисплее, в моем случае, начинают дёргаться. Отсюда делаем вывод, что связь между мк и nxt есть, скорости совпадают, провода целые. Если посмотреть мониторм порта, то увидим мега движуху... Потому что встроенный модуль...

Ок. Теперь в первом скетче меняем z2.val=... на in0=... (из привязок в таймере). Заливаем в мк. И стрелка на дисплее не дёргается. Показывает текущее значение. Делаем вывод, что «настройки» для ecoins в дисплее правильные. В мониторе порта опять видим расколбас.

Ничего не трогаем, заливаем второй скетч, который с ecoins. И ничего не происходит. Удивляемся.

Смотрим в монитор порта. Мега движухи нет. Есть размеренная передача данных in0=100 ff ff ff

Как так то?:) У меня на этом фантазия кончается:)
ecoins писал(а):
27.04.2023{, 18:04}
Такой большой (и не дешевый дисплей) и такой простенький контроллер . ESP32 неплохо подошел бы, и UART там отдельный можно выделить под дисплей.
С esp32 я плохо знаком. А дисплей... Взял бы DWIN если б их продавали в России. Везде ждать 30+ дней. Nexten на любой вкус с доставкой 2-3 дня.

Отправлено спустя 7 минут 4 секунды:
WildCat писал(а):
27.04.2023{, 19:31}
при использовании штатных блоков скорость UART 9600. Без возможности изменения.
Мммм, а почему они работают, когда в дисплее baud=115200?

Отправлено спустя 2 минуты 42 секунды:
WildCat писал(а):
27.04.2023{, 19:31}
Rx/Tx верно подключены? Синий на Nxt (tx) надо на Rx контроллера.
Та я их как только не тыкал. И так и наоборот. Бестолку.

WildCat
Лейтенант
Сообщения: 425
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

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

#271

Сообщение WildCat » 27.04.2023{, 19:44}

dmitriydef писал(а):
27.04.2023{, 19:40}
почему они работают
Сейчас сказать не могу, надо проверить в железе, пока занят на обьекте.

Аватара пользователя
dmitriydef
Рядовой
Сообщения: 20
Зарегистрирован: 26.04.2023{, 20:59}
Репутация: 2
Откуда: Архангельск
Имя: Дмитрий
Контактная информация:

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

#272

Сообщение dmitriydef » 27.04.2023{, 20:30}

Кстати, это баг? Блок "Управление Prof" генерит код с ошибкой.
Скриншот 27-04-2023 202250.jpg
Здесь должно быть RT_HW_Next.setDeviceID, если я правильно понимаю.

Отправлено спустя 21 минуту 35 секунд:
Почему, если uart внешний, то setDeviceID? А если, из таблицы, то setID? В этом может быть проблема?:)
СпойлерПоказать
Скриншот 27-04-2023 204229.jpg
Скриншот 27-04-2023 204431.jpg
Скриншот 27-04-2023 204606.jpg

ecoins
Полковник
Сообщения: 2924
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

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

#273

Сообщение ecoins » 27.04.2023{, 21:34}

dmitriydef писал(а):
27.04.2023{, 20:52}
Кстати, это баг? Блок "Управление Prof" генерит код с ошибкой.
Пользуйтесь пока блоками на простом редакторе.
Другие блоки я поправил, но пока не выкладывал, занят основными библиотеками.

Аватара пользователя
dmitriydef
Рядовой
Сообщения: 20
Зарегистрирован: 26.04.2023{, 20:59}
Репутация: 2
Откуда: Архангельск
Имя: Дмитрий
Контактная информация:

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

#274

Сообщение dmitriydef » 28.04.2023{, 10:20}

Разобрался. Это утверждение было верным.
ecoins писал(а):
27.04.2023{, 18:04}
у Вас все нормально в контроллере, ищите на стороне дисплея
И это тоже
WildCat писал(а):
27.04.2023{, 19:31}
при использовании штатных блоков скорость UART 9600
Косяк вот в чём.
Если в Programs.c прописать baud после page (как в инструкции от WildCat), то скорость остаётся дефолтной 9600

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

page 0 //--Установка начальной страницы
baud=115200 //--Установка скорости обмен
Но, если поменять местами, то соединение устанавливается на 115200 и всё работает.

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

baud=115200 //--Установка скорости обмен
page 0 //--Установка начальной страницы

ecoins
Полковник
Сообщения: 2924
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

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

#275

Сообщение ecoins » 28.04.2023{, 12:05}

dmitriydef писал(а):
28.04.2023{, 10:20}
Но, если поменять местами, то соединение устанавливается на 115200 и всё работает.
Отлично что получилось.
Успехов, с уважением, Энвер.

ecoins
Полковник
Сообщения: 2924
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

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

#276

Сообщение ecoins » 30.04.2023{, 14:38}

Занимаюсь новыми библиотеками и попутно доработан блок вывода через UART, который можно использовать и для вывода(тестирования) дисплея Nextion.
Test Uart_Nextion.png
EIS_Test_UART_v01_30.04.2023.zip
(93.98 КБ) 24 скачивания
-----
Вывод не "тормозит" работу процессора.
Оказалось удобно, мне понравилось..
С уважением, Энвер.

Аватара пользователя
dmitriydef
Рядовой
Сообщения: 20
Зарегистрирован: 26.04.2023{, 20:59}
Репутация: 2
Откуда: Архангельск
Имя: Дмитрий
Контактная информация:

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

#277

Сообщение dmitriydef » 30.04.2023{, 15:50}

ecoins, я не совсем понимаю, как в вашей парадигме передать на дисплей текстовый параметр. Можно где-нибудь пример посмотреть?

ecoins
Полковник
Сообщения: 2924
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

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

#278

Сообщение ecoins » 30.04.2023{, 15:55}

dmitriydef писал(а):
30.04.2023{, 15:50}
ecoins, я не совсем понимаю, как в вашей парадигме передать на дисплей текстовый параметр. Можно где-нибудь пример посмотреть?
Можно и указанным выше блоком.
Отправьте параметр в Nextion, который вы хотите изменить, например n0.val=456.
Если вы создали глобальную переменную в Program.s, например in20, отправьте in20=-5457.
С уважением, Энвер.

Аватара пользователя
dmitriydef
Рядовой
Сообщения: 20
Зарегистрирован: 26.04.2023{, 20:59}
Репутация: 2
Откуда: Архангельск
Имя: Дмитрий
Контактная информация:

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

#279

Сообщение dmitriydef » 30.04.2023{, 16:10}

ecoins, я про строку… t0.txt=“Hello world “…

ecoins
Полковник
Сообщения: 2924
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

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

#280

Сообщение ecoins » 30.04.2023{, 16:28}

dmitriydef писал(а):
30.04.2023{, 16:10}
ecoins, я про строку… t0.txt=“Hello world “…
В Nextion создайте объект t0.
Перейдите на страницу, на которой создан объект и отправьте блоком UART строку t0.txt=Hello Word
В блоке UART есть режим который добавит в конце строки FF FF FF.
С уважением, Энвер.

Ответить

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