From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Certification

cancel
Showing results for 
Search instead for 
Did you mean: 

Please review this Car Wash Solution with Queue LV 2014

Solved!
Go to solution

Any advice would be greatly appreciated...honest

0 Kudos
Message 1 of 5
(5,044 Views)
Solution
Accepted by topic author DanlB

Overall I thought it was well done.  Documentation was good but remember to put tip strips on your front panel items.  I would also be careful about bends in wires or objects overlapping on the block diagram.  This wasn't a big problem but it got a bit messy in Process Options.

 

One small thing I noticed was that you fed your wash options to an terminal out on your error case but it never went anywhere.

 

A bigger thing I noticed was how you were handling errors in your consumer loop.  If you receive an error you stop your consumer loop but don't send any information about that anywhere.  If you error out in the loop you do not have an error handler so the user will not know that the consumer loop has stopped but the producer loop will still be waiting for input from the user.  A user can still send a message to start but it will never go anywhere.

Matt J | National Instruments | CLA
0 Kudos
Message 2 of 5
(5,037 Views)

Cool. Thanks Matt.

Very good point on the errrors. I hadn't thought through the consequences of errors on both loops. Trapping the errors is not sufficient.

The one case was a bit messy and could use a redraw, but I was out of time.

 

I have a couple of questions about the tip strips comment.

I did put tip strips on all front panel controls and indicators

Did they now show up?

Are they need for subvis that do not display when called?

 

As for that "One small thing" 

I was going to use a shift register and changed my mind then forgot to clean it up.

 

Thanks again.

Dan

 

 

0 Kudos
Message 3 of 5
(5,032 Views)

Hi again Matt.

I came up with 2 solutions for dealing with errors.

1)Generate an error message containing words that let the user know the program must be manually exited due to an error

2)Generate a user event in the consumer loop that lets the producer loop know it must quit the program due to error and show a dialog on the way out

 

To test this I added a Button named error that enqueues a command that  causes the consumer loop to generates an error

 

Also quiting the producer loop and releasing the queue was generating an error in the consumer loop which caused it to stop

 from the error case.

That works but badly so a better way was to enqueue a quit command to the consumer loop. Done in both updates.

 

If I were doing the exam I would use the first in the interests of time. Crude but lets the user know.

I attached both versions in case others were interested.

Download All
0 Kudos
Message 4 of 5
(5,026 Views)

Realized producer loop which also quits on error will leave the consumer loop running.

So added when producer is in error -> enqueue a Quit so it quits too

0 Kudos
Message 5 of 5
(5,013 Views)