EasyBuilder - Скорая помощь новичкам

Работа с панелями оператора Weintek - подключение, программирование, совмещение с ПЛК

Модераторы: kiv, 8bit, VanMo

Re: EasyBuilder - Скорая помощь новичкам

Сообщение 8bit » 03 авг 2021, 16:49

evgeni85 писал(а):Строка как таковая не формируется. В поле просто выводятся разные заранее введенные сообщения

достаточно просто написать здесь ваш код, обрамленный в теги [Code] с палитры форматирования этого сообщения
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1134
Зарегистрирован: 20 апр 2020, 19:07

Re: EasyBuilder - Скорая помощь новичкам

Сообщение evgeni85 » 04 авг 2021, 16:03

Код: Выделить всё
bool pr_cmp
int pr_num, jet
char pr1[100], pr2[100], pr3[100], pr4[100], pr5[100], pr6[100], pr7[100], pr8[100], pr9[100], pr10[100]
char pr0[100]="НЕ ВЫБРАНА ПРОГРАММА  программа программа"
char clear_pr[100]=""
char pr1_d[100]="Программа 1"
char pr2_d[100]="Программа 2"
char pr3_d[100]="Программа 3"
char pr4_d[100]="Программа 4"
char pr5_d[100]="Работа по давлению"
char pr6_d[100]="Программа 6"
char pr7_d[100]="Программа 7"
char pr8_d[100]="Программа 8"
char pr9_d[100]="Программа 9"
char pr10_d[100]="Программа 10"


GetData(pr_num, "OMRON CJ/CS/CP (Ethernet - FINS/TCP)", D, 74, 1)

GetData(pr1[0], "Local HMI", RW, 50, 100)
GetData(pr2[0], "Local HMI", RW, 150, 100)
GetData(pr3[0], "Local HMI", RW, 250, 100)
GetData(pr4[0], "Local HMI", RW, 350, 100)
GetData(pr5[0], "Local HMI", RW, 450, 100)
GetData(pr6[0], "Local HMI", RW, 550, 100)
GetData(pr7[0], "Local HMI", RW, 650, 100)
GetData(pr8[0], "Local HMI", RW, 750, 100)
GetData(pr9[0], "Local HMI", RW, 850, 100)
GetData(pr10[0], "Local HMI", RW, 950, 100)

pr_cmp=StringCompare(clear_pr[0], pr1[0])
if pr_cmp==true then
SetData(pr1_d[0], "Local HMI", RW, 50, 100)
end if
pr_cmp=StringCompare(clear_pr[0], pr2[0])
if pr_cmp==true then
SetData(pr2_d[0], "Local HMI", RW, 150, 100)
end if
pr_cmp=StringCompare(clear_pr[0], pr3[0])
if pr_cmp==true then
SetData(pr3_d[0], "Local HMI", RW, 250, 100)
end if
pr_cmp=StringCompare(clear_pr[0], pr4[0])
if pr_cmp==true then
SetData(pr4_d[0], "Local HMI", RW, 350, 100)
end if
//pr_cmp=StringCompare(clear_pr[0], pr5[0])
//if pr_cmp==true then
SetData(pr5_d[0], "Local HMI", RW, 450, 100)
//end if
pr_cmp=StringCompare(clear_pr[0], pr6[0])
if pr_cmp==true then
SetData(pr6_d[0], "Local HMI", RW, 550, 100)
end if
pr_cmp=StringCompare(clear_pr[0], pr7[0])
if pr_cmp==true then
SetData(pr7_d[0], "Local HMI", RW, 650, 100)
end if
pr_cmp=StringCompare(clear_pr[0], pr8[0])
if pr_cmp==true then
SetData(pr8_d[0], "Local HMI", RW, 750, 100)
end if
pr_cmp=StringCompare(clear_pr[0], pr9[0])
if pr_cmp==true then
SetData(pr9_d[0], "Local HMI", RW, 850, 100)
end if
pr_cmp=StringCompare(clear_pr[0], pr10[0])
if pr_cmp==true then
SetData(pr10_d[0], "Local HMI", RW, 950, 100)
end if

