Condense property node elements

Hello,
Attached is a snippet of a program in which after the program goes into a specific state, the front panel elements are made either visible or invisible or there are value changes.
In my actual VI, I have a lot more front panel elements, and in trying to keep my code consistent and easy to follow, if I line up the propery nodes of the elements in the block diagram, the block diagram can extend to over 2 screens. 
I would like to know if there is a procedure that I can adopt where I can condense the activation of the property nodes of elements from the front panel so that the property nodes do not extend over 2 screens as it makes it harder for my collegues with a laptop to follow.
Thanks,
hiNi.
Attachments:
Visibility.llb ‏39 KB
Visibility.llb ‏39 KB

I would suggest that instead of using property nodes in each state to update the values of your indicators, you could just place the indicator terminals outside of your state structure (but within the while loop) and pass whatever value is appropriate for the state out of the case structure.  Writing directly to the control instead of using property nodes will be faster and will save you a lot of space.  It also generally scales better, as you've found out.  You're already doing something like this for your status updates- why not the rest of the indicators?  For hiding/showing elements, it would be more compact to use explicit instead of implicit property nodes and for loops.  You can also use explicit property nodes within subVIs, which will go a long way towards making things smaller and neater.
Control References: Overview (Creating and using Implicit vs. Explicit nodes)
http://www.ni.com/white-paper/3159/en/#toc3
This may be oversimplifying things on account of your basic example, but in general you'll be better off grouping your indicator values into a cluster that's stored in a shift register (like your status string) and then modifiying the cluster contents as needed.  This allows you to start adding logic in subVIs much more easily. It's a lot easier to avoid race conditions caused by writing values from multiple locations as well as things get more complex.
Regards,
Tom L.

