Logic AND with event structure
hi everyone,
The event structure can handle multiple events at a time to do the same thing : looks like a logical OR. But I haven't found a way to sequence events to approach a logic AND. Example: first click on a Draw button and then enter the image would make the mouse cursor change. With an event structure, I can handle these 2 events separetely or together (either one would change the cursor), but i cannot make a sequence of events.
Is this possible to do that with an event structure?
I hope I am clear (sorry for the english btw). And thanks in advance.
Christophe
Solved!
Go to Solution.
Mark Yedinak wrote:
In the event processing you would have to check if the required event occurred before this event. If it did, do your processing. If not ignore the event.
That's exactly what I am trying to do! I am already working with a producer/consumer architecture and with a state machine in the consumer loop. I tried to add state info as you suggested in the event loop. But i do not know if i am doing this well. I attach a very small example where I try to demonstrate what I am trying to do with 2 booleans to be pressed in order.
Tell me what you think of the state info in the event loop.
@Mike : same solution as Mark if I use a shift register and a case structure inside the event loop?
Message Edited by superfunk on 03-03-2010 10:24 AM
Attachments:
event_test.vi 27 KB
Similar Messages
-
I need help with event structure.
I am trying to feed the index of the array, the index number can vary from 0 to 7.
Based on the logic ouput of a comparison, the index buffer should increment
or decrement every time the output of comparsion changes(event change). I guess I need to use event structure?
(My event code doesn't execute when there is an event at its input /comparator changes its boolean state.
Anyone coded on similar lines? Any ideas appreciated.
Thanks in advance!You don't need an Event Structure, a simple State Machine would be more appropriate.
There are many examples of State Machines within this forum.
RayR -
Front panel locks with event structure loop and another while loop
Hi,
Why is the front panel locking after changing the value of the "boolean switch" twice? This problem disappears if I uncheck the "lock front panel" option in the event case. However I don't understand why that is the case since the event structure loop has already finished executing.
thanksDo you really want the event handling to stop after detecting the first event? If so then as Christian says the event structure will cause the front panel to lock. What you can do is dynamically register and unregister the events. You right click on the event structure and enable "Show Dynamic Event Terminals" Then you can programatically register and unregister events.
Here is your vi modified to do that.
Edit: Just in case - right click on the control and create a reference. When selecting the source of the event in the structure look under the dynamic section.
=====================
LabVIEW 2012
Attachments:
event structure test.vi 13 KB -
Load defaults from file with event structure in vi
Hi All,
I've been trying to figure out how to do this but have not quite got there. Taken a look at lots of posts but can't quite find the answer to the question that i've got.
I've got a vi for controling 4 PCI cards making calls to some DLL's. I've got quite a number of controls on the FP and i use an event structure to update the values on calls to the DLL. On startup, one of the first calls that i make is initalise and that sets the cards up. I then want to load my own set of default values from a file to initalise the cards to my particular set up. While the software is running the user may change the values and wish to save a file with the new default values, or he may wish to load a different file of default values (depending on the test that he is running). I've got the Control Values:Get All [variant] and the Control Valueset [Variant] working to save all the controls values to a file and read that file in and set all the controls values. So far so good. Problem is i'm using an Event Stucture and it doesn't register that the values have changed. I could complish this by using Value(signaling) but the data from the Control Values:Get All is variant data and the Value(signaling) needs the same data type as the control. What do i do?
One thing i have thought about is to write all the values from the file to all the conrols and then have a read Value and a write Value (signaling) to trigger the events. Problem is i don't want to set this up for every control (it'll take me ages). Can i do it programitically? Is there a better way to do it?
Thanks,
PhilYou could create a boolean control/indicator and signal that value when you've updated the values on the FP.
Name it something like "update FP". The event case for that boolean will have the code to update the necessary parts of the FP.
André
Regards,
André
Using whatever version of LV the customer requires. (LV5.1-LV2012) (www.carya.nl) -
Help with Event Structure!.
Hello,
I am trying to config one event structure in the way I could change the range of sample graph to analyze it.
I have 3 graphs. The upper is the signal input. In the middle is the signal fitted with some calculations and the bottom is the graph where I fix the sample width to analyze with anothers values.
I put event structure in the way I read from file and later update the array of data to force the execution of Case "array 2".
Its only one example but I would like to change the value of "start" and " length" of sample signal but I cant get the data to show again. I tried diferent options, like put another event source inside of event case "array 2".
I could join case 1 and 2, but the problem is with "start and lenght" control, I can`t get its display when i change the values.
I created a example since its part of my program, to simulate the similar way i need.
Thank in advance, Fred.
Solved!
Go to Solution.
Attachments:
example-eventStructure.vi 56 KB
006_RR.txt 7 KBaltenbach wrote:
billko wrote:
crossrulz wrote:
You need to wire up the value of Array 2 to the output tunnel of the event case. Currently, that output tunnel is set to "Use Default if Unwired". So since you didn't wire up that tunnel, the value going into the shift register will become an empty array.
That's one thing I am totally paranoid about. I hate that the tunnels in an event structure are "Use Default if Unwired" by default, yet they don't show that little dot that suggests that it is.
Of course they do! What makes you say they don't?
I actually like the current behavior, especially for the boolean going to the stop button. I would not want to wire it in all the other cases where the loop should not stop.
Maybe the behavior could be a bit fine-tuned. Automatic "Use default if unwired" should only apply to scalars. Tunnels for arrays and clusters, etc. should require a manual "use default if unwired" setting.
Ha - it's because of my own paranoia about the "Default if Unwired" that led me to believe this. I guess I always have something wired to every single case so I haven't seen it in ages. I created one just now and specifically looked for the dot, and when I added a second case, there it was. Of course if I wire something to that second case, it disappears.
Bill
(Mid-Level minion.)
My support system ensures that I don't look totally incompetent.
Proud to say that I've progressed beyond knowing just enough to be dangerous. I now know enough to know that I have no clue about anything at all. -
I put an "event structure" inside of a while loop. My target is to keep the
VI running and make selections to run different subVI. But I got two
questions:
1. how to use two button on front panel? I mean, when I press one button,
step 1 runs, when I press the other button, step 2 runs. Is event structure
the best way to do that? another side quesition is that how I can make the
button jump back after I pressed it? It kept in the "down" position and I
have to press it again to release it.
2. When I test the VI, I found the while loop can't stop. The boolean input
of false won't stop the VI. I wonder if there is a rule that the event
structure must run at least once? or any other hidden properties I didn't
notice?
thank you very much!
cheng"Michael Sachs" wrote in message news:...
> You can change the boolean's mechanical action to a latched type and then it
> will pop back up.
> The event structure has a timeout input that defaults to infinite. If the
> event loop is waiting for an event or timeout then your outer while loop
> will not cycle. Use the hightlight execution lightbulb on the diagram to
> see what the data flow is doing.
>
> Mike Sachs
> Intelligent Systems
>
> "Cheng" wrote in message
> news:[email protected]...
> > I put an "event structure" inside of a while loop. My target is to keep
> the
> > VI running and make selections to run different subVI. But I got two
> > questions:
> >
> > 1. how to use two button on front panel? I mean, when I press one button,
> > step 1 runs, when I press the other button, step 2 runs. Is event
> structure
> > the best way to do that? another side quesition is that how I can make the
> > button jump back after I pressed it? It kept in the "down" position and I
> > have to press it again to release it.
> >
> > 2. When I test the VI, I found the while loop can't stop. The boolean
> input
> > of false won't stop the VI. I wonder if there is a rule that the event
> > structure must run at least once? or any other hidden properties I didn't
> > notice?
> >
> > thank you very much!
> >
> > cheng
> >
> >
Hi Cheng,
that's not quite the whole story. The event structure breaks down
into two types. Those that get actioned between the start of the event
(i.e. mouse down) and the result of that event (i.e. the button
registers true) which are filtered events, and the other type (like
mouse up) which occur after the event and the result of the event.
With filtered events you can modify the result of the event as it
happens. Whichever you choose to use, you need to do one of two things
to get the button to pop back up (setting to latch when pressed on
it's own won't work) - you can either read the FPTerm within the event
itself with this set to Latch when pressed, or (my prefered method) is
to use the CtrlRef that's available inside the event, and use the
ActiveX method Reset to Default. This way the FPTerm for the button
can be left somewhere else, and it's more obvious what the program is
doing at this point.
Your while loop is actually a do {} while loop, i.e. it must execute
at least once before it checks to see if it should iterate again.
Mike's suggestion of follow the hi-light execution is the best
solution.
Hope that helps
Sash. -
Array of Cluster with event structure
Hi,
I am having Array of cluster with cluster having 1 String Control , 1 Combo box, 1 Led control and 2 Numeric control. In the combo box i am having two options to select ('Binary' and 'PWM').Whenever Binary is selected then Led control has be enabled and whenever PWM is selected 2 Numeric control has to be enabled.
Is there any way to do this??
Pleas help me...
Regards
Meenatchiactually in my application, the front panel has to have 16 rows of controls (1 string control, 1 combo box, 1 Led control, 2 numeric control).so i planned to keep all those controls in a cluster and create one array.If i didnt so i will have 16x5 controls in my front panel and i have to put 16 event cases for each combo box to do the enable and disable of controls..
is there any simple way to do this..i have attached my front panel view
Attachments:
Untitled10.vi 139 KB -
Using a "menu ring" feature on the front panel with event structures
hello - right now i have many event cases controlled by many "ok buttons". i would like to use a menu ring on the front panel to save space from all those buttons, but i don't see how it will work with all the individual event cases. currently each event is tied to a single button, and the menu ring acts as one thing on the block diagram so i can't tie an event to a choice in the menu. any suggestions? thanks....
Alternativley, you could use an enum control instead of a menu ring. It will name the cases according to the selection automatically.
If you want to use a menu ring and strings, you could do something like in this image.
Message Edited by altenbach on 02-09-2006 01:43 PM
LabVIEW Champion . Do more with less code and in less time .
Attachments:
RingText.png 3 KB -
Radio Buttons and Event Structures
Guys, I am hoping for some help here on something I probably should know but cant figure out how to do. I am using a set of radio buttons and an event structure to run a UI. The radio buttons are acting as both a user input and indicator of current status selected by the user. I have the event structure set to run on value change of the radio button. All works great unless the operator decides that he wants to repeat the selection that the radio button is already set to. The event structure does not recognize this as a change of value and will not execute. Is there a way to set the event structure up to run even if the same selection of the radio button is made a second time? I attached a crude example to this post. Basically everytime I press the button, I want an entry made into the text box, regardless if the selected item was already pressed. Any thoughts.
Troy
Attachments:
Radio Button Test.vi 16 KBInstead of hacking around the inherent nature of radio buttons, why not just use a Cluster? Its behavior in the UI is more customizable. Check this out:
I just replaced your radio buttons with a cluster, and added a little logic to the event structure to get it to behave the way you describe. I've attached the VI below, saved in 8.2, if you want to try it out.
Hope this helps,
-D
Message Edited by Darren on 11-07-2006 10:45 AM
Darren Nattinger, CLA
LabVIEW Artisan and Nugget Penman
Attachments:
cluster_buttons.png 7 KB
Cluster Test.vi 17 KB -
I have several buttons and events on the GUI of my app to monitor. Would it be better to use one Event Structure with several cases (10 or 15) or have a couple and split the cases evenly? None of the cases have much processing to handle, so there is not a time lag issue. I am just worried about overloading the structure. One of the tech support guys mentioned that the event structures are not that hard to get confused.
Has anyone had any problems with Event Structures?I use event structures very often in my code. I use them just to handle the interface and to run small code. I have had event structures that handled over 50 user interface events and never had a problem. In my personal opinion If there was any code to run I would let the event structure handle the the user interface event that fired a que in another while loop that handled the code.You can find examples on this, if not I will send you one. It is just good programming practice for beginners because it will alow you to build more robust VI's in the future.
Hope this helps
Joe
Joe.
"NOTHING IS EVER EASY" -
Event structure in "for loop" and stacked sequence
I tried to put an event structure into a for loop sequence, then used a pause button to pause the program (one loop with event structure.vi). The pause button functioned normally since the program could be paused whenever the button was pressed. Then, I put this for loop sequence into a stacked sequence (Problem.vi), which has 2 frames and every frame has the for loop sequence in it. After the pause button was pressed once, the pause button and stop button will no longer effective anymore. Where should I modify so that this program will work properly? Thanks a lot.
Attachments:
Problem.vi 42 KB
one_loop_with_event_structure.vi 27 KBAh, at last something weird !
The answer is simple : don't do that !
You should either avoid having 2 event structures handling the same events, or learn how to process dynamic events.
Why didn't you read the answers to a question posted a few hours ago (still on the overview page of this forum ?). See here.
Chilly Charly (aka CC)
E-List Master - Kudos glutton - Press the yellow button on the left... -
Datasocket and Event Structure.
I have developed a labview aplication that control some pumps and send the setpoint to some PID controllers in my test laboratory. this aplication run fine with Event Structure. I have developed too, a small labview software that use Datasocket to connect to previous software, the problem is that when i press a control from client (the control change in server) the Event structure don´t detect the "value changed" event, why? How could I find a solution?
Thanks in advanceHi!
I came up, with this simple solution and it works with my datasocket appz.
Have a nice day!!
Attachments:
prog2.JPG 15 KB
fronpanel.JPG 11 KB
prog1.JPG 16 KB -
How to stop a while loop of event structure from a main vi
Hello;
sorry for my english
I have to stop a subvi from my main vi, the subvi contains a while loop and an event structure so I need to stop this loop while directly from my main vi I have tried global variable but it did not work
any help please or example !!!
Solved!
Go to Solution.
Attachments:
stop a while loop and event structure from main vi.png 16 KBIYED wrote:
Hello;
sorry for my english
I have to stop a subvi from my main vi, the subvi contains a while loop and an event structure so I need to stop this loop while directly from my main vi I have tried global variable but it did not work
any help please or example !!!
If this is an example of how your code looks, I'd clean it up before the developer who has to work on it next hits you over the head with his LabVIEW Style Book.
Bill
(Mid-Level minion.)
My support system ensures that I don't look totally incompetent.
Proud to say that I've progressed beyond knowing just enough to be dangerous. I now know enough to know that I have no clue about anything at all. -
Extent of Coding inside Event Structure cases
Hi all
I am trying to understand the practices while using an Event Structure. I am used to developing most of my projects using an Event driven State Machine Architecture. Most times, I use Event driven-Queued State Machines. I have also used Producer Consumer Architecture with Event structure driving the producer.
I have always believed that using lots of code, or lots of sub-vis inside one or more cases of an event structure is not a good practice. I reasoned that it will delay the capture of other events occuring while the current case is still executing. This was one of our points during design review, i.e., to reduce the code inside event strucutre cases to as minimal and necessary as possible. We used clusters/queues/LV2Gs inorder to pass on the required data, which will be processed in the other cases/loops.
However, I happened to recently come across a couple of very old applications upgraded to LV2011. The applications used an event structure in one of the while loops, with one or more parallel while loops inside the Main VI. The event structure was the only code in this while loop, no case strucutres.
These event structures had loads of code in each case, with sub-vis and nested sub-vis, even DLL function calls among them. Thats when I started to look for information on best practices using event structures and about any available details on the extent of coding allowed inside an event strucutre.
One sub-vi which was called as a dialog box also had its own event structure (ending up as ensted event structures). I have read about nesting event structures and their disadvantages.
Off course, the code is working and I am not sure if anyone had any execution problems with the applicaiton.
However, I am wondering about the pros and cons of having the entire code inside event structure. I would have defined that code a nightmare. Its disturbing me to see that code and being unable to make it better.
To my understanding, I wish to know if there is any definition or rule regarding the amount of code inside an event structure.
Thank youThe exception I use is User driven intefaces where every user action must get a response and each change must complete before the next. In those cases an event only implelmentation is generally fine.
Now if that code does something that takes long enough for the user to question if the program is still alive should at least get a "Busy cursor" OR a progress bar OR an abortable progress bar where the user get s the option to abor out. THe last case may warrent a parallel process to crunch the numbers.
But please keep in mind the above suggestions apply only to those User only" type things. Applcations that invlove the word "while" will generally get deamons and other common design patterns used to henld the implementation. But now I have drifted to design teory and away from the subject so ...
Have fun!
Ben
Ben Rayner
I am currently active on.. MainStream Preppers
Rayner's Ridge is under construction -
Conditional stopping event structure
Hi all
Attached is my Vi , I want to stop the event structure in loop 1 , from the loop 2 which is continously running in parallel and getting digital input from a DAQ device.
whats happening is first I am checking the status of teh digital input and then on that I am excuting the true structure. once I am in the True case , an event structure for user operations and a parallel while loop is used to monitor the digital input , what I want to do is as soon as the digital daq input is low again i should be back to my fasle case in the main loop but the loop 1 with event structure is not stopping.
help
regards
Regards
Attachments:
Untitled 1.vi 12 KBSnamprogetti wrote:
You can't put an event structure into a case structure. It will run even if you are in the other case.
See http://forums.ni.com/t5/LabVIEW/An-event-structure-can-freeze-the-front-panel-even-if-not/m-p/106629...
What then, is a queued state machine? . The issue is the event structure still queues your events whether or not you are in your "idle" case. So if you don't promptly return to your idle case, events can back up in the event structure causing your program to act like it's lagging. Setting a busy cursor can help to solve this problem. I felt this should be clarified because a properly set up queued state machine is very powerful. This obviously isn't the solution for the parallel loops here but I thought I should add to your point..
CLA, LabVIEW Versions 2010-2013
Maybe you are looking for
-
Error due to Passing value in Live Office prompt
Hi All, I have a webi report that is inserted in excel using live office. Connection is set to refresh on demand and the prompts are fed by linking cells in excel. When a value example "James, Carter" is passed to the prompt i get the "Failed to fetc
-
LaserJet 9050n MiB Variable Issue
I'm trying to find out what the MiB variable is for the paper level, I did some searching on the internet, found the list of MiB's for LJ9050mfp, and also LJ9000 Series, also the HP Common Lib, but when use the variable listed in each of these agains
-
HttpClient Issue with InputStream
Hi friends, I am using HttpClient and here is my code - To my surprise everytime I am getting similar response..everytime though my GUID value that I am passing is different. InputStream respInputStream = null; PostMethod post = null ;
-
Scope and life of a $var
hello, I dont understand ...many things :) I am trying to get a picture and put it on a button but when i try to compile i get this.... mohadib@ns2 /var/www/html/java--->javac space.java space.java:25: cannot resolve symbol symbol : variable pic loca
-
Cash Flow - Change the Financial Statement version
HI, We are trying to run the standard Cash Flow Report from the system using the T Code S_ALR_87012271. However, when we run the report, the report says no records selected. My concern is that it is referring to the standard financial statement versi