select case pr_num
case 0
SetData(pr0[0], "Local HMI", RW, 0, 50)
break
case 1
SetData(pr1[0], "Local HMI", RW, 0, 50)
break
case 2
SetData(pr2[0], "Local HMI", RW, 0, 50)
break
case 3
SetData(pr3[0], "Local HMI", RW, 0, 50)
break
case 4
SetData(pr4[0], "Local HMI", RW, 0, 50)
break
case 5
SetData(pr5[0], "Local HMI", RW, 0, 50)
break
case 6
SetData(pr6[0], "Local HMI", RW, 0, 50)
break
case 7
SetData(pr7[0], "Local HMI", RW, 0, 50)
break
case 8
SetData(pr8[0], "Local HMI", RW, 0, 50)
break
case 9
SetData(pr9[0], "Local HMI", RW, 0, 50)
break
case 10
SetData(pr10[0], "Local HMI", RW, 0, 50)
break
end select
evgeni85
 
Сообщения: 31
Зарегистрирован: 21 сен 2020, 12:13

Re: EasyBuilder - Скорая помощь новичкам

Сообщение evgeni85 » 04 авг 2021, 16:09

Еще один вопрос. У объекта числового ввода есть вкладка "настройка триггера действия". В ней есть действия после записи и действия до записи. В какие моменты срабатывают эти триггеры. Первый выполняется после того как введено новое значение числа? Действия до записи выполняется когда активировано поле для ввода? Я хочу выполнять макрос после ввода значения в поле. В "Действиях после записи" я для "действия группы 1" выбираю выполнить макрос. Но макрос не выполняется после ввода значения.
evgeni85
 
Сообщения: 31
Зарегистрирован: 21 сен 2020, 12:13

Re: EasyBuilder - Скорая помощь новичкам

Сообщение 8bit » 05 авг 2021, 10:32

evgeni85 писал(а):
Код: Выделить всё
bool pr_cmp
int pr_num, jet
char pr1[100], pr2[100], pr3[100], pr4[100], pr5[100], pr6[100], pr7[100], pr8[100], pr9[100], pr10[100]
char pr0[100]="НЕ ВЫБРАНА ПРОГРАММА  программа программа"
char clear_pr[100]=""
char pr1_d[100]="Программа 1"
char pr2_d[100]="Программа 2"
char pr3_d[100]="Программа 3"
char pr4_d[100]="Программа 4"
char pr5_d[100]="Работа по давлению"
char pr6_d[100]="Программа 6"
char pr7_d[100]="Программа 7"
char pr8_d[100]="Программа 8"
char pr9_d[100]="Программа 9"
char pr10_d[100]="Программа 10"


GetData(pr_num, "OMRON CJ/CS/CP (Ethernet - FINS/TCP)", D, 74, 1)

GetData(pr1[0], "Local HMI", RW, 50, 100)
GetData(pr2[0], "Local HMI", RW, 150, 100)
GetData(pr3[0], "Local HMI", RW, 250, 100)
GetData(pr4[0], "Local HMI", RW, 350, 100)
GetData(pr5[0], "Local HMI", RW, 450, 100)
GetData(pr6[0], "Local HMI", RW, 550, 100)
GetData(pr7[0], "Local HMI", RW, 650, 100)
GetData(pr8[0], "Local HMI", RW, 750, 100)
GetData(pr9[0], "Local HMI", RW, 850, 100)
GetData(pr10[0], "Local HMI", RW, 950, 100)

pr_cmp=StringCompare(clear_pr[0], pr1[0])
if pr_cmp==true then
SetData(pr1_d[0], "Local HMI", RW, 50, 100)
end if
pr_cmp=StringCompare(clear_pr[0], pr2[0])
if pr_cmp==true then
SetData(pr2_d[0], "Local HMI", RW, 150, 100)
end if
pr_cmp=StringCompare(clear_pr[0], pr3[0])
if pr_cmp==true then
SetData(pr3_d[0], "Local HMI", RW, 250, 100)
end if
pr_cmp=StringCompare(clear_pr[0], pr4[0])
if pr_cmp==true then
SetData(pr4_d[0], "Local HMI", RW, 350, 100)
end if
//pr_cmp=StringCompare(clear_pr[0], pr5[0])
//if pr_cmp==true then
SetData(pr5_d[0], "Local HMI", RW, 450, 100)
//end if
pr_cmp=StringCompare(clear_pr[0], pr6[0])
if pr_cmp==true then
SetData(pr6_d[0], "Local HMI", RW, 550, 100)
end if
pr_cmp=StringCompare(clear_pr[0], pr7[0])
if pr_cmp==true then
SetData(pr7_d[0], "Local HMI", RW, 650, 100)
end if
pr_cmp=StringCompare(clear_pr[0], pr8[0])
if pr_cmp==true then
SetData(pr8_d[0], "Local HMI", RW, 750, 100)
end if
pr_cmp=StringCompare(clear_pr[0], pr9[0])
if pr_cmp==true then
SetData(pr9_d[0], "Local HMI", RW, 850, 100)
end if
pr_cmp=StringCompare(clear_pr[0], pr10[0])
if pr_cmp==true then
SetData(pr10_d[0], "Local HMI", RW, 950, 100)
end if

