A problem in the VI server is that it doesn't handle interruptions on the network very gracefully. In fact it handles them rather poorly. Doing remote calls across a network takes a little more work than is shown in the example.
The client-side of the link only handles certain network interruptions correctly. Specifically, if the network is down when you try and open the connection, the code catches that and the call terminates gracefully, likewise if the connection goes bad between when you open it and you attempt to use the connection, all is well. The problem is when the network goes down in the middle of the remote call. The function will never timeout--in fact the last time I talked to NI about this bug (and it IS a bug) they asserted that there is no wa
y to detect the timeout. Funny, every other network-enabled package on the market can detect this kind of failure, but not LabVIEW. (sorry for the mini-rant)
To work around this limitation in LabVIEW's networking, you have to create an acquisition loop that runs independently from the rest of your program and a watchdog process. The idea is that when the watchdog sees that the acquisition loop has hung for some user-defined time 1 sec, 2 sec, whatever; the watchdog aborts the acquisition VI and then relaunches it. To trigger the watchdog, I take the loop counter for the acquisition loop and pass it to a global. If the watchdog sees this global stop changing for the timeout period it does it's thing.
If you need specifics, feel free to contact me directly...
Mike...
mporter@arielcorp.com