Как запустить Labview VI в качестве фоновой задачи через вызов ActiveX?(без активности ActiveX) - PullRequest
1 голос
/ 15 февраля 2012

Я хотел бы запустить Labview VI через ActiveX в Matlab.

Я использую следующие команды:

e=actxserver('LabVIEW.Application');
vipath='C:\DATA\Labview\test.vi';
vi=invoke(e,'GetVIReference',vipath);
vi.Run;

Это работает правильно, и ВП виден на передней панели. Тем не менее, Matlab продолжает ждать, пока VI не закончится. Я хочу, чтобы Labview запускал VI без вывода сообщений, не давая Matlab (через ActiveX) ждать.

Как можно выполнить ВП, не занимая ActiveX? Есть ли стандартный способ сделать это? (Я предполагаю, что так и должно быть, учитывая, насколько Labview ориентирован на многозадачность - что не относится к Matlab в его стандартной форме).

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

Я наконец-то нашел ответ (спасибо smercurio_fc на форуме NI):

Чтобы запустить ВП в фоновом режиме (не дожидаясь завершения):vi.Run (1);Чтобы запустить его и дождаться завершения его выполнения:vi.Run (0);или жеvi.Run;В фоновом режиме выполнения с vi.Run (1) выполнение может быть прервано с помощью vi.Abort .Во время выполнения входные и выходные значения могут быть изменены с помощью vi.SetControlValue и vi.GetControlValue.Например, чтобы получить значение числового элемента управления «z» во время выполнения:vi.GetControlValue ( 'г')

1 голос
/ 16 февраля 2012

Вы можете либо:

  • Запустите LabVIEW.exe как процесс, указав ВИ в качестве аргумента (для этого обратитесь за помощью к поиску). Есть наверняка способ сказать Matlab не ждать окончания выполнения процесса
  • Запускайте ВП динамически, используя VI-сервер, внутри ВП запуска, и пусть Matlab вызывает ВП запуска. Последний вернется сразу после вызова вашего ВП, и Matlab не будет ждать окончания вашего основного ВП.
...