Peculiar problem in dynamic event, which is registering randomly
Hello,
I am using a dynamic event to pass a data (variant) to a vi which i call dynamically. reference of the event is stored in LV2G.
so both main and called vi can access. data when written to the generate user event vi is triggering event at random time when executed.
I am attaching snapshot of the vi which i used to register event.
One interesting thing i noticed is if i put a probe in the error out of the generate user event vi then event will start triggering.
Need help. I am struggling to get a solution.
Regards,
Vibin
Attachments:
Capture.PNG 21 KB
Post any code you have on the issue. There may be something simple that will fix the problem. It sounds a lot like a race condition.
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines
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 KBSteve 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 -
Generate dynamic event of producer loop in multiple consumer loop
I have one producer loop which used event case to interface with FP controls and 5 consumer loops
If I have to use the fifth consumer loop to generate dynamic event which send to event case in produer loop.
I have to wire register event with dynamic event terminal in producer loop . Also I need to wire user event to consumer loop (at the bottom of screen window) which is far away from producer loop. It is hard to wire them.
Is there any other method to let many consumer loop to communicate with one producer loop through dynamic event (the same user event)?I like to use an Action Engine to hold control my Event Reference. Then anybody can send the event commands.
You may also want to look at the VIs I recently submitted for OpenG here.
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines -
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 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.
thanksIt'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? -
Extending EventDispatcher with dynamic event types
I'm currently trying to write my own class to extend the
EventDispatcher class. My goal is to create a Service class which
acts as a switchboard for incoming socket data. Incoming socket
data is parsed to create an Event which is Dispatched to the
appropriate Service object which dispatches the event to any
registered listeners.
The problem I'm having is that I'm confused about how to
handle the event types -- the string parameter which is always
supplied as the first argument to the addEventListener() function.
In all the examples I've seen, the value supplied is a class
constant like MouseEvent.CLICK or VideoEvent.READY. In the case of
my application, I want the developer to define their own Event
types without having to go and edit my class files. In other words,
I'd like to use dynamic event types with my class--maybe something
like the code I've attached.
I'm not new to Actionscript but am very new to the
EventDispatcher class. I'm wondering a bit what that first
parameter really does in a strict programming sense -- i haven't
seen it explained all that well in the piles of documentation I've
read on the Adobe site so I don't really know if I need to define
my own Event class or what and whether I have to define all those
possible event type constants/strings in advance or what.
Any help/advice would be much appreciated.I have looked it up here:
Actionscript
3.0 Language Reference
and it just says that the first arg to 'addEventListener' is
"The type of event" with no further explanation at all.
I have read this:
Flash
Quick Starts: Programming With Actionscript 3.0: Event handling
It doesn't help much either. It tells me I need the
appropriate event object which makes me wonder DO I NEED MY OWN
CLASS? For that first ard to addEventListener, it merely says
"Substitute the appropriate constant". Given that I want to use
dynamic types (i think so anyway) that is not helpful information
either. Every single example on that page uses a class constant for
event type.
It links to
this
which says "First, the name of the specific event you want to
respond to. Once again, each event is affiliated with a specific
class, and that class will have a special value predefined for each
event--sort of like the event's own unique name, which you should
use for the first parameter." Still no useful detail about what
that arg does and the insistence on constants.
The quick start page also has a link title "Handling Events"
in Programming ActionScript 3.0 but it links to some documentation
titled "Working with XML". The only discussion of events in that 10
or so pages is because some user posted a comment.
I have read this
entire
article which is more helpful than anything in the flash docs
but still doesn't answer all my questions which (AGAIN) are:
1) What is the real function of the first argument to
addEventListener? I have not seen a clear explanation anywhere.
2) Do I need to write my own Event class?
3) What about dynamic event types that are defined at
runtime? Are there any pitfalls or risks that arise from using a
string instead of a predefined constant as the first param to
addEventListener() ?
Please stop telling me to read the documentation. I've been
reading it for days. -
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 KBRace 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. -
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 KBI'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;} -
Problems with KEY_UP event
I'm doing some work at the moment on a program and have noticed that it is (very occasionally) not registering KEY_UP events, which is causing major issues with my code. It never seems to do this with KEY_DOWN events.
Anyone had this problem before? Is it a known issue? Any help appreciatedHi Martin,
Look at the following posts:
Help catching Control-K
Trapping ctrl k
It looks like you cannot trap this event. I also investigated with EventSpy and don't get any event in if I use Ctrl and any other character. If pressing CtrlShiftk you get KeyPressed = 34 and not 107 anymore as k is now uppercase because of shift.
Hope it helps,
Adele -
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 KBYes. 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 -
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 KBWell 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. -
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 KBThanks 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 events miss some events
I use an event structure in LabVIEW 7.1.1 that's driven by dynamic events. Sometime, the structure misses 10% of events happened on a control. Beside that, the structure works well. Initialization of the event register is made by a constant and unregistered at the end of the VI. Anybody has expected that kind of problem?
Thanks
EricCan you post an example or does this only happen in a certain VI?
How do you know that the event structure is missing 10% of the events?
Try to take over the world! -
Hello,
Could anyone let me know if the filter for an event inside the
workflow be dynamically set , be it a JMS Event or Plugin Event ?
Thank You.
SangeethaDynamic events are one of the best features added to LV 7.0 and have saved me a few times. The idea is that you can add events which an event handeler can register for the only thing you have to do it decide on the parameters which define the event. basically you craete a user event, register for the event, pass the event to the dynamic event terimina (right click on the event structure and "show dynamic event terminal" then add the event case just as you do with a native event. In addition you can turn on and off the dynamic events as needed. I will post an example I did later if it would help. Spent the time to learn dynamic events, well worth the effort.
Paul
Paul Falkenstein
Coleman Technologies Inc.
CLA, CPI, AIA-Vision
Labview 4.0- 2013, RT, Vision, FPGA -
OPEN Dataset - Peculiar problem
Hello experts!
I am facing a peculiar problem with ABAP keyword OPEN DATASET.
I have a directory to which I am adding new files using OPEN DATASET FOR OUTPUT.. this works perfectly fine in the Consolidation system. But the same thing does'nt work in the Production system! It return SY-SUBRC = 8
After reading several other posts on SDN and other forums, the following causes were touted.
1) Path incorrect
2) No Authorization
But upon checking, neither of the wo are possible because the path is maintained properly and the authorizations at OS level are given (R/W) to this folder. Moreover, the user has S_DATASET auth object!!
Then I read somewhere else that having multiple Application Servers could be a possible cause and that running the code as a background job would be afix.. Is it so?
Even if it is, the application is in ABAP Web Dynpro and is launched from the portal.. hence launching it as a background job is not an option... Any solutions?????
Any help on this would be appreciated...
Thanks in advance, AmithHi,
Yes this is true that if we are having the multiple application server then this kind of error occures if your specified directory is not mapped on the alll the avaiable sAP application servers.
I guess when ever you are running your application then system will pick the appkication server based on the present load. Hence if your directory is not mapped in that application server then you wil get this kind of issues,
so i guess check with you basis team that spctified path is avaiable in all the application server.
Maybe you are looking for
-
Formula for calculating Quarter value in current calendar Year
Hi All, I have a requirement where in i need to display values for Q1 of Current Calendar Year, Q1 of Previous Calendar Year,Variance in Value and % Variance in Value...Similarly for Q2,Q3,Q4. We have built the report directly from Bex Query from the
-
Print size does not default to form size when printing PDF form.
So, we have created an interactive new client form for our firm. The form was created in LiveCycle Designer ES 8.2 and is set to legal size (8.5 x 14). After the form was completed and exported, it was filled out for testing and printed. During the p
-
Gallery - single pic NOT a slideshow ?
Hi all, anyone any idea how to stop a slideshow opening in iWeb when I click on a thumbnail? and instead go to another page with the image on.. just againt a single colour with forward and back arrows? I just don't like the look of the metal surround
-
Do i need to remove my case or skin when changing?
After reading that temperature is important when charging, I was wondering whether I should remove my case when charging to prevent excessive built up of heat but won't this make the nano vulnerable to scratches?
-
Internet Explorer 10 IEAK capturing Security Settings
I am trying to package a custom installation for Internet Explorer 10 using IEAK. I am having some trouble with the Import Security Settings portion of the tool. It is failing to import the security settings. It says it has imported them, but upon