From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Best way to communicate between LabVIEW applications

I have software that is made up of let say three applications. Application A talks to application B and application A also talks to application C. I want to be able to upgrade application B without rebuilding application A or C. I want to simply just replace the exe and still be able to communicate.

 

My question is how would you develop the communication interface. Just looking for ideas here. Any thoughts would be greatly appreciated. We have thoughts as to how to accomplish this take just looking for the best most efficient and flexible way.

Tim
GHSP
0 Kudos
Message 1 of 8
(4,830 Views)

I have used TCP for that.  There are examples to get you going.  Also, I believe someone in the LAVA(?) forums has a network queue implementation which may work nicely depending on your application. 

My $.02 anyway


Paul
Message 2 of 8
(4,818 Views)

TCP/IP is a vanilla flavored as you can get and can be used to communicate between app instnaces on a machine and easily sclaes for use across multiple PC's.

 

If you can settle on a common interface and would like to avoid the details of TCP/IP then take a step up and use VI-Server Invoke nodes (which ride on top of TCP/IP) to invoke VI's in your targets. The plus on this one is VI Server will manage the link for you as well as data conversions. The negative I BELIEVE is the Call by Reference executes in the UI thread ( I THINK).

 

Ben

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

Yes it does... that one bit me just a few days back.


Paul
0 Kudos
Message 4 of 8
(4,811 Views)

I guess that would depend on What is being communicated and the resources shared by the origin and destination.

 

With some of the new 2010 features P2P streaming is looking very attractive for moving data via hadrware.  The new network streaming palatte will also have some use.

 

I suspect however that you just want to manage some small dynamic data structures.  Shared variables are pretty good but have some issues with potential race conditions.  If app A is the only writer I would lean towards using shared variables as long as the app instances are on the same machine.


"Should be" isn't "Is" -Jay
Message 5 of 8
(4,805 Views)

 


@Jeff Bohrer wrote:

I guess that would depend on What is being communicated and the resources shared by the origin and destination.

 

With some of the new 2010 features P2P streaming is looking very attractive for moving data via hadrware.  The new network streaming palatte will also have some use.

 

I suspect however that you just want to manage some small dynamic data structures.  Shared variables are pretty good but have some issues with potential race conditions.  If app A is the only writer I would lean towards using shared variables as long as the app instances are on the same machine.


 

 

to give an example. Lets say that I have airbag software (I made it using LabVIEW) and I want to talk to a high speed camera application (labVIEW based and I made it). I would like to be able to add new cameras and update to the camera software with out having to rebuild the airbag center software.

 

I am looking for something like event firing. I need to send a command to open the front panel. Have the operator set the cameras up and hve the camera software pass back the setup information (i.e. frame rate, picture size etc...). I also have calibration software that I want to have open the front panel have it send back a responce that it is running so I can shut down the DAQ and let the calibration software have it for calibration then it could send me an event that tells me when the software is closed so that I can restart DAQ in the main program again.

Tim
GHSP
0 Kudos
Message 6 of 8
(4,800 Views)

AH HA- I found it-  I had seen this before and it really does give a great overview


"Should be" isn't "Is" -Jay
Message 7 of 8
(4,777 Views)

 



With some of the new 2010 features P2P streaming is looking very attractive for moving data via hadrware.  The new network streaming palatte will also have some use.

 


 

This is off topic with respect the question of the original poster, but...

 

Peer to Peer streaming has to specifically with getting (Analog or Digital) data into a Flex RIO card.  For instance, I can use a High Speed Digitizer card, such as a PXIe-5122 as an anlog input module for my Flex Rio card by routing that data through one of the internal PXIe switches in my PXIe chassis.  Alternatively, I can use HS-DIO cards to send data to the Flex RIO card via P2P.  

 

So, the "peer" in the "Peer to Peer" has to do with cards in adjacent slots on a PXIe chassis, rather than from application to application, I am afraid.

 

 

 

 


--------------------------------------------------------------------------------------
Wes Ramm, Cyth UK
CLD, CPLI
0 Kudos
Message 8 of 8
(4,442 Views)