To choose the better method you must consider following:
If program A and B are alternatively doing their work (A is working B waits and vice versa) VI server is the easiest method to implement. You need to set some parameters with "Set Control Value", then let the VI run and read the the data with "Get Control Value". Now you can do your calculations.
If the programs would do their work in parallel you can only use the TCP/IP or DataSocket solution. With them you can retrieve data with program B send them to program A which will do the calculations. Depending on the time each program needs it can be neccessary to handshake between the programs to avoid loss of data. We have done this in the following way: Create a named queue which will
have a strict typedef datatype to hold (LV6.1) or the flattened string (LV6.0.2). With VI server we started a VI which also creates this queue. This VI waits an unlimited time for reading an element. If an element is read the element is send over TCP/IP and the VI now waits for an answer from the other program. If the answer comes it waits for the next element. Ending the program the queue will be destroyed and the read will end with an error. In this case the VI will stop running. If you are not sure that program A will always answer (someone killed it with the task manager (windows) or the kill command(UNIX)) you have to do some error handling during the wait for the answer too.
In the case of global variables the programs must be in the same executable.
Sorry for my late response but 1st May is a holiday (Feiertag) in Germany so I had 4 free days.
Waldemar
Waldemar
Using 7.1.1, 8.5.1, 8.6.1, 2009 on XP and RT
Don't forget to give Kudos to good answers and/or questions