10-13-2010 07:29 PM
My Application is designed to coordinate several (16) separate test stations from one control. The test stations can run independently. I have a Test Manager application that launches independently running Test Runner VIs when the user has selected a test to run and the conditions to run it with. There can be 0 to 16 Test Runner VIs running at any given time. Each Test Runner VI uses the same template Test Runner.VI code but is given a unique Name based on a randomly generated GUID. I use a sequence of the New VI function, VI.FP.Open and VI.Run VI to create the VI based upon the template, give it a unique name and then launch it to run independently. See JPG fragment attached.
This design works perfectly well when used in the LabView 2010 development environment. But it does not work when I build the Test Manager as an EXE application. There are no errors generated, but the new VI is not launched and I think that one of the functions in the sequence never returns. I am not sure if the New VI is created or not.
Does anyone know how to modify this so that New VIs can be created, uniquely named and launched, that will work properly no matter whether the creating VI is running in either development (for debugging) or as a built application?
Does the sequence New VI function, VI.FP.Open and VI.Run VI work when used in a Built application? Is there some other method that will work to serve this need?
Is there a function in LabView that will launch an exe file like WinExec does? Perhaps I can use that.
THANKS MUCH for any advice.
Solved! Go to Solution.
10-13-2010 07:48 PM
Are you using any paths in your VI?
I do see the Application Directory in the image you posted. Do you have other paths?
Do you use the same computer that you developed with to run the executable?
You can create indicators for the paths and confirm that they are okay. Do you automatically close the front panel when closing the application?
If so, you can disable that portion of the code, re-build the code and look at the paths and any error message.
@dbaechtel wrote:
My Application is designed to coordinate several (16) separate test stations from one control. The test stations can run independently. I have a Test Manager application that launches independently running Test Runner VIs when the user has selected a test to run and the conditions to run it with. There can be 0 to 16 Test Runner VIs running at any given time. Each Test Runner VI uses the same template Test Runner.VI code but is given a unique Name based on a randomly generated GUID. I use a sequence of the New VI function, VI.FP.Open and VI.Run VI to create the VI based upon the template, give it a unique name and then launch it to run independently. See JPG fragment attached.
This design works perfectly well when used in the LabView 2010 development environment. But it does not work when I build the Test Manager as an EXE application. There are no errors generated, but the new VI is not launched and I think that one of the functions in the sequence never returns. I am not sure if the New VI is created or not.
Does anyone know how to modify this so that New VIs can be created, uniquely named and launched, that will work properly no matter whether the creating VI is running in either development (for debugging) or as a built application? You can query if it is running as an application or as development.
Does the sequence New VI function, VI.FP.Open and VI.Run VI work when used in a Built application? Is there some other method that will work to serve this need? Yes they should
Is there a function in LabView that will launch an exe file like WinExec does? Perhaps I can use that. Building an executable should be fine. It's most likely something silly and you'll end up saying D'Oh!
10-13-2010 08:23 PM
"New VI" is scripting. That's why it's blue. Scripting is explicitly not accessible in runtime.
what you want is "Open VI Reference" on a VI that is set to re-entrant execution, with the proper options set in the VI's properties and wired to the Open VI ref node's Options input (you want 0x08 for reentrant with reserved data spaces). You could use a .vit, but that's not what they are for.
Take the time to read through the help file for Open VI reference, it'll be worth it.
other comments:
Use the fp.open method, not the property.
"Auto Dispose Ref" = True acts more like a standard VI call: LV will automatically close the ref when the called VI goes idle.
10-13-2010 09:28 PM
If I use a Open Vi Reference function instead of the New VI function I get a 1043 error when I try to VI.FP.OPEN.
This works perfectly fine in LV2010 development mode but fails in runtime.
How do I launch a VI pragmatically in runtime mode from a Built application exe. ?
10-13-2010 10:16 PM
That is why I suggested you use the method instead of the property.
try the help file for fp.open (property)
http://zone.ni.com/reference/en-XX/help/371361G-01/lvprop/vi_fp_winopen/