Similar Messages

  • Can we change the property of each element of an array using property node or by other methods?

    Hello all,
    Can we change the property of the elements of an array. For example:
    I have an array of combo-boxes. Can i have such a scenario that different combo-boxes of the array will have different items to select an item.
    I am able to set the different "values" in different combo-boxes bu using "to be more specific class" property node.
    But i could not set the different item list in different combo-boxes.
    Please give me the solution.

    Thanks a million dave!!!!!
    I have learnt a very new and innovative thing...
    I just wanna ask you one more question in the above context.
    Can i have listbox or combo-box in a table just like in an excel sheet where we can have listbox by using "data validation" property for different cells having different list.Can i have this in labview. Because for this i have to super-impose the combo-boxes on the table and treat them separately.
    We have to take those combo-box values and put in table and then store it.I have attached one VI to show the scenario.
    And this is the alternative solution of the array problem which u have already given. So please suggest me between the two or any alternative solution.
    Thanks,
    Ankit Madaan
    Attachments:
    Recording _Table.vi ‏19 KB

  • Using LV Class Property Nodes in In-place Element structure causes the code to halt

    I have some code written in LV RT 2010 that uses property nodes from a LVOOP class that I created.  I am using access the property node from inside an in-place element structure.  When the code reaches the property node, LabVIEW stops running.  (as if the abort button was pressed).  I verified this behaviour using highlight execution.  When I remove the in-place structure code runs fine.
    Is this is know bug in LabVIEW?  Is there a CAR to resolve this created for a future release?

    Bob,
    I tried to reproduce the behavior you're seeing by recreating the Trigger and Trigger List classes, but I have not been able to reproduce it.  Please take a look at my version of the project in the attached zip file.  Take a look at Test.vi, and feel free to modify and repost it to show me how to make the problem occur.  I would like to file a CAR to make sure we get the problem fixed, but I will need to be able to reliably reproduce it first.
    On a similar note, you can get much better performance out of the Process Triggers VI by preallocating the list array, instead of using build array in a loop.  Take a look at Process Triggers2.vi in my project.  You can run Benchmark.vi to see the performance difference between the two different approaches.
    Chris M
    Attachments:
    triggerlist test.zip ‏165 KB

  • How to change value of array element using property node

    hello all : )
    im using an array of combo-box. the size of array is not fixed.
    i want to use the strings[ ] property of combo-box to enter selection texts but since i have placed it inside the array im unable to use this property.
    i used 'arrayelem' reference property and connected property node to it but didnt got strings [ ] in the selection.
    so is there any way i can use the strings [ ] property
    Solved!
    Go to Solution.

    the picture what I posted is a snippet. It is a png file which also contains a vi:
    http://www.ni.com/tutorial/9330/en/
    I have found this post. I am just reading it:
    http://forums.ni.com/t5/LabVIEW/combobox-in-array-why-does-it-work-this-way/m-p/2146916/highlight/tr...
    It might help...
    hmm, it is more complicated as I thought )
    edit: just to be CLEAR: so you want to create a new selection LIST for each of the array elements (comboboxes)) OR you just want to set all the comboboxes to a particular value which is ALREADY in the combobox list??

  • Property node to cluster element

    Hello All
    When clicking at the control cluster element you can create a property node.
    But if right click on property node you can NOT Link to the cluster element.
    How it is possible, that you can do it only in "one direction"?
    Pawel

    Have you looked at creating a property node for the cluster and using the Controls[] property? Controls[] is an array of control references for the elements in the cluster. The array is ordered in the cluster order. If you're doing the same operations on each cluster element, you can put the operations in a loop autoindexed by Controls[]. If you're doing different things for each cluster element, you could create a state machine controlled by the Controls[] index. The property nodes for the indiviual elements will be disconnected from the controls, then the control reference indexed (or autoindexed) from Controls[] will be wired to the reference input of the property node.
    You can get a disconnected property node from the Commun
    ication >> ActiveX function palette, or your can create a property node for any control, then right-click on the property node and select Disconnect From Control. Don't worry about the label on the disconnected property node until you wire the control reference to it. It will automatically adjust based on what it's wired to.

  • Is there a way to reference the property node value of a control in another VI?

    Let's say that I have a situation like the one shown in the attached image.
    I have an interlock system which is basically a bunch of booleans
    If for example the "RF Enable" button in the "interlock VI" is true, then I should be able to flick the ON switch in my other VI (in the back), but if the value is FALSE, then it shouldn't allow it.
    In other words, how do I check the value of a control across 2 separate VIs (running simultaneously)?
    Thanks!!
    Attachments:
    sample.jpg ‏295 KB

    Is one VI launched by the other, or are they launched independently? If it's the former then you just need to pass the control reference to the subVI via terminal node. If it's the latter there are a variety of ways to handle this:
    Use a global variable - somewhat "sloppy" as it requires a global variable, and can lead to race conditions. In the "Interlock" VI you just set the value of the global variable when you change the value of the Boolean. In the other you're just reading it.
    Action Engine - Ben wrote a Community Nugget a while back. Similar concept to a global variable.
    Queue - The "Interlock" VI simply pops an element onto the queue with the value. The other VI just monitors the queue for a new element. It just needs to have something like a shift register to keep track of the last state.
    Use the VI Server to access the controls of the "Interlock" VI. You can do this by accessing the "Interlock" VI's pane and get the control references. With the control reference you just need to get the value with a property node.
    ... (I'll let others chime in)

  • How do I use the Index Values property node with a multidimensional array.

    I am using a 2D array to store operator inputs on my front panel.  I only want to display one element to the operator at a time.  I am trying to use the Index Values property node to change the displayed element.  However, I can only get the Rows index to work.  How do I direct the Columns index as well?  The help says to use one per dimension.  I need clarification on what this is talking about.  I've tried adding a second element to the property node, 2 seperate property nodes, and diferent wiring techniques. (series, parallel)

    If you only wire up one of the inputs (col or row) what you get out is a 1D array of either the column or row. If you wire controls to both, then you will get one element out of the array. Getting a single element in a 2D array requires you to specify both a row and column.
    Message Edited by Dennis Knutson on 02-08-2007 08:34 AM
    Attachments:
    Index 2D Array.PNG ‏2 KB

  • How can I change the precision of a numeric array indicator using property nodes ?

    I want to change the precision of a numeric array indicator programatically using property nodes. I tried to see all the array properties but I couldn't find it. URGENT !!!

    If you want to change the precision of an element in an array you must first get the reference to the array element. Then raise the reference to the more specific class of a digital numeric. Use a property node connected to that reference to set the precision. See the attached vi for an example.
    Brian
    Attachments:
    ArrayElementPrec.vi ‏27 KB

  • Property nodes are severely affecting performanc​e

    LabVIEW Gurus,
    I am continually running into some serious performance hits using property nodes to update attributes of FP objects. Attached is a classic example.
    I have 8 XY plots that are being fed 600 SGL points every 200 msec - a very modest data rate. Each plot is a dynamically instanciated .vit placed into one of 8 subpanels in a container VI. The container VI also acts as the data server for the charts, sending each one their data in their own single element queue. The entire architecture runs great (~4% CPU load, see attached picture) until I being updating a property node to display the value of the cursor y-value. When I enable the "Caption.Text" property node of the XY Graph to display the cursor value, the CPU usage soars to over 30%.
    As an aside, I am developing on a dual core 2.1GHz platform with 4G memory with LV8.5.1, and the target machine is not nearly as beefy. That's why 30% CPU on my powerhouse is an issue - it basically brings the embedded target to its knees.
    I have included an example VI for you to run on your machine. Consider it "representative" of my bigger issues. The VI runs about 10% CPU without the caption update, and 20% with the caption updates.
    Finally, I have tried putting the VIs into the UI execution system. I have also tried Defer Panel Updates, but this actually slows down performance.
    Best regards,
    Jack Dunaway
     With Captions
    Without Captions:
    Message Edited by mechelecengr on 10-10-2008 11:23 AM
    Message Edited by mechelecengr on 10-10-2008 11:27 AM
    a.lia-user-name-link[href="/t5/user/viewprofilepage/user-id/88938"] {color: black;} a.lia-user-name-link[href="/t5/user/viewprofilepage/user-id/88938"]:after {content: '';} .jrd-sig {height: 80px; overflow: visible;} .jrd-sig-deploy {float:left; opacity:0.2;} .jrd-sig-img {float:right; opacity:0.2;} .jrd-sig-img:hover {opacity:0.8;} .jrd-sig-deploy:hover {opacity:0.8;}
    Solved!
    Go to Solution.
    Attachments:
    WithCaptions.png ‏102 KB
    WithoutCaptions.png ‏96 KB
    GraphPerformanceProblems.vi ‏23 KB

    Yes, property nodes force synchronous execution and if you do that too often, other things suffer.
    The above solution is good. You can simplify things even more by removing all that unneeded extra code that just complicates things.
    Here's a quick draft. Let me know if you have questions.
    Message Edited by altenbach on 10-10-2008 09:58 AM
    LabVIEW Champion . Do more with less code and in less time .
    Attachments:
    samewithlesscode.png ‏9 KB
    GraphPerformanceProblemsMOD.vi ‏19 KB

  • How to create a specific property node w/ VI script

    I am writing a VI script to work with some multi column listboxes.  I need it to create a property node that gets a reference to the ItemNames field.  I see that I can create a property node via the invoke node method Create.Property Node, but how to get the ItemNames field specifically I so far can't figure out.  Can anyone help?
    To be clear, I am writing code that looks like this:
    ...and when I run the script, I want it to produce this:
    Right now it produces the MCL as expected, via the New VI Object node...but I don't know how to get the ItemNames created automatcially.  I thought it might be in the PropItems array but so far no luck.
    thank you
    Solved!
    Go to Solution.

    The output of "PropItems[]" will be a one element array.  Index that element and wire the reference to an invoke node.  Select the method "SetProperty".

  • Regarding creation of node element

    Hi
    i hav a doubt regarding creation of node element. u can create new node element using method create(cn)Element available either directly from wdContext or from wdContext.node(cn) where cn is any context node.
    can any one plz explain me what's the difference between two.
    does it has any thing to with node being singelton or non-singelton?
    also can anyone explain me the difference between add and bind method.
    thanks.

    hi
    good
    Data Binding Methods
    If a property can, or must be bound to the context, the respective bind and bound methods are available.
    ●     The bind methods bind the value of a property to the context element specified by the path.
    The name of the method is created according to the following pattern:
    BIND_<runtime name of the property>.
    Example: table, property: design, method: BIND_DESIGN.
    &#9679;     The bound methods return the path of the context element to which a property is bound and return NULL if no binding exists.
    The name of the method is created according to the following pattern:
    BOUND_<runtime name of the property>.
    Example: table, property: design, method: BOUND_DESIGN.
    ADD METHOD->
    Two add methods that add an element.
    &#9675;     If only the element is transferred as parameter, then the element is added at the and of a list
    &#9675;     If an index is transferred as well, then this element is transferred at the specified index position.
    http://help.sap.com/saphelp_erp2005/helpdata/en/66/18b44145143831e10000000a155106/content.htm
    thanks
    mrutyun^

  • Problem with the Value property node (MacOS)

    As far as I have tested it, Value Property nodes (and Value (signaling)) don't work in MacOS : The value property appears as a boolean, the value(signaling) as a cluster (width, height).
    Even with boolean controls, the node is not working.
    No such problem in LV 8.6.
    Am-I missing something ? Is that some "intended use"  ? Or simply a bug ?
    Chilly Charly    (aka CC)
             E-List Master - Kudos glutton - Press the yellow button on the left...        
    Solved!
    Go to Solution.

    That sounds like some sort of indexing problem with the property nodes like somesort of corrupted installation.  What if you just delete the property node and recreate it?
    I dropped a numeric control and looked at the shortcut menu for the list of property nodes.  Right below Value and Value (signalling) are Visible (which would be a boolean) and Xcontrol, which when you step down through the submenus, the first choice is Container bounds, a cluster of Width and Height.  So these 2 datatypes that are 2 lower on the list match the ones you are getting.
    What happens if you pick another property node a few elements up or down on the shortcut menu?  Does is happen for some other properties, and if so, are thereany properties that are okay?
    Here is what my property nodes look like for a numeric and I draggged the box up and down to show the natural order of the property nodes.  Note that I have scripting installed, so there are a few more property nodes (and the blue box at the top) that you might not have.
    PS.  Check you signature.  The Kudos button is now moved to the left since the forum upgrade. 
    Attachments:
    Example_VI_BD.png ‏4 KB

  • Help comparing the value of a button using the Property Node (I get a variant)

    Dear Sirs:
    (I'm using LabView 6. I guess the solution is different for 6.1)
    Currently I have created an array of Boolean RefNums (which point to many, many buttons). When I need to know when any (and which) of the buttons was pressed I just compare every element on the array with the constant TRUE. It fact, as the array is built from RefNums, I should compare the VALUE from the Property Node.
    The problem here is that the Property Node for this type of Boolean is a LV Variant, and I need to compare this with a TRUE/FALSE value.
    I tried to convert the TRUE constant to a LV variant and visc. But nothing works... I always get that none of the buttons was pressed.
    Here it co
    mes the question: "How can I compare the value of a Property Node for a Boolean (Button) with a TRUE (or False) constant?"
    BTW, maybe I should explain why I'm using RefNums instead of the direct values: As my project requires tons of buttons, I would preffer using RefNums to refer to them. (I.E. I could use a single VI that takes the RefNum and formats the button to hide it for certain users).
    I have enclosed a VI that contains what I've achieved until now, which is nothing
    I appreciate your time and help.
    Best regards,
    JAVIER VIDAL
    Attachments:
    Other_Main_Menu.vi ‏103 KB

    Javier,
    There is another problem in your code: the booleans are not polled by the main loop so they will remain false until the user presses them again. This renders the boolean latch action useless.
    What you can do is to change the mechanical action of the booleans to non-latch. When you detect a "true" in the polling loop, set the boolean to false again. One added benefit is that once all boolean are non-latch, the value property won't be a variant but a boolean so conversion is no longer needed.
    LabVIEW, C'est LabVIEW

  • Property nodes to items in cluster are FRAGILE

    This issue has bugged me for a long time .  I just got bit again and I wonder if anyone else has a workaround.
    I just checked and LV 2009 has it too.
    Create a custom control of a cluster with three elements named A, B, C (numeric controls, booleans, whatever, it doesn't matter).
    Make it a TYPE DEF (non-strict) and save it.
    Put an instance of it on a new VI panel.
    Create a PROPERTY NODE for item B and set it to DISABLED property.
    Wire a constant to that property node.
    Now, if you run the VI, it sets the DISABLED property of item B to the value of the constant.  Fine.
    Now go to the TYPEDEF, and add another item, called A2 to the cluster.
    Re-arrange the cluster order so that it's A, A2, B, C, and save the type def.
    Look at your diagram.  The property node is no longer linked to B, it's now linked to A2.
    Apparently, LV uses the cluster order internally to keep track of the links.  So now I'm linked to A2, not B.
    If A2 was a different type of object from B, then you MIGHT get lucky and the diagram breaks. At least then, you can see the fact that it changed.
    But almost everything has a DISABLED and a VISIBLE property, if that's the one you're using, then you won't notice that it was changed behind your back.
    I have taken to adding a free label with the name of the expected control (in parentheses) next to the property node, along with the true label.  So if I see a discrepancy between the true label and the free label, I can recognize such a case.
    But that's only if I remember that this crap happens.
    Anybody got any better ideas?  How can I prevent, or at least recognize, such an unwanted change?
    Bonus question: the same thing happens with events, for the same reason (I suppose).  If I tied an event to item B, that event switches to item A2 behind my back.
    Steve Bird
    Culverson Software - Elegant software that is a pleasure to use.
    Culverson.com
    Blog for (mostly LabVIEW) programmers: Tips And Tricks

    CoastalMaineBird wrote:
    This issue has bugged me for a long time .  I just got bit again and I wonder if anyone else has a workaround.
    I just checked and LV 2009 has it too.
    Create a custom control of a cluster with three elements named A, B, C (numeric controls, booleans, whatever, it doesn't matter).
    Make it a TYPE DEF (non-strict) and save it.
    Put an instance of it on a new VI panel.
    Create a PROPERTY NODE for item B and set it to DISABLED property.
    Wire a constant to that property node.
    Now, if you run the VI, it sets the DISABLED property of item B to the value of the constant.  Fine.
    Now go to the TYPEDEF, and add another item, called A2 to the cluster.
    Re-arrange the cluster order so that it's A, A2, B, C, and save the type def.
    Look at your diagram.  The property node is no longer linked to B, it's now linked to A2.
    Apparently, LV uses the cluster order internally to keep track of the links.  So now I'm linked to A2, not B.
    If A2 was a different type of object from B, then you MIGHT get lucky and the diagram breaks. At least then, you can see the fact that it changed.
    But almost everything has a DISABLED and a VISIBLE property, if that's the one you're using, then you won't notice that it was changed behind your back.
    I have taken to adding a free label with the name of the expected control (in parentheses) next to the property node, along with the true label.  So if I see a discrepancy between the true label and the free label, I can recognize such a case.
    But that's only if I remember that this crap happens.
    Anybody got any better ideas?  How can I prevent, or at least recognize, such an unwanted change?
    Bonus question: the same thing happens with events, for the same reason (I suppose).  If I tied an event to item B, that event switches to item A2 behind my back.
    For the disabled property inside of cluster whos definition hcanges... we are screuued.
    For the events your idea to include the text name, is the same technique that Jim Kring shared with us when he discovered the same thing can happen with dynamic event references. I belive that was CAR'd.
    No solutions so no bonus points.
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • Multiplot waveform graph plots are different colors when set to be the same with a property node.

    The graphs were working yesterday. I made a few changes to another part of the block diagram and now the graphs do not plot all of the plots the same color. I am using a for loop with a property node with the elements active plot connected to the iteration terminal, and plot color to a color box. My for loop increments programmaticaly from another part of the code to create plots as it runs. I have replaced the graphs with new ones and they will work sometimes.
    I am using Win2k and LV 7.1
    Thanks,
    Brett

    Hi bh3560,
    Have you tried chaging the color by right clicking on the line in the plot legend.  There is an option to change the color of the plot.
    Brian K.

Maybe you are looking for

  • Replace String in the file

    First of all hi all.:) Well I'm trying to write a program that writes to the filename "database.txt" and read as well, but the problem is my file look like this below. 1 Red 03/08/2004 Imessa 457 false The first character is the ID after colour and s

  • Exchange Server 2010 - Receive Connector for Client Computers

    I have one customer with a SBS 2011 with Exchange Server 2010 - a pretty standard setup except for some customisation with Receive Connectors in order to cater for an application which is installed on a number of computers that requires to use an SMT

  • How to embed Flash without Javascript?

    How to embed Flash without Javascript? Other way to ask this: if user desactivates Javascript, sill Flash content still be visible? Thanks for helping.

  • WiFi not as good as other iPod Touch's

    Hi, Me and a few of my friends own iPod Touch's I own a 16GB which I bought from Apple, and my two other friends have 32GB's bought from local retailers. Me and my friend stood side by side and tried to access the same WiFi network. We both could, bu

  • After Effects CC (OSX MAVERICKS) Slow Over Network

    Greetings We just upgraded everyone at our small TV studio to CC.  We are opening an old AE CS6 project in CC, so it converts the project to CC and we resave it. We are having a HUGE issue where the entire AE program becomes laggy to any user input.