2015-07-30 1 views
5

Я пишу программу для управления двумя аналогичными устройствами в Labview. Чтобы избежать копирования кода, я использую ВПП. Но у меня есть часть кода, где я обновляю некоторые значения в графическом интерфейсе внутри цикла while. Я хотел бы знать, возможно ли каким-то образом иметь этот цикл внутри моего ВПП и иметь ВПП, отправляющий один из выходных параметров после каждой итерации.Обновление GUI LabVIEW из ВПП

ответ

6

Чтобы обновить GUI внутри ВПП вы можете выполнить одно из следующих действий:

  • Создать очередь или Уведомитель в вашем верхнем уровне VI и передать ссылку в свой ВПП. В ВПП отправьте данные в очередь или уведомитель. На верхнем уровне VI есть петля, которая ждет данных в очереди или уведомителю и записывает это на индикатор передней панели.
  • Создайте контрольную ссылку на индикатор передней панели на верхнем уровне VI и передайте ссылку на ваш ВПП. В ВПП используйте узел свойств, чтобы написать свойство индикатора Value.

Если вы посмотрите на справку LabVIEW для условий, выделенных жирным шрифтом, вы найдете документацию и примеры того, как их использовать.

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

Если вам нужно обновить более двух таких индикаторов, вы, вероятно, захотите создать кластер , содержащий данные, отправляемые в очередь/уведомитель, или содержащие ссылки на управление. Сохраните свой кластер как typedef, чтобы вы могли изменять его содержимое, не нарушая свой код.

+0

Спасибо, что помогает :) – user2738748