Nextion Дисплеи

Igor424
Offline
Зарегистрирован: 20.08.2020

Заметь все молчат.Только ты один умный с языком без костей.Я прошу код.У меня есть ардуино часы экран.Написано влпроге.Но не работает.Я много не прошу.А болтать на пустые нет времени

Igor424
Offline
Зарегистрирован: 20.08.2020

Я с тобой не пил.Что разговаривать на Ты.Какие форумы выбирать я буду решать сам. Кроме вашего форума ещё их на просторах интернета море.Не хорошая репутация будет вашему форуму при таком подходе. Не надо ставить себя выше всех.

sadman41
Offline
Зарегистрирован: 19.10.2016

Нет времени - не пиши. Есть море других форумов - уходи туда. Все просто.

b707
Offline
Зарегистрирован: 26.05.2017

Igor424 пишет:
Заметь все молчат. Я прошу код.

вот именно что ты просишь код, а все молчат. Что-то незаметно чтоб кто-то горел желанием тебе помогать. Стоит задуматься о том, как ты ставишь вопросы. Может сначала что-то самому сделать, прежде чем на форум бежать?

Цитата:
А болтать на пустые нет времени

у тебя, который нифига не умеет - нет времени даже, чтоб написать код для себя - а у тех кто знает,  значит куча времени писать код для неизвестного лентяя?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Igor424 пишет:
А для того чтобы учится нужно с чего то начинать.

Начните отсюда: https://ee.kpi.ua/~prat/edu/books/programming/c/1_K_R.pdf

 

И еще: если будете пытаться писать на Си так, как пишете по-русски, у Вас ничего не получится. Компилятор Вас не поймет.

AlexZR
Offline
Зарегистрирован: 08.02.2016

может кто подскажет ?

при включении дисплея появляется окно приветствия на 3 секунды,

при этом должен воспроизводится звуковой файл, по идее должно быть так:

play 0,0,0
delay=3000
page page1

но при таком коде, файл полностью не воспроизводится, а только начало и три раза,

если делаю код такой:

delay=3000
play 0,0,0
page page1

файл проигрывается полностью, но уже на первой странице,

похоже проблема в delay, но что не так, или как сделать без delay, после окончания проигрывания файла перейти на другую страницу ?  в командах такого не нашел...

sser
Offline
Зарегистрирован: 25.12.2016

На странице приветствия поставьте таймер который включит первую страницу.

AlexZR
Offline
Зарегистрирован: 08.02.2016

sser пишет:
На странице приветствия поставьте таймер который включит первую страницу.

точно! так все четко! спасибо!

sadman41
Offline
Зарегистрирован: 19.10.2016

Nextion локализовал какую-то неведомую зверушку от TJC, назвав её Discovery: https://nextion.tech/2021/07/04/the-sunday-blog-nextion-news-the-new-discovery-f-series-hmi-displays-arrive/

 

Mifodiay
Offline
Зарегистрирован: 23.02.2020

stambylov

Добрый день не смог открыть вашу ссылку к посту #327. Наверное все была удаленна. Не могли бы разяснить еще раз данный вопрос на примере.

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Mifodiay пишет:

stambylov

Добрый день не смог открыть вашу ссылку к посту #327. Наверное все была удаленна. Не могли бы разяснить еще раз данный вопрос на примере.

Видео не нашел, видимо удалил, записал новое, думаю разберетесь

https://disk.yandex.ru/a/QoLY_DdLpBXYnA

Mifodiay
Offline
Зарегистрирован: 23.02.2020

Спасибо большое. Я вчера случайно на трубе ваше видео нашел.

alexlepeshkin
Offline
Зарегистрирован: 14.10.2018

sadman41 пишет:

Nextion локализовал какую-то неведомую зверушку от TJC, назвав её Discovery: https://nextion.tech/2021/07/04/the-sunday-blog-nextion-news-the-new-discovery-f-series-hmi-displays-arrive/


Прикольно, а самое главное - стал шустрее!

Mifodiay
Offline
Зарегистрирован: 23.02.2020

