Страница 1 из 1
Панель Nextion. Код или/или
Добавлено: 05 дек 2020, 12:21
Siberian
Здравствуйте, Коллеги!
В написании кода (С), или другого, я полный бамбук, поэтому прошу помощи у Программистов.
Погуглил, может зрение старческое, или руки кривые... Ничего не нашел.
Если использовать #else#, то это не совсем то, что мне нужно.
Код: Выделить всё
if(bt1.val==1) // Если bt1.val==1
{
t1.txt="1" // Текст "1"
}else if(bt2.val==0) // Если bt2.val==0
{
t1.txt="1" // Текст "1"
}else if(bt3.val==1) // Если bt3.val==1
{
t1.txt="1" // Текст "1"
}
Нужно постоянно прописывать, что нужно для #else if#
Мне нужно по другому:
Перечислить мои хотелки для bt1.val==1, bt2.val==0, bt3.val==1
И получить результат : t1.txt="1"
Типа так:
Код: Выделить всё
(Если bt1.val==1, или bt2.val==0, или bt3.val==1)
{
t1.txt="1" // Текст "1"
}
Только не при условии:
Код: Выделить всё
//-----------------------------------------------//
if(bt1.val==1||bt2.val==0||bt3.val==1)
//-----------//
if(bt1.val==1&&bt2.val==0&&bt3.val==1)
//-----------------------------------------------//
А при условии (или-или)
Панель Nextion. Код или/или
Добавлено: 05 дек 2020, 12:43
Dryundel
Siberian писал(а): 05 дек 2020, 12:21
Только не при условии:
//-----------------------------------------------//
if(bt1.val==1||bt2.val==0||bt3.val==1)
//-----------//
if(bt1.val==1&&bt2.val==0&&bt3.val==1)
//-----------------------------------------------//
А при условии (или-или)
Не совсем понятно что требуется? XOR что ли?
Панель Nextion. Код или/или
Добавлено: 05 дек 2020, 12:51
Siberian
[ref]Dryundel[/ref],
Извините, я не знаю, что такое XOR...
Мне нужно задать такой код в Nextion.
Код: Выделить всё
(Если bt1.val==1, или bt2.val==0, или bt3.val==1)
{
t1.txt="1" // Текст "1"
}
Панель Nextion. Код или/или
Добавлено: 05 дек 2020, 14:52
Dryundel
Siberian писал(а): 05 дек 2020, 12:51
Мне нужно задать такой код в Nextion.
Кароч, тут все зависит от ситуации.
Если к примеру надо что бы в текстовом поле появлялась 1 по нажатию любой из кнопок на дисплее, то просто прописываешь в каждой кнопке t1.txt="1" и всё.
Если другой вариант, описывай какой. Как присваиваешь bt1.val единицу, если не нажатием кнопки, тыкая по ней на дисплее?
Панель Nextion. Код или/или
Добавлено: 05 дек 2020, 16:34
Labu559
Исправился.

