It would help to see the actual vi, but things look very constipated. The lower string indicator will only update if the string queue receives an element, AND the Boolean queue receives a TRUE, AND the enum is "acquisition" (or default) AND the event structure times out (which can never happen because no timeout value seems to be wired). Will probably never happen overall and the string never updates. In fact I believe you code is not even runnable unless there are hidden objects.
The lower loop requires both queues to fire to even proceed to the first case structure.
Start with a few tutorials and look at the guidelines for event structures. They should never be hidden inside deep stacks of structures.
(Sorry, posting by phone, might have missed a few subtle details)
Actually, there is a data from the VISA read function and entering the Enqueue function. However, I've tried to place the string indicator outside of the case structures and event structure and yet the Dequeue function, upon placing a probe, indicates "Not Executed"
Attaching the Problematic VI Will actually helps others to understand your problem and can give you solution to
the best of their knowledge.
Your problem might rely in the get byte at serial port.
How can you be sure that you are not getting fragmented data?
Read till get 0 byte with a delay of at least 10ms between loop. then all the data from a shift register will ensure that you have all data.
First the Architecture Needs to be reframed
The Problem is you have two Queue, One for Login Details and other for Serial data Transfer, Login Works Only Once But it waits in Dequeue indefinitely state as you haven't given Timeout, so even Data Queue is also waiting along with Login Queue.
It can be seen through the probe window
Did you also check which data is written into your string queue?
On your VI:
The whole "middle" loop (the VISARead part) can be simplfied to just 2 (two!) cases:
- Why do you need 20+ cases, when they all do the very same? (Their only difference was that "tag", but that again is the same as the case selector value…)
- Why do you need that BuidlArray in every case? Place it before the case structure!
Edit: remove that wait from the loop, it's not needed anymore!
How did you make sure you received exactly those tag values (nothing more, nothing less) within 500ms?
So what can you suggest with the architecture? I'm really confused on the architecture itself so I've tried different ways but it has similar problem.