Добрый день. Хотел бы спросить у знающих товарищей следующий вопрос. У меня есть две странички А и Б, на страничке А присутствует картинка, а на странице Б кнопка которая отправляет команд VIS p1,1 ( команда открытия каритинки). Но вопрос в следущем как эту команду привезать к страничке А? Если ее отправлять со станички Б то выходит ошибка 0x02 0xFF 0xFF 0xFF - Returned when invalid Component ID or name was used. Т.е эта команда работает на страничке А, а на страничке Б нет в виду отсутствия ссылки на страничку А. Как это сделать не могу понять, page 0,VIS p1,1 тоже не работает

sadman41
Offline
Зарегистрирован: 19.10.2016

Варианты:
1) забыли про глобальную область видимости;
2) запутались в ID - страницы назвали A и B, а обращаетесь к ним, как к p0, p1;
...
100500) хз.

Mifodiay
Offline
Зарегистрирован: 23.02.2020

Нет не запутался, А и Б это образно было написано а так как положенно page0 and page1 оба параметра картинка и кнопка имеют статус global

вот код который на кнопке

if(bt3.val==0)
{
page page0,vis 17,1
}

а вот что за ошибку выдает копилятор

Error:Invalid number of arguments:page page0,vis 17,1( Double click to jump to code)
Error:Compile failed! 1 Errors, 0 Warnings,

а если код прописать так

if(bt3.val==0)
{
vis 17,1 // 17 это ID компанента
}

то выдает ошибку в порт \x02џџџ, а картинка не меняется

sadman41
Offline
Зарегистрирован: 19.10.2016

Разве 'page page0' и 'vis 17,1' не самостоятельные команды? Зачем их в одну строчку пихать?

Mifodiay
Offline
Зарегистрирован: 23.02.2020

да самостоятельные, это я выложил что бы показать что оба варианта пробывал. Если vis 17,1 слать со стороны ардуино, то все работает. А если но стороне экрана работает только на данной страничке page0 где расположена картинка. Вот и вопрос возник почему так работает, а если посылать команду со странички  page1 не работает

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Все логично. После смены страницы с самого некстиона ивент больше не действителен и перестаёт выполняться. До vis дело не доходит. При посылке команды с ардуины vis прилетает уже на смененную страницу.

Я бы попытался записать так: vis page0.b0,1 или экспериментировал с этим: https://nextion.tech/instruction-set/#s2_29

Mifodiay
Offline
Зарегистрирован: 23.02.2020

спасибо буду играться и пробывать

Mifodiay
Offline
Зарегистрирован: 23.02.2020

И так я нашел решение для этой задачи. Пришлось обратиться и почитать форум производителя. Так как раз и нашелся ответ с примером. Нужно использовать глобальную переменную sys. В общем кому интерестно то переходим https://nextion.tech/forums/topic/how-to-vis0-or-vis1-an-item-id-from-a-diferent-page/#post-230857 пример в конце с кнопкой двойного удержания. Все действие происходит на стороне монитора

AleksandrH
Offline
Зарегистрирован: 04.07.2017

В одной строке можно писать только одну команду. Когда делается переход на другую страницу командой page далее ни какой код на этой странице уже не выполняется. Командой vis ни когда не пользовался, но по описанию она работает только для объектов текущей страницы. Т.е. решение: в Preinit страницы А надо поставить условие которое будет выполнять vis. Управлять работой условия с помощью переменной Variable (например myvar). Разместить ее на странице А, в ее свойствах сделать глобальной. На странице Б присваивать переменной страницы А нужное значение явно указывая где она живет page0.myvar.val=1 или 0. Этих sys всего три, и на все хотелки может не не хватить.
if(bt3.val==0)
{
page0.myvar.val=1
page page0
}

AleksandrH
Offline
Зарегистрирован: 04.07.2017

Свойство объекта vscope локальный или глобальный определяет, можно ли управлять свойствами объекта другой страницы или нет. Если посылать команды записи/чтения свойств объекта с контроллера то работает в любом состоянии vscope.

AleksandrH
Offline
Зарегистрирован: 04.07.2017

По этому есть еще вариант решения этой задачи, этот объект картинка на странице А сделать vscope глобальным. А на странице Б менять свойства этого объекта pic, и это может быть интереснее чем просто прятать объект. Страница А будет показывать картинки выбранные на странице Б :-)

Mifodiay
Offline
Зарегистрирован: 23.02.2020

Спасибо, в следующий раз буду пробывать ваши варианты

AlexZR
Offline
Зарегистрирован: 08.02.2016

может кто подскажет, не могу сообразить, как на одну кнопку повесить несколько событий по кругу ?

