Я пишу программу для управления двумя аналогичными устройствами в Labview. Чтобы избежать копирования кода, я использую ВПП. Но у меня есть часть кода, где я обновляю некоторые значения в графическом интерфейсе внутри цикла while. Я хотел бы знать, возможно ли каким-то образом иметь этот цикл внутри моего ВПП и иметь ВПП, отправляющий один из выходных параметров после каждой итерации.Обновление GUI LabVIEW из ВПП
ответ
Чтобы обновить GUI внутри ВПП вы можете выполнить одно из следующих действий:
- Создать очередь или Уведомитель в вашем верхнем уровне VI и передать ссылку в свой ВПП. В ВПП отправьте данные в очередь или уведомитель. На верхнем уровне VI есть петля, которая ждет данных в очереди или уведомителю и записывает это на индикатор передней панели.
- Создайте контрольную ссылку на индикатор передней панели на верхнем уровне VI и передайте ссылку на ваш ВПП. В ВПП используйте узел свойств, чтобы написать свойство индикатора
Value
.
Если вы посмотрите на справку LabVIEW для условий, выделенных жирным шрифтом, вы найдете документацию и примеры того, как их использовать.
Из этих вариантов я бы использовал очередь для любых данных, где важно, чтобы VI верхнего уровня получал каждую точку данных (например, если данные отображаются на диаграмме или записываются в файл) или уведомителю, где это требуется только то, что пользователь видит последнее значение. Использование контрольных ссылок для этой цели немного «быстро и грязно» и может вызвать проблемы с производительностью.
Если вам нужно обновить более двух таких индикаторов, вы, вероятно, захотите создать кластер , содержащий данные, отправляемые в очередь/уведомитель, или содержащие ссылки на управление. Сохраните свой кластер как typedef, чтобы вы могли изменять его содержимое, не нарушая свой код.
Спасибо, что помогает :) – user2738748