Панель Nextion. Код или/или
Добавлено: 05 дек 2020, 16:52
Dryundel
[ref]Labu559[/ref], если бы в Nextion все было бы точно так же как в Arduino IDE, то и вопросов бы у [ref]Siberian[/ref] наверняка не возникло бы.
Суть во первых в том, что Nextion штука событийная.
Во вторых правила кодирования в нем, с легкой руки разработчиков, несколько отличаются. К примеру можете забыть про привычную точку с запятой после инструкции.
И в третьих, Вы куда этот код предлагаете вписать? В какое место?
Панель Nextion. Код или/или
Добавлено: 05 дек 2020, 16:54
Sancho
[ref]Siberian[/ref], Описание Nextion
[spoiler]25 if Block Conditionally execute code block if boolean condition is met
– execute commands within block { } if (conditions) is met.
– nested conditions using () is not allowed. invalid: ((h0.val+3)>0)
– block opening brace { must be on line by itself
– no space between block close brace } and else. valid: }else invalid: } else
– Text comparison supports ==, !=
– Numerical comparison supports >, <, ==, !=, >=, <=
– conditions can be joined with && or || with no spaces used
– nested “if” and “else if” supported.
usage: if condition block [else if condition block] [else block]
– (conditions) is a simple non-complex boolean comparison evaluating left to right
valid: (j0.val>75) invalid: (j0.val+1>75) invalid: (j0.val<now.val+60)
if(t0.txt=="123456")
{
page 1
}
if(t0.txt=="123456"||sys0==14&&n0.val==12)
{
page 1
}
if(t0.txt=="123456"&&sys0!=14)
{
page 1
}
if(n0.val==123)
{
b0.txt="stop"
}else
{
b0.txt="start"
}
if(rtc==1)
{
t0.txt="Jan"
}else if(rtc1==2)
{
t0.txt="Feb"
}else if(rtc1==3)
{
t0.txt="Mar"
}else
{
t0.txt="etc"
}
[/spoiler]
Панель Nextion. Код или/или
Добавлено: 05 дек 2020, 17:07
Dryundel
[ref=#ff8000]Sancho[/ref], все это здорово, но в Nextion без события, просто код не работает. Такая вот бяда. Если к примеру мы изменяем переменную кнопки (val) с помощью команды из UART, то код работать не будет. И даже если тычем на кнопку, а опираемся на переменную, а не на событие нажатия и код находится в основном блоке, тоже не срабатывает.
Как вариант, добавляем таймер, который каждые n милисекунд вызывает событие сработки таймера и уже в него пишем инструкции по условию.
Может конечно я чего то не понял, но у меня по другому не получилось.
Просвети если в курсах.
Панель Nextion. Код или/или
Добавлено: 05 дек 2020, 17:51
Siberian
Не работает, пробовал по всяко-разному...
Панель Nextion. Код или/или
Добавлено: 05 дек 2020, 17:56
Dryundel
Siberian писал(а): 05 дек 2020, 17:51
Не работает, пробовал по всяко-разному...
Дык описывайте конкретно ситуацию, не кодом, а на пальцах, что хотите сделать.
Панель Nextion. Код или/или
Добавлено: 05 дек 2020, 19:06
Siberian
Мне нужно, чтобы не прописывать постоянно в else if одно и тоже:
t0.txt="77"
t1.txt="77"
t2.txt="77"
t3.txt="77"
а просто перечислить, если bt0.val==1 или bt1.val==1, или bt2.val==1, то в результате будет
t0.txt="77"
t1.txt="77"
t2.txt="77"
t3.txt="77"
Код нужно прописывать не в кнопках, а в таймере.
Пример во вложении, только в нем постоянное перечисление в else if, то, от чего я хочу избавиться.
Панель Nextion. Код или/или
Добавлено: 05 дек 2020, 19:33
Dryundel
[ref]Siberian[/ref], ну вот, давно бы так.
Держи -
_Test_NEW.HMI
Так ты хотел?
Панель Nextion. Код или/или
Добавлено: 05 дек 2020, 19:52
Siberian
[ref]Dryundel[/ref], Спасибо!
Я когда гуглил, то не совсем въехал в функции, поэтому и задал такой вопрос.
Сейчас объясню в коде.
Код: Выделить всё
if(bt0.val==1&&bt1.val==1&&bt2.val==1) // первый вариант
if(bt0.val==1||bt1.val==1||bt2.val==1) // второй вариант
Я понял, что ( && ) и ( || ) это одно и тоже, но оказалось не совсем так.
Если на пальцах, то в первом варианте должны быть все кнопки одновременно val=1,
А во втором варианте любая из этих кнопок val=1.
Еще раз Спасибо!
Панель Nextion. Код или/или
Добавлено: 05 дек 2020, 20:04
Dryundel
Siberian писал(а): 05 дек 2020, 19:52
[ref]Dryundel[/ref], Спасибо!
........
Еще раз Спасибо!
[ref]Siberian[/ref], нарушаете правила форума. П.п. 2.12
Вроде не новичок.

Панель Nextion. Код или/или
Добавлено: 05 дек 2020, 20:07
Siberian
Dryundel писал(а): 05 дек 2020, 20:04
Siberian писал(а): 05 дек 2020, 19:52
[ref]Dryundel[/ref], Спасибо!
........
Еще раз Спасибо!
[ref]Siberian[/ref], нарушаете правила форума. П.п. 2.12
Вроде не новичок.
Будем считать мелким нарушением...