select case pr_num
case 0
SetData(pr0[0], "Local HMI", RW, 0, 50)
break
case 1
SetData(pr1[0], "Local HMI", RW, 0, 50)
break
case 2
SetData(pr2[0], "Local HMI", RW, 0, 50)
break
case 3
SetData(pr3[0], "Local HMI", RW, 0, 50)
break
case 4
SetData(pr4[0], "Local HMI", RW, 0, 50)
break
case 5
SetData(pr5[0], "Local HMI", RW, 0, 50)
break
case 6
SetData(pr6[0], "Local HMI", RW, 0, 50)
break
case 7
SetData(pr7[0], "Local HMI", RW, 0, 50)
break
case 8
SetData(pr8[0], "Local HMI", RW, 0, 50)
break
case 9
SetData(pr9[0], "Local HMI", RW, 0, 50)
break
case 10
SetData(pr10[0], "Local HMI", RW, 0, 50)
break
end select


не обязательно всю портянку одинаковых элементов сюда выкладывать, поберегите читателей, только самый кусок, касающийся вашего вопроса, что во что склеиваете...
из вашего кода не очевидно, что вам надо что-то в многострочное склеить....
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1134
Зарегистрирован: 20 апр 2020, 19:07

Re: EasyBuilder - Скорая помощь новичкам

Сообщение evgeni85 » 06 авг 2021, 12:23

Мне нужно выводить текст в несколько строк. Так как в одну он не входит.
evgeni85
 
Сообщения: 31
Зарегистрирован: 21 сен 2020, 12:13

Re: EasyBuilder - Скорая помощь новичкам

Сообщение 8bit » 06 авг 2021, 12:47

evgeni85 писал(а):Мне нужно выводить текст в несколько строк. Так как в одну он не входит.


как вариант:

Код: Выделить всё
char pr_1[40]="stroka1"
char pr_2[20]="stroka2"

char perenos[1]


FILL(perenos[0], 0xA, 1)

StringCat(perenos[0], pr_1[0])
StringCat(pr_2[0], pr_1[0])

StringSet(pr_1[0], "Local HMI", LW, 0, 40)
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1134
Зарегистрирован: 20 апр 2020, 19:07

Re: EasyBuilder - Скорая помощь новичкам

Сообщение evgeni85 » 06 авг 2021, 12:59

Спасибо. Еще вопрос. Создаю функциональную кнопку с двумя состояниями. У кнопки есть метка. В нормальном состоянии метка как и нужно отображается по центру. Но в нажатом состоянии она почему то перемещается в левый верхний угол. Хотя атрибуты одинаковые для обоих состояний. Как от этого избавиться?
evgeni85
 
Сообщения: 31
Зарегистрирован: 21 сен 2020, 12:13

Re: EasyBuilder - Скорая помощь новичкам

Сообщение 8bit » 06 авг 2021, 13:24

evgeni85 писал(а):Создаю функциональную кнопку с двумя состояниями. У кнопки есть метка. В нормальном состоянии метка как и нужно отображается по центру. Но в нажатом состоянии она почему то перемещается в левый верхний угол. Хотя атрибуты одинаковые для обоих состояний. Как от этого избавиться?


на вкладке Домой выберите состояние S1 - увидите вашу сместившуюся надпись и выделите ее мышкой в красные квадратики вокруг текста и стрелками на клавиатуре можете ее выровнять....
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1134
Зарегистрирован: 20 апр 2020, 19:07

Re: EasyBuilder - Скорая помощь новичкам

Сообщение evgeni85 » 06 авг 2021, 14:15

Спасибо
evgeni85
 
Сообщения: 31
Зарегистрирован: 21 сен 2020, 12:13

Re: EasyBuilder - Скорая помощь новичкам

Сообщение 8bit » 09 авг 2021, 13:11

evgeni85 писал(а):Мне нужно выводить текст в несколько строк. Так как в одну он не входит.


вариант №2:

Код: Выделить всё
char a[10]="test"
char b[5]="1234"


a[4]= 0xA

StringCat(b[0],a[0])

StringSet(a[0], "Local HMI", LW, 0, 10)
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1134
Зарегистрирован: 20 апр 2020, 19:07

Пред.След.

Вернуться в Weintek

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot], Google [Bot] и гости: 4