01-09-2015 10:46 AM
I am a very longtime user of LabView but haven't used TestStand in years. I have an application where I launch a VI with a named queue handler that monitors a communications device. I leave it running in order to maintain the comm link syncronization. I then use several LavView applications sequentially and each can access the named queue while it is active.
This all works flawlessly when used stand alone. I set up TestStand and fire off the queue handler in a New Thread and leave it running. I then step further in the sequence and launch one of the other applications. It does not successfully retrieve the data from the named queues.
These are the exact same VIs,only now being launched from TestStand. Is there something I need to do the allow the applications to communicate via the named queues?
01-09-2015 01:21 PM
Here are the two sample programs. You can launch both VIs in LabView and they communicate. Launch them in TestStand and they don't.
01-13-2015 10:48 AM
something to be careful about is what application instance you are running in.
LV Queues do not cross application instances. This means if you have some of your LV code running in the LV RunTime Engine, and then run other LV code in the LV Development environment, it won't see the queues that are in LV RTE.
01-15-2015 02:48 PM
In other words, all steps that call VIs that use the que should have Project Path: set to the same project, or make them all empty.
Also your LabVIEW adapter in Configure>>Adapters ... should have Options, Reserve Loaded VIs for Execution checked.
You could also create a LabVIEW class that encapsulates everything and share the reference between threads to be really ninja. This would be a good template,
https://decibel.ni.com/content/docs/DOC-15385
cc