Kakmyc
Offline
Зарегистрирован: 15.01.2018

AlexZR пишет:

может кто подскажет, не могу сообразить, как на одну кнопку повесить несколько событий по кругу ?

Две переменные заводишь и одну из них инкрементируешь по нажатию.
В цикле сравниваешь обе и если отличаются то вызываешь событие.
Ну и обработать не забудь присвоение
значений , после события и ограничение событий.

А вообще лучше это на стороне контроллера делать а не на стороне HMI

AlexZR
Offline
Зарегистрирован: 08.02.2016

Kakmyc пишет:
Две переменные заводишь и одну из них инкрементируешь по нажатию. В цикле сравниваешь обе и если отличаются то вызываешь событие. Ну и обработать не забудь присвоение значений , после события и ограничение событий.

спасибо, вопрос решен..

 

alexlepeshkin
Offline
Зарегистрирован: 14.10.2018

Друзья, приветствую! Недавно рылся в мануале сабжа в поисках ответа на вход и выход из сна. Но об этом в следующем сообщении, а сейчас про то, что наткнулся на команду, которой на дисплее реализовано косвенное обращение ко всему у чего есть id номер! b[id].atr  где atr - любой доступный атрибут объекта val,pic,aph... (Cмотрите описание квадратных скобок) Тут я вспомнил давнишний пост (на который я тут и отвечаю)
И получается, что тот код теперь сводится к одной строке:

b[count.val+N].val = currentID.val

Теперь подробнее:
Есть переменные cash_ID1 ... cash_ID10 Их ID к примеру 10 ... 20 соответственно. 
Стартовое значение count = 1, тогда та самая N = 9 Можно сразу count = 10, если вам при этом не надо изменять состояние картинки, у которой другой id и соответственно будет своя N.

 

alexlepeshkin
Offline
Зарегистрирован: 14.10.2018

Вопрос про вход, а главное выход из сна. Проблема в том, что при пробуждении от касания - экран передаёт в порт код, что проснулся 0x87 0xFF 0xFF 0xFF Но это можно отфильтровать, тк нужные коды гораздо меньше FF87. Самое неприятное - он отправляет координаты нажатия, код команды х.67
Как отключить это самовольство?)) Вроде как sendxy=0 должен отключить, но у меня работает. Прописывал в преинициализации page0.
Если будить через порт, то всё чисто - ни каких отчетов не отправляет.
Если кто в курсе - подскажите пожалуйста.

 

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

А почему для общения используешь эту хрень кодовую, с дисплеем можно и на ты общаться.
Не нужно будет обращать внимание на всякую хрень, которую он шлёт, просто на ардуине сделай обработчик сериал, и парси то, что ты уже ранее написал.
Ниже пишу примерно.
Например, при нажатии кнопки на дисплее, в теле кнопки пишешь print Knopka и к концу этого текста добавляет состояние кнопки, т.е. 1 получается, что дисплей шлёт уже текст Knopka1, этот код обрабатывает на ардуине функция, и если текст входящий равен Knopka, то далее считываешь конечное число вхождения 1 или 0, ну дальше уже код для выполнения какого то действия.
Также и в обратную сторону, отправляешь в сериал, на котором весит дисплей, или несколько на одном порту (делал Я такое, всё работает, уже лет 5) и на самом дисплее в переменной таймера или в коде главной странице, ну лучше таймера на 50мс, пишешь, что нужно сделать если например переменная (с ранее добавленной переменной p1.val, или t. txt) p1. val=2(или любое другое число, которое отправляешь с ардуины), далее например меняешь картинку на дисплее или какое-то значение на экране дисплея, ну а если приходит в переменную t. txt="Privet"(или другое слово), выполняешь тоже самое.

Думаю поймёшь чего, куда писать)

Kakmyc
Offline
Зарегистрирован: 15.01.2018

А зачем вы пишите на старый форум ?

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Хз, а чего он старый?

Kakmyc
Offline
Зарегистрирован: 15.01.2018

stambylov пишет:
Хз, а чего он старый?

Хохлы начали дудосить в начале осени.
Решили сменить движок.
Вот ссылка на новый:
https://forum.arduino.ru/

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Спс

alexlepeshkin
Offline
Зарегистрирован: 14.10.2018

Спасибо. Про кодовое слово, как то не додумался))