Cat Posted March 12, 2009 Report Share Posted March 12, 2009 Puzzle of the day: Open a new vi and drop an array on the front panel. Fill array with a dbl. On the BD, create a reference to the array. Then right-click on the reference and create a control of the reference. Up to this point there should be no errors reported. Now induce an error. For example, make a local variable from the array but don't attach it to anything. Check the Error List. Along with the expected "local variable not connected to anything..." is another error: "Front Panel Terminal 'Array': hidden front panel control has undefined type" Delete the local variable and once again, there are no errors reported. Where did this come from? If there was an error, why didn't it show up until there was another completely unrelated error? What don't I understand about references (well, a whole lot, probably, but in this case specifically)? A few notes: 1) It doesn't seem to matter what the array is filled with, it still breaks 2) A cluster breaks it, too 3) If you right-click on the reference control on the FP and select "Show Control", it shows an empty array 4) If you delete the created FP reference control and re-create a FP reference control by dragging the BD reference to the FP, it does *not* show the extra "hidden front panel control has undefined type" error (behaving correctly, I assume) 5) The FP reference created in #4 shows a dbl array when you select "Show Control" (behaving correctly, I assume) 6) If you do the above exercise with a plain numeric, it does *not* show the extra "hidden front panel control has undefined type" error (also behaving correctly, I assume) My conclusions: 1) creating a FP control reference of an array/cluster by directly creating a control on the BD isn't working right (but scalars are fine), or 2) It's working exactly how it should be working, but when the error gets reported (after something else goes wrong) isn't working right, or 3) I don't have a clue about references Can anyone replicate this or let me know what it is I'm missing? I'm using v8.5.1. Cat Quote Link to comment
jzoller Posted March 12, 2009 Report Share Posted March 12, 2009 QUOTE (Cat @ Mar 11 2009, 10:58 AM) ...Can anyone replicate this or let me know what it is I'm missing? I'm using v8.5.1. Cat I think you're seeing a remnant error message from LV development that's been (mostly) surpressed. (Warning: the next steps might just cause your computer to melt, explode, or give strange websites your CC number. If this bothers you, go to the next thread now ) 1. Use the http://wiki.lavag.org/Insane_Objects' rel='nofollow' target="_blank">lvdebugkeys trick. 2. Delete everything on your front panel but the new reference. 3. In Heap Peek, highlight the FPHP line for your vi. 4. In Heap Peek's object list, select the item labelled "Array". You'll see a bit in the description that is something like: 'Array': 1-D array of (@0x0) ' ': void (@0x0) This is the "hidden" array type behind the refnum control. (Clicking F will give you a hint to its location. Selecting "Numeric Label" and clicking F will actually show you the darned thing.) Since the type is "void", I suspect the compiler normally would complain (break the VI), but that particular error has probably been explicitly ignored. The error showing up in the error dialog is likely an oversight. Interesting behavior, but probably not a big deal. Joe Z. Quote Link to comment
Aristos Queue Posted March 12, 2009 Report Share Posted March 12, 2009 Here's a far simpler explanation: Pop up on the Refnum control and select "Show Control". That's the control that is being talked about. Quote Link to comment
Cat Posted March 13, 2009 Author Report Share Posted March 13, 2009 QUOTE (jzoller @ Mar 11 2009, 03:34 PM) I think you're seeing a remnant error message from LV development that's been (mostly) surpressed.(Warning: the next steps might just cause your computer to melt, explode, or give strange websites your CC number. If this bothers you, go to the next thread now ) 1. Use the lvdebugkeys trick. [...] Interesting behavior, but probably not a big deal. Joe Z. Where was this wiki page 10 or 15 years ago when a day rarely went by that LV wasn't throwing an "Insane Object" error? :-) Thanks for the link! And no it's not a big deal, except when this control is in a bundle that I use to feed a state machine thru 15 states and the error appears in Error List 30 times. Then it's a bit annoying. QUOTE (Aristos Queue @ Mar 11 2009, 06:26 PM) Here's a far simpler explanation: Pop up on the Refnum control and select "Show Control". That's the control that is being talked about. Thru process of elimination I figured out what control was throwing the error. What I don't understand is the difference in behaviour related to 1) how the reference is created, and 2) whether it's a reference to an array or a scalar. That's the Reader's Digest version of my previous page-long post. :-) Cat Quote Link to comment
jzoller Posted March 14, 2009 Report Share Posted March 14, 2009 QUOTE (Aristos Queue @ Mar 11 2009, 04:26 PM) Here's a far simpler explanation: Pop up on the Refnum control and select "Show Control". That's the control that is being talked about. ... I honestly didn't know that option was there. Hrmph. Maybe in another decade I'll know all this stuff. Joe Z. Quote Link to comment
Yair Posted March 15, 2009 Report Share Posted March 15, 2009 QUOTE (jzoller @ Mar 13 2009, 11:18 PM) ... I honestly didn't know that option was there. Did you know that you can drag controls into a reference (control ref, queue ref, notifier ref, etc.) to make a reference of the control's type? Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.