Внешняя функция

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

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

Внешняя функция

Сообщение Владимир_Я » 21 мар 2016, 12:09

Хочу создать функцию типа

sub func(short source,short result)
result=source
end sub

В таком виде не работает. Как сделать подобную функцию?
Владимир_Я
 
Сообщения: 59
Зарегистрирован: 17 мар 2015, 10:50

Re: Внешняя функция

Сообщение den_po » 21 мар 2016, 12:34

Что значит не работает?
При редактировании макроса функцию нужно разместить до тела макроса, сам макрос при этом удалять нельзя.
Если нужно глобальную функцию, то Инструменты/Макросы/Библиотека/Создать.
den_po
 
Сообщения: 436
Зарегистрирован: 04 фев 2013, 12:25

Re: Внешняя функция

Сообщение Владимир_Я » 21 мар 2016, 12:44

Да, для примера создал функцию в библиотеке

sub Proverka(int a, int b)
b=a
end sub

и создал макрос

macro_command main()

int a,b
a=7
Proverka(a, b)
SetData(b, "Local HMI", LW, 0, 1)

end macro_command

после выполнения макроса LW0 не изменяется
Владимир_Я
 
Сообщения: 59
Зарегистрирован: 17 мар 2015, 10:50

Re: Внешняя функция

Сообщение den_po » 21 мар 2016, 12:58

Используйте return

Код: Выделить всё
sub unsigned int mylongswap(unsigned int param)
unsigned int result
SWAPB(param, result)
return result
end sub

macro_command main()
unsigned int a,b
a=0x1234
b=mylongswap(a)
SetData(b, "Local HMI", LW, 0, 1)
end macro_command
den_po
 
Сообщения: 436
Зарегистрирован: 04 фев 2013, 12:25

Re: Внешняя функция

Сообщение Владимир_Я » 21 мар 2016, 13:07

С объявлением типа функции и return-ом это конечно работает. Но как сделать чтобы значение возвращалось в передаваемую переменную? Стандартные функции же сделаны так.
Например тот же SWAPB(param, result).
Свою функцию Proverka я просто привёл для примера. На самом деле хочу передавать в функцию массив, модифицировать его в функции, и возвращать.
Владимир_Я
 
Сообщения: 59
Зарегистрирован: 17 мар 2015, 10:50

Re: Внешняя функция

Сообщение den_po » 22 мар 2016, 11:31

Пользовательским функциям нельзя передавать массивы в аргументах
den_po
 
Сообщения: 436
Зарегистрирован: 04 фев 2013, 12:25

Re: Внешняя функция

Сообщение Владимир_Я » 22 мар 2016, 11:55

Обидно. Почему то в памяти моей отразилось, что можно. Придётся циклом закидывать.
Владимир_Я
 
Сообщения: 59
Зарегистрирован: 17 мар 2015, 10:50


Вернуться в Weintek

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

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