Вызов другого ВП во время выполнения - PullRequest
1 голос
/ 30 марта 2020

Я создал два vi в LabVIEW: один для получения последовательных данных, а другой - для отображения полученных данных на графике XY.

Второй ВП вызывается, когда происходит событие изменения значения на кнопке в Первый VI. Но проблема в том, что при вызове второго ВП первый ВП приостанавливает свою работу, поэтому значения не обновляются.

Есть ли какое-то решение для этого?

Блок-схема первого ВП :

first VI block diagram

Первая передняя панель VI:

first VI front panel

Второй VI Блок-схема (ВСЕ ДАННЫЕ):

ALL DATA block diagram

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Вам нужно будет использовать функциональность VI-сервера. Точный метод менялся с годами, но я полагаю, что текущая рекомендуемая реализация - это использовать «Начать асинхронный вызов»

. Есть пример, который вы можете просмотреть, используя пример поиска. Чтобы открыть искатель примеров, перейдите в «Справка»> «Найти примеры». Затем выберите вкладку «Поиск» и найдите «асинхронный». Наконец, выберите ВП под названием «Asynchronous Call and Forget.vi»

Существуют и другие варианты асинхронных реализаций, но, вероятно, это хорошее место для начала.

0 голосов
/ 30 марта 2020

Ну, вы делаете неприятные вещи с глобальными переменными. Это работает, но не считается хорошей практикой. (Посмотрите на очереди и уведомители ). Кроме того, я не вижу, как ваши данные записываются в эти переменные ...

В любом случае, поместите ваш второй ВП в отдельный while-l oop и запланируйте его примерно до 100 мс (то есть обычно достаточно, чтобы обновить лицевые панели или взаимодействовать с пользователями. Я не уверен, что ваше событие-кнопка - правильный путь к go. Именно потому, что второй ВП ожидает обратного вызова. Просто используйте простая кнопка и истинно-ложное дело, чтобы второй ВП продолжал работать (это может даже быть решением, если вы не хотите переносить дело во второй ВП). Просто убедитесь, что вы изменили механику эта кнопка является переключателем, потому что вы проверяете ее значение не с бесконечной скоростью и хотите, чтобы она каждый раз перехватывалась, вы нажимаете ее;)

...