NI TestStand

cancel
Showing results for 
Search instead for 
Did you mean: 

Run VI on a Remote Computer EXE Application Instance?

Solved!
Go to solution

TestStand has the option to "Run VI on a Remote Computer" under LabVIEW Advanced Settings.  My understanding is the VI is run under the "Main Application Instance" if no project path is provided.

 

If the Remote Computer is running a LabVIEW executable (using the LabVIEW Run-Time Engine), is it possible to Run a VI on the Remote Computer within the executable?

 

I attempted to select the "Always Run VI in LabVIEW Run-Time Engine" but this did not appear to run under the executable namespace.  I am aware that VI server can be used to communicate with the remote computer executable.  However, if TestStand was capable of calling a VI within an EXE this would eliminate the need to create VI server wrapper functions.

 

Any advice is appreciated.  Thanks!

CLA, CTA
0 Kudos
Message 1 of 10
(6,950 Views)

Hi LVB, 

 

I am not sure if I understand your question. If your program is coded to call a subVi, then when you compile it into an application and deploy it, as long as you include the subVi being called as well as all other dependencies, your LabVIEW executable should call a Vi. 

 

If you are referring to changing the Vi that your executable is calling dynamically, I would recommend the use of a DLL over an executable. This way you can configure inputs and outputs and have, for instance, an input or function into your DLL be a filepath to the Vi that you want to call. Please let me know if I have addressed your questions. 

 

Regards,

Jackie

 

 

 

DAQ Product Marketing Engineer
National Instruments
0 Kudos
Message 2 of 10
(6,936 Views)
Jackie,
Another computer (server) is running a LabVIEW executable under the LabVIEW Run-Time Engine.  I would like to know if it is possible to access and run one of the VIs inside of the executable using NI TestStand.  See the articel below for a description on applicaiton instances:
Working with Application Instances
The knowledgebase article below is similar to my goal with the following exceptions:
  • The LabVIEW Development Environment is run under NI TestStand
  • The LabVIEW Run-Time Environment is on a remote computer
How Can I Communicate Between the LabVIEW Run-Time Environment and the Development Environment on th...
CLA, CTA
0 Kudos
Message 3 of 10
(6,928 Views)

Hi LVB, 

 

I believe the fundamental question is if you can access a Vi within an Executable, which for the reasons listed in this article, is not possible regardless of the program you are using:

Accessing VIs Inside of a LabVIEW Executable or DLL in LabVIEW 8.2 and Later 

The ability to access Vis within an executable was changed from LV 8.2 and later because of code security and Microsoft Vista compatibility. This is explained in depth in this article. Please let me know if I have misunderstood your question. 

 

Good luck!
Jackie

DAQ Product Marketing Engineer
National Instruments
0 Kudos
Message 4 of 10
(6,902 Views)

@Jackie_B wrote:

Hi LVB, 

 

I believe the fundamental question is if you can access a Vi within an Executable, which for the reasons listed in this article, is not possible regardless of the program you are using:

Accessing VIs Inside of a LabVIEW Executable or DLL in LabVIEW 8.2 and Later 

The ability to access Vis within an executable was changed from LV 8.2 and later because of code security and Microsoft Vista compatibility. This is explained in depth in this article. Please let me know if I have misunderstood your question. 

 

Good luck!
Jackie


Jackie, it IS possible to access a VI within an LabVIEW executable.  This connection is made through VI Server (TCP) or ActiveX to with the EXE.

 

The article you reference states that pre LabVIEW 8.2, it was not necessary to enable ActiveX or VI Server to achieve this.  LabVIEW 8.2 and beyond requires the developer to explicitly enable remote access.

 

I am trying to make VI calls to an executable that will be running VI server and exporting the VIs I wish to call.  If you look at the LabVIEW Advanced Settings for the LabVIEW module, you can notice that the Remote Host, Project Path, and VI Path are required.  I believe this is for the VI server calls that will be made.  How does TestStand under the hood make the "Run VI on Remote Computer" calls?  How do I configure TestStand to make these calls to an EXE running VI server?

CLA, CTA
0 Kudos
Message 5 of 10
(6,896 Views)

Hi LVB, 

 

Teststand will simply call a LabVIEW module, what the module does depends on the program written in LabVIEW. Therefore, to access an executable remotely from LabVIEW, please refer to the following articles and examples: 

Open VI Remotely

What is the VI Server?

Using VI Server to Pass Data Between a VI and a LabVIEW Executable

 

Once you have successfully configured your LabVIEW program to communicate to a remote executable, all you will need to do to make this successful in Teststand is to drop a LabVIEW Action Step onto your Sequence and point it to where the Vi is stored.

ViPath.png

 

Regards,

Jackie

DAQ Product Marketing Engineer
National Instruments
0 Kudos
Message 6 of 10
(6,877 Views)
Solution
Accepted by topic author LVB

Hi LVB,


I have been looking into this a bit more and I believe I have the solution you are looking for. First off, I will be updating the article How Can I Communicate Between the LabVIEW Run-Time Environment and the Development Environment on th..., as the string you must include in your executable's INI file is no longer the following:

 

[name_of_exe]

server.tcp.enabled=True

server.tcp.access="+localhost"

server.tcp.port=3362

 

but needs to look like the following, which can be copied directly from LabVIEW's ini file (found at C:\Program Files\National Instruments\LabVIEW\LabVIEW.ini):

 

[name_of_exe]

server.tcp.enabled=True

server.tcp.acl="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

server.tcp.port=3362

 

Once you configure your executable file, you can call the Vi within the executable directly by using a code module. Drop an action step into Teststand, go to Advanced Settings and configure the settings to run your Vi remotely. Input just the Vi name into your Remote Vi Path, as it will throw an error if you use the full path. For instance, if I had a Vi named cubed.vi, I would input this into the Remote Vi Path instead of C:\Users\Admin\Desktop\cubed.vi. You should then be able to call this successfully. Please let me know if you have any further questions. I hope that this is helpful for you.

 

Regards,

Jackie

DAQ Product Marketing Engineer
National Instruments
0 Kudos
Message 7 of 10
(6,824 Views)

Hi LVB,


There is a better way to achieve the TCP/IP functionality in the executable than what I reported. You can avoid editing the ini file altogether by right clicking on My Computer in your project and selecting Properties. You can then select Vi Server and configure the server for TCP/IP communication. When you build your executable for this project, it will automatically configure the INI file. Please let me know if you have any further questions!

Regards,

Jackie

DAQ Product Marketing Engineer
National Instruments
0 Kudos
Message 8 of 10
(6,817 Views)

Hi

 We are making a project where RTOS is using for RT program.  We using PXI-1052 + RTD and Thermocouple SCXI module for Datalogging and control the actuater and motor. Now I want to create .EXE and Installer to run the same Host VI in Different PC where LabVIEW is not installed.

 

Can  we create .EXE or installer  which can log  the data from different sensors and update it in .exe VIs?

 

Regards,

Srikant

AE

0 Kudos
Message 9 of 10
(6,574 Views)

This doesn't sound like a TestStand question, just a LabVIEW question. Re-post in the LabVIEW forum.

 

If your different PC system has no LabVIEW, not even the RTE, then you can include as part of the Installer to installing the LabVIEW RTE which you will need to run your application.

 

 

Regards
Ray Farmer
0 Kudos
Message 10 of 10
(6,571 Views)