From 11:00 PM CST Friday, Feb 14th - 6:30 PM CST Saturday, Feb 15th, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
From 11:00 PM CST Friday, Feb 14th - 6:30 PM CST Saturday, Feb 15th, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
07-27-2015 03:49 PM - edited 07-27-2015 04:06 PM
I am having a rather peculier problem that I can't track down what is going on.
I have a QMH structure with several queues to control several loops. I have the exit button tied to Exit cases on all my loops, yet when I hit the exit button, LabVIEw doesn't stop. I have figured out that two of the loops don't ever send a true signal to the stop node, but the loops themselves don't keep updating. If I run the program with Highlight execution on, the program stops like it should, but run without highlight execution it hangs up. The probe window stops showing execution times for the loops, so it seems like the loops have stopped, but LabVIEW keeps running. I've tried everything I can think of to no avail.
Any ideas what is going on?
Solved! Go to Solution.
07-27-2015 04:25 PM
You are missing lots of subVIs, and type defs.
"Include all subVIs, typedefs, global variables, project files, and any other files you made to run the VI."
Unofficial Forum Rules and Guidelines
Get going with G! - LabVIEW Wiki.
17 Part Blog on Automotive CAN bus. - Hooovahh - LabVIEW Overlord
07-27-2015 04:40 PM
I can't say why the program is not stopping, because you did not include all of the VI's. However, I can offer some pointers. First, It looks like you are not stopping the DAQ task or closing any references when the Exit button is pressed. I suggest creating a new event that fires when the Exit button is pressed and call it something like "Send stop". Then have your message handler send your other loops messages to clean up references and you can stop these loops after cleaning up. Also, you can fire your exit event in this state, so the message handler is stopped.
07-27-2015 04:56 PM
I wasn't sure how to upload all my code...looks like I guessed wrong. The attachment should have allt he VI's now as I attacehd parent folder to the project. I'm not sure how to attach a VI with all sub Vi's and librariesany other way.
In the meantime I have been adding code in other case structures and now everything works fine. I didn't touch any of the exit cases, or any of the message queues which had me baffled. I added the max/min for an array code and an indicator.
I don't know what I changed that made it work.
07-28-2015 07:15 AM
I'm not seeing anything about your shutdown, but here are a couple of comments:
1. You do not need the Wait 0 in all of your loops. The dequeue process and the waits inside of your self enqueueing cases will take care of not letting the loop be greedy.
2. In the Display Loop, you do not need to enqueue the "Update Display" state since that is being done by the DAQ Loop. You are likely getting into a weird state with that where you have extra elements in the message queue, but you are waiting on the data queue.
#2 might actually be your problem. If the DAQ Loop was stopped, but there are still more UpdateDisplay in the message queue for the display loop, but the data queue is empty, therefore you will be waiting forever for data to come in. I would actually get rid of that data queue and just use the command queue (put the 2D Array in the variant data of the message). Do the same for the Logging Loop.
08-12-2015 09:29 AM
Sorry for the late response. Have been busy with other projects at work.
I did get it to work and I believe what was happening is what crossrulz mentioned above. I modified the program and now the "Update Display" case only gets called from one place, so now I an't get into a state of having several cases.
Thanks again guys!