2012 Dynamic Event Registration Array of Controls

In upgrading to LV2012, I have discoverd what may be a bug, or at least an incompatability between 2011 and 2012 with respect dynamic event registration of an array of controls as opposed to individual control references.
This bit of code worked in 2011 but doesn't in 2012, with error 1 generated at the reg events block when run in 2012. I have been in contact with technical support, but haven't yet heard their take on this.
Any thoughts.
Solved!
Go to Solution.
Attachments:
Top Application.png ‏13 KB
SubVI.png ‏23 KB

I've got the bug too -- it appears this bug is present when arrays of control refs are connected to the ConPane. Link to cross-post on LAVA about the original problem. As Patrick@Vision mentions above, one workaround is to ensure that the array of control refs is no longer on the ConPane by collapsing the Register for Events node onto the caller.
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;}

Similar Messages

  • Dynamic Event Registration Error

    Hi,
    I'm getting to grips with Dynamic events in LabVIEW. However, I've encountered an issue i'm not sure on. When I try to register a cluster of control refs to the Register for Events function I get an error.. See Dynamic Event Registration.vi for small vi highlighting the issue.
    Thoughts?
    Strokes 
    Attachments:
    Dyanmic Event Registration Error.vi ‏9 KB

    Steve Chandler wrote:
    You can wire a reference or an array of references to register for events. Of course you probably already know that you have to wire the output of register for events to the dynamic registration terminal of the event structure.
    Steve Chandler wrote:
    You can wire a reference or an array of references to register for events. Of course you probably already know that you have to wire the output of register for events to the dynamic registration terminal of the event structure.
    That helped me somewhat, however, I'm still experiencing problems. My events seem to be registering correctly but don't seem to generate when I trigger them. I've configured the event structure to execute should one of the controls in my cluster change value. However, the only event case that get's executed is the timeout case.
    I've attached a vi highlighting my problem named Dynamic Event Problem.vi. My real vi is much larger and contains many sub vis so hopefully what I've attached suffices..
    Attachments:
    Process Data Control Refs Edit.ctl ‏14 KB
    Dynamic Event Problem.vi ‏22 KB

  • Dynamic event registration only works for 2 inputs??

    Hello,
    I have written a routine that traverses for GObjects when the user runs the VI.  Based on some information contained within the label of the control, the routine puts a reference to the control in one of 4 arrays.  I dynamically register these 4 arrays as part of an event structure.
    What I'm finding though is that only objects within the first 2 arrays (rw_event_array and wtc_event_array) ever trigger the event structure.  I have used the probes and breakpoints to verify that the other 2 arrays (wo_event_array and other_event_array) both are full of references, yet they never trigger the event.
    As a specific example, I have a control that is of type wo.  I stepped through my code and saw a reference to the object stored in the "other_event_array" variable.  I put a breakpoint on the event structure (which is triggered by a value change on the boolean control), yet it's never triggered.
    Why would it be working for 2 of the arrays I input, and not the other 2?
    A couple screen caps...here's the place where the arrays are built:
    Here's where they are registered:
    Just to be clear - it's not that the code inside the event structure "isn't working"...it's that the code inside the event structure is never executed.  The breakpoint you see surrounding the event structure never triggers.  And again, the first two arrays (rw and wtc) reliably trigger the event structure.
    thanks

    It's very hard to tell from your limited screenshots where the problem might be. Is there any chance you could upload the VIs instead?
    Why are you using local variables for the array references? Given that you must find all the references before you register for events on them, those should be wires. Otherwise there's a possibility of a race condition - the events could be registered before the arrays are filled. That's my best guess as to the problem. You wrote that you probed the array wire and confirmed that there are values in it, but did you probe the wire going into the Register for Events, or only the wire going into the array indicator?
    Have you checked if there are any error from the Register for Events node?

  • Dynamic Events Problem

    I am fairly new to LabVIEW and I am trying to make a GUI that uses
    events to pass messages between three separate event loops, GUI,
    Messaging and Logging. GUI controls the state of the other two event
    loops by generating control events and using semaphores. While the
    messaging semaphore is released by the GUI, Messaging generates
    messages and raises them as events. Some message events are handled by
    the GUI event loop and others by the Logging event loop. Logging, once
    it receives a 'logging ON' control event dynamically registers for
    certain message events and logs the message events it handles to file.
    When Logging receives a 'logging OFF' control event, it dynamically
    unregisters the message events. The logging control events are
    registered for the life of the Logging event loop.
    I have created a cut-down version of my GUI that exhibits the same
    problem. The problem is that after I have turned Logging on and off
    once, it no longer responds to logging control events from the GUI.
    Even though the GUI is still generating the events. I have looked at
    the dynamic logging example in LabVIEW and thought I did the same sort
    of thing but I just can't get it to work that way. The only way I got
    it working was by creating a clean event registration with all events
    each time I want to change the event registration. This is how I have
    done it in the example file and it works. But I don't want to use this
    method, I don't want to have to re-register the control events each
    time I unregister/register message events.
    If anyone knows what I'm doing wrong please edit the example vis and post them back.
    Notes for the example:
    Files are LabVIEW 7.1.1
    Just open the front panels for all the vis before running the GUI vi.
    The Display vi just does the same thing as the logging vi.
    Run the GUI vi and turn on Messaging then turn Logging on and off a few times.
    The example works, but if you wire the event registration refnum
    input when doing dynamic event registration, Logging will only turn on
    and off once, then no longer respond to log control events... what's
    going on?

    I can't tell you how to solve you problems - without code this is always quite tricky.
    But in case you want to log messages to a log file, have a look at this thread
    http://forums.ni.com/ni/board/message?board.id=170&message.id=172117&view=by_date_ascending&page=1
     where I posted a logging-library.
    Maybe it is a useful help for you.
    Thomas
    Using LV8.0
    Don't be afraid to rate a good answer...

  • Dynamic event registrati​on - FP not in memory ?

    Hello,
    I have problem that I don't understand tith dynamic event registration.
    In my app I have many threads that are initialised when app starts and I switch between them using subpanel.
    In one of this modules I want to register some dynamic events to find whitch controll in cluster was pressed.
    Why I get error 1001?
    I have static reference for all modules in main thread. I start modules but I don't open their FP.
    Solved!
    Go to Solution.
    Attachments:
    err.png ‏30 KB

    Well your image is confusing because you can't run without wiring that reference.  But if you did do that then the error comes from the fact that your VI doesn't have a front panel that is open when you register for it.  So that control reference doesn't really exists.  I mean it exists but you can't reference a control that hasn't been opened.
    I think what you'll want to do is open the front panel, but then set it to hidden.  Then after the front panel has been opened, and hidden, register for the control event.
    Unofficial Forum Rules and Guidelines - Hooovahh - LabVIEW Overlord
    If 10 out of 10 experts in any field say something is bad, you should probably take their opinion seriously.

  • Dynamic event multiple loops

    I'm trying to see if I can use one Dynamic User Event to control multiple Event Structures. It seems that sometimes once a dynamic event occurs and its "interrupt" is answered by an event case, other VIs only have a short amount of time (<50ms) to reach their event case state for accepting this event otherwise the event seems to be cleared and the other VIs are oblivious that the event even occured.
    My Question: Is it possible to use one dynamic event to control multiple Event Structures reliably?
    A previous post somewhat speaks of this issue but does not provide a solution or anything insightful.
    http://forums.ni.com/ni/board/message?board.id=170&message.id=223495&query.id=135563#M223495
    I've included an example of my issue
    Attachments:
    DynamicUE.zip ‏61 KB

    Thanks to both of you. I found the answer to my question in the second posted link. "the common, correct use case is to have one Event structure per dynamic event registration". I tested this out with the previous attachment by registering the User Event refnum from the ESTOP functional global to another Event Registration node. I then ran this refnum to the top loop. (instread of the top loop sharing the registration refnum with the middle loop). Now I can put a delay of 2000+ ms and not even miss an event. cooool. This will probably NOT be my final solution but its good to know in the future.
    Most likely I am going to design each of my main VIs to have a main while loop with a User Event Structure listening for dynamic events. Associated with each of these VIs will be a functional global which contains its User Event Refnum and Registration Refnum. This functional global will act as a gateway into the associated VI for other VIs/Subvis to use. This will follow the "one Event structure per dynamic event registration" rule while keeping my API organized and allowing room for scalability by simply adding more functional globals in the future.
    Just putting this info out there for other users.
    Thanks again,
    Craig

  • Dynamic event registrati​on tutorial

    Hi All,
    I wanted to learn about the Dynamic Event registration ... i have tried to donwload so many examples and try to undertsand why thery r using this...??
    unfortunatly i could not able to find one with a clear description... Can any please give some basic differences and uses between static and dynamic events ...
    in some post they use so many property nodes and regsiter events and so on ...
    Thanks in advance...
    Solved!
    Go to Solution.

    Can you post that vi? I am unable to drag and drop it because I have LV2010.
    tst wrote:
    Static events are fully configured at edit time. They're the ones you know.
    Dynamic events are also configured at edit time (because the event structure needs specific data types), but you can play with the event source and whether or not you actually get the event the event at run time.
    I am still finding it hard to understand. I get the configured part. THat's coz you have to set up the event structure. What I don't understand is how exactly it becomes dynamic? We still add event cases just like static events. My mind is hurting so much thinking about this
    I may not be perfect, but I'm all I got!

  • Dynamic Event Registrati​on in Reentrant VI

    I have a VI running two reentrant Clients.  The client uses a subVI (not reentrant) to handle keystrokes.  The client passes a VI refnum to the subVI to dynamically register the keydown event.  When I run the main VI I receive the FP not open error (1001).  I have made the subVI reentrant and did not change the error output, any ideas?
    Attachments:
    NRKI.vi ‏6 KB
    TwoClientTest.vi ‏6 KB
    NonReentrantKeyInput.vi ‏22 KB

    I have attached a modified VI testing the difference between the "This VI" refnum constant and the "This VI's path" -> open refnum constant.  The comparison equates both, but the hex values are different.  The FP 1001 error still occurs with the Dynamic event registration, the DER requires that the disk FP is open...Why? I don't know.
    Odd show...
    Attachments:
    NonReentrantKeyInput.vi ‏18 KB
    TwoClientTest.vi ‏6 KB
    NRKI.vi ‏15 KB

  • Dynamic Event to handle 12x12 Array or Cluster UI

    I'm looking to handle up to a 12x12 array/cluster to enable different LEDs. The enable method will be two numeric controls, MxN, which will light LEDs in a specific order based on the MxN control data entered. The specific order is right to left, bottom to top. Right now, I have only a few states functional, but I have to account for every state as shown in my block diagram. I'm looking for some feedback on how to handle this dynamically. I am aware of the Register For Events, but lack the experience to understand if this is the route I should take. Thanks in advance to all who respond!  
    Examples
    2x2         3x3
    4|3          9|8|7
    2|1          6|5|4
                   3|2|1
    Solved!
    Go to Solution.

    Why are you making the array a control?  Why not just make it an indicator so you don't have to use the local variable?
    Also, make sure your stop button is actually in a Stop Button:Value Change event case.  You will not be able to stop your VI as is written.
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines
    Attachments:
    2DArrayTest_MOD.zip ‏6 KB

  • Dynamic event registrati​on wont work with Tab control

    In LTR volume 11 No1 we find the "Dynamic Event Handling.vi".
    I had placed the controls on a Tab control and now this example wont work.
    Is there a solution to this problem?
    Scientia est potentia!
    Attachments:
    Dynamic_Event_Registration.vi ‏51 KB
    Dynamic_Event_Registration(controls_on_Tab).vi ‏64 KB

    Yes. The first stage of the code registers mouse down events for all the controls. When you added a tab control that meant that a mouse down event was registered for the tab as well. So now when you click on an object on the tab LabVIEW must decide whether to fire the mouse down on the tab-event, or the mouse down on the object on the tab event...It goes for the first but since there is no description for the tab no dialog will be displayed. If you add a description for the tab you'll see that it fires the event with the tab and you get a dialog with the tab description.
    So - how to fix. Well, it's not that simple, one might think that to exclude the reference to the tab when you register the events would do the trick, but it rather seems that LV will always t
    hink mouse clicks are on the tab and not on the objects on the tab.
    The solution though is to get the references to the objects by reading the controls on page property of the tab control. So instead of reading the controls array from the front panel read the pages references of the tab and then the controls on page array from that and then register mouse down events on that array.
    MTO

  • Triggering dynamic events across VIs

    Hi,
    I want a dynamic event triggered in one VI to run a case in another VI. Is this possible?
    If so, how do I pass the event references and the data associated with the event between the 2 VIs.
    Regards.

    Hi tdog,
    You could possibly use notifiers to pass the Event Registration Refnum from the VI creating the event to the other VI.
    1). Add into both VIs an Obtain Notifier, using the same name (eg. 'DynamicVINotifer')
    2). Use Send Notifier in the VI creating the event
    3). Use Wait on Notification in the receiving VI, wiring the output to the dynamic event tunnel
    Charlie Rodway
    Test Design Engineer
    Rolls-Royce Controls and Data Services Ltd

  • Resetting a variable in an event structure (dynamic event)

    I'm working on moving an event structure into a sub VI. This means I have to register dynamic events. 
    The event structure is handling some button clicks. The state of the button (mechanical action = latch when released) resets itself automatically as long as the variable is placed within the value change case.  Leaving the button in this case is not possible when the event structure is put in a sub VI and the variable is located in the parent VI.  How do I make sure the button unlatches after clicking on it?  I have attached an example where all the code is in one VI (the local variable must be moved outside the event structure in order for it to be moved into a sub VI).  Any ideas?
    If you open the VI and run it, you can click Start which will cause the counter to start incrementing.  The button only unlatches as long as the variable is located in the value change case.
    (Btw, how do you put images inline in a post?)
    Rob
    LV2011,LV2012,LV2013
    Attachments:
    img.png ‏18 KB
    main.vi ‏17 KB

    Race conditions are the primary reason not to do that. But since your treating your variable as a latch, I doubt your using the value you read from it anywhere, and in that case it can't create a race condition. There's also the possibility that the control's reference could become invalid. But since this is a sub VI of the control's VI that can't happen (even if it could you can check the error out of the value property node to see when it happens and deal with it).
    I'm not sure about the flickering, Since I can't seem to duplicate it with a simple test case on my machine. It might related to whatever else you're doing in the event apart from reseting the value to false.

  • Dynamic event with global variable (vi)

    I have registered a dynamic event to fire when a control in a global vi value changes. All works fine when I open the global vi and change the value of the control manually. When I have another vi modify the value of the global, the dynamic event does not fire.
    I have tried leaving the front panel of the global vi open and observed the value being changed...
    Any help appreciated...

    Hi,
    Please refer to the following document that explains why programmatic changes to the global doesn't get detected.
    Event Structure Does Not Capture the Value Changed Event...
    I hope this helps.
    Sincerely,
    Feroz
    National Instruments

  • How to create an array with controls and indicators?

    I want to create a scrollable array of control/indicator pairs from a config file.  Something that looks like the attached image.  Of course, I can only create an array that's either either a control or indicator -- not both (the operator should not be able to edit the name or change the state of the LED).  So I guess I need to split the array and have two side-by-side and SOMEHOW link the scrollbars.  But then I have no idea how I can get the control switch states from the array.  Is there an easier way to do what I'm trying to do?
    Attachments:
    New Bitmap Image.JPG ‏11 KB

    Hello,
    Another option would be to use the custom control I built for you, see below.  You can just drop this into an array, it should look like your example (more or less).
    Cheers!
    CLA, CLED, CTD,CPI, LabVIEW Champion
    Platinum Alliance Partner
    Senior Engineer
    Using LV 2013, 2012
    Don't forget Kudos for Good Answers, and Mark a solution if your problem is solved.
    Attachments:
    Custom Switch.ctl ‏8 KB

  • Using a dynamic event to trigger a signal

    Hi,
         I'm using a state machines approach to control a motor. I would like to trigger the current (for exemple, when current> 10 A, the event Overload happens). I think it is possible by using a dynamic event but I don't know how to do it.
    Does somebody know how to do that?
    Thank you

    I peeked into my tag cloud- I suspected that one of my "BENex.." tags linked to an example from Ben Raynard on this topic.
    Ben posted this example and This link to a Nugget by Ton on dynamic events.
    Jeff

Maybe you are looking for