LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Application splitted into two .exe

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

0 Kudos
Message 1 of 15
(3,312 Views)

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...

Best regards,
GerdW


using LV2016/2019/2021 on Win10/11+cRIO, TestStand2016/2019
0 Kudos
Message 2 of 15
(3,304 Views)

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.

 

Message 3 of 15
(3,293 Views)

Of course, the client have a LabView dev. version installed on the PC!

0 Kudos
Message 4 of 15
(3,278 Views)

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).

Message 5 of 15
(3,267 Views)

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!

0 Kudos
Message 6 of 15
(3,220 Views)

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

Applications Engineer
National Instruments
0 Kudos
Message 7 of 15
(3,189 Views)

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...

0 Kudos
Message 8 of 15
(3,184 Views)

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 

0 Kudos
Message 9 of 15
(3,168 Views)

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

Retired Senior Automation Systems Architect with Data Science Automation LabVIEW Champion Knight of NI and Prepper LinkedIn Profile YouTube Channel
Message 10 of 15
(3,166 Views)