‎08-05-2011 09:18 AM
Hello,
I'm working in LV 8.5 and I looking for a way to split my application in two .exe.
Why? The main part of my application is private but I want to open the data filtering part of the application to allow the client to create its own VIs.
So, I'm acquiring 5000 sample each 3 sec. and I want to open the data filtering. So, the client VI input is a 1D array of 5000 points and the VI output is a 1D array of 5000 points.
How can I build my application and call an outside VI or an outside .exe... ?
Thanks, Jean-Marc
‎08-05-2011 09:35 AM
Hi Jean-Marc,
you could make the "outside exe" a DLL. I think this would be the easiest way...
When you create two executables you have to define a way of communication between them (like TCP or shared variables). This easily get's more complicated than you want it to be...
‎08-05-2011 10:10 AM
You're talking about a client VI. This means the client has LabVIEW as well. You could run the client VI in LabVIEW using VI Server.
‎08-05-2011 10:54 AM
Of course, the client have a LabView dev. version installed on the PC!
‎08-05-2011 02:03 PM
Again, in this case the easiest solution might be to run the VI in LabVIEW using VI Server.
A potential downside is that LabVIEW must be running for VI server to work (LV could be started using system exec or probably other ways).
‎10-25-2011 12:43 PM
Do you have a example...
Is it fast enough for data acquisition? My sampling rate is 1.6kHz (vector of 5000pts) and I have to filter every buffer!
‎10-26-2011 07:08 PM
Hi Mivil,
Are you asking if the VI Server option will be fast enough? Is there something that prevents the dll option that was mentioned? I think that would be the easiest way to protect part of your code and have the other part still accessible to the client to work with, but I may be misunderstanding.
Regards,
-Dave C
‎10-26-2011 09:30 PM
The DLL is still a available option.
But I'm sending a 2D matrix and I don't remember if the DLL is frendly with 2D matrix. I know resizing the matrix is not a recommanded but I don't know if I should consider other limitation.
Thanks...
‎10-27-2011 11:14 AM
Hi Mivil,
You can definitely pass a 2D array as an input argument to a DLL, as long as you write it correctly. There is a helpful article on how to write a DLL in Labview in the Labview help under "Building a Shared Library," although DLLs that you write in C, etc. can also be called in Labview.
Best,
Dan N
Applications Engineer
National Instruments
‎10-27-2011 11:43 AM
For a second I thought I wondered off into the wrong forum with all this talk of a dll.
Use VI Server Call by Ref node where you define the icon patern and your user puts it in the right place for your app to find. There will be a small performance hit since the data is transfered in/out in the UI thread but the crunching will not be forced to run in the UI thread.
A dll call would have to run in the UI thread, unless you configured the call for other but.... then you are trusting your user to REALLY develop a thred safe dll.
I encourage the Pure_G solution.
Ben