Страница 1 из 1

Рекурсия через Call By Reference

Добавлено: 24 дек 2018, 14:43
Juri
Я столкнулся с непонятной проблемой. Программа состоит из рекурсивной стейт-машины, в которой все данные лежат в объекте. Стейт-машина имеет несколько простых состояний, в которых выполняются относительно простые операции, а так же имеются сложные состояния, в которых выполняется комбинация простых сотояний. Для выполнения такого финта решил использовать рекурсию. Но оказалось, что labview стал сильно тормозить в определенных vi в процессе редактирования. Буквально просто передвинуть подвп или положить в блок-диаграмму новый подвп или разорвать/соединить провод занимает от одной до 10 секунд. Работать невозможно. Компилятор явно выполняет лишние операции. Решил попробовать заменить классический способ рекурсии (когда в свойствах Execution выбирается Shared clone) вызовом через Call By Reference. После замены тормоза пропали. Только теперь не понятно какие параметры следует задать в Open VI Reference.
В примере сделал упрощенную модель. Программа должна остановиться, когда счетчик дойдет до 6. У меня программа либо зависает, либо выдает разные ошибки.

Re: Рекурсия через Call By Reference

Добавлено: 24 дек 2018, 15:07
Artem.spb
Функция должна быть реентрантной, об этом ошибки и кричат.
У вас параметр вместо 256 идёт -256, задавайте числом х80 для простоты.