How to guarantee an event structure executes at least once

I have an event structure that I want to execute one time on program start and then behave normally after that.  Is there an *elegant* way to do that?
Lee Jay

Jhoshkins' idea will work, but if you want the timeout to continue to function (not wait forever) you can put your code inside the True case of a True/False case structure, and use the First Call? to select it.
PaulG.
"I enjoy talking to you. Your mind appeals to me. It resembles my own mind except that you happen to be insane." -- George Orwell

Similar Messages

  • How to use a event structure with a state machine

    First, I would like to inform you that I only work on LabView part time, and have much to learn.  Anything I do learn, I usually forget until I need it again, because I only work on it part time.
    Using your StopWhileLoopMOD[1].vi, I am trying to put a state machine inside the event structure.  
    Related link: http://forums.ni.com/t5/LabVIEW/How-to-stop-while-loop-in-Event-case/td-p/465564/page/2
    Here is my application:  on the front panel, the user can select any combination of 7 different tests.  I have created cases to perform each step of each test in the correct order, but if the user presses stop, the tests won't stop because some of the cases have a while loop inside the event structure (like you mentioned is a bad idea).  The user should be able to stop the test, reselect tests to perform, and re-start the tests. 
    When the start button is pressed for the event structure, I need all the cases to run in the proper order, unless stop is pressed.
    In the past I have indexed an array and used that to run the state machine, but it won't stop immediately.  
    I have sub VIs that are built in while loops because the outputs of the product needs time to stabilize.  The state machine stops and waits up to a certain number of iterations.  If it passes the test, the while loop stops and the next state starts.  If it takes too long, it exits and reports an error.  Maybe I need to just use the state machine and not an event structure?
    Is there a good example of an event structure?
    metzler CLAD
    Solved!
    Go to Solution.

    I'm not sure exactly what you are asking, but it sounds like you want to script a bunch of tests and if the user says stop, to immediately stop the current test and abandon the others?  I'm going to assume that you know how to clear the array so that it will abandon the others, so I'm guessing that you are having trouble abandoning the current test?  If this is indeed the case, then the problem is that you are not able to propagate the message from the main VI FP which is the GUI to the sub vi which is the test, where the test may or may not have a GUI (FP visible) of it's own.  Threading was the first thing to come to mind, but this may not be necessary using events.
    You can do this by passing a refnum of the stop button to the subVI, where you can then add that wait to the event case structure.
    I've attached 2 VIs, mainvi.vi which is just a loop displays the count*2 (number of seconds passed since running) that will call subvi.vi and then check to see if the stop button is pressed.  mainvi.vi is by no means a state engine, it is just a simple loop for demonstration purposes.  subvi.vi just waits 2 seconds and leaves, it is a better structured state engine with an init state to start a poll case to wait for events and an exit state to clean up.  You can modify this any way you wish to get it to do what you want.  You will note that even if subvi.vi is being executed, it will terminate immediately when the stop button is pressed.
    Hope this helps.
    A
    Attachments:
    mainvi.vi ‏17 KB
    subvi.vi ‏33 KB

  • How to make an Event Structure work with a webcam feed?

    Hello,
    I'm pretty new to LabVIEW, and I really need some help on a school project.
    In the program, a webcam contantly streams video.  At the same time, I am trying to add an event structure inside of the while loop that contains the webcam information.  An event structure seems to be just the thing I need to add to make my program work, but after adding it, the webcam stopped showing its feed.  My guess is that it's specifically not working with the webcam part, because I've used event structure inside of while loops before.  How can I prevent the event structure from interfering with the webcam?
    I cannot take a screenshot of the back panel at this time, although I can do it within the next 24 hours, if necessary.  Otherwise, I can try to describe the program to the best of my ability.

    i did this a while back for my school project.
    see if its what you need
    Best regards,
    Krispiekream
    Attachments:
    Executive.zip ‏183 KB

  • Are user events valid before the event structure executes?

    If I create and register for a user event and immediately generate that event before my event structure has seen the registration refnum, is the event still guaranteed to be seen by the structure? That is, are events queued up? It works but I am wondering if I can rely on it. I am very sure that I can but I am creating some production code and want to be assured that I am not just taking advantage of a bug.
    A picture is worth a thousand words.
    =====================
    LabVIEW 2012
    Solved!
    Go to Solution.

    Generally, Felix's explanation is correct and the queue exists from the moment the register node executes, so the answer is that you can rely on this.
    You should, however, be aware that when playing with dynamic registration you can experience some unexpected side effects, as you can see, for example, in this LAVA thread - http://lavag.org/topic/13607-dynamic-event-reregistration/
    Another example would be this - http://lavag.org/topic/13970-unexpected-event-structure-non-timeout-behavior/page__view__findpost__p...
    Or what happens if you split the registration refnum to more than one event structure (hint - NEVER do that).
    Try to take over the world!

  • How to use an Event Structure responding to an image control that belongs to a parent VI.

    Hi
    I am loading a subpanel vi by pressing a button located in the user interface of the main vi which also contains an image display. Subpanel vi opens up on the side and doesn't hide the image display of the main vi. Subpanel vi contains an event structure that needs to respond to user clicking on the image display of main vi.
    Since the bug that occured while creating an image reference control isn't fixed, I am passing the main vi pane reference onto the subpanel vi. From that point I've tried to edit event structure and have it respond to the image control/pane that belongs to main vi but I don't know how.
    Any help would be appreciated.
    Thanks

    Post a screenshot of your subVI code where you register the events.
    André
    Regards,
    André
    Using whatever version of LV the customer requires. (LV5.1-LV2012) (www.carya.nl)

  • How to control the event structure

    What i am trying to do is when the condtion is true, i want the event structure to excute. But event structure wil not excute unless there the puch pattern changed, any idea how to do that ? 
    Solved!
    Go to Solution.
    Attachments:
    Try.vi ‏95 KB

    It's more likely he wants the sequence of events he has put together to run after the result changes once.  If you change the logic to check the values after each change of numeric(2), he'll need to learn to check to ensure the last iteration wasn't already true.  Otherwise, he's going to start the sequence over and over.
    Really, you need to get away from the event structure entirely.  It's not what you want.  Your code lends itself to a state machine very well.
    You'll want to ask yourself a few things:
    1) Do I want my code to run continuously or do I just want to check the two numerics once? (your code currently does the second)
    2) Do I want the user to be able to stop my code once the sequence starts? (this is generally a yes)
    3) Do I want Path 6, Path 5, or the comparison to happen first?  Do I want them all to run simultaneously?  Do I need one before another? (currently you cannot predict which will happen first.)
    Topics you'll need to understand are: state machines, data flow, case structures, timing, and race conditions.  Right now, you're looking to get yourself into trouble.

  • How to use a event structure in a subVI

    I am trying to use an event structure inside a subVI.  The subVI has an array builder that builds arrays, and the event structure is used so that when the program is running, it allows you to change the elements of the array.  It works, but when I implement it inside a subVI, it does not work properly.  This is going into a subVI, because it will be a part of a much larger progrram, so it needs to be modular.

    If you're using an event structure, it's not a subVI.  if you're worried about modularity, you shouldn't be using the event structure.
    You seem to have a fundamental misunderstanding of modularity.  An event structure should be placed within a while loop.  If you have a while loop within a subVI, you've handed over control of your program to the subVI.  You're not modular at this point.  Your top level GUI has no control.  You'd have to create some asinine system of variables to pass data down to that loop to stop the loop and return to your main VI.  That's not a good design decision.
    Instead of looking for a way to do something broken, you should spend effort trying to understand what you actually want to accomplish.  You should also spend some time learning how event structures work.
    This application is small right now and it's already on the path to unreadable.  That's a terrible thing to do to yourself.  Break these habits now.  se variables only when absolutely necessary.  Use subVIs to accomplish individual tasks, not run the entire application.  With event structures, use a stop button value change event to not be held hostage by the timeout.  If your variable has "2" in it, you're doing something wrong.  There has to be something different between the setpoints, put that in the name.  If you want to make subVIs, create an icon.
    But first and foremost, invest time in understanding dataflow

  • How to break an event structure?

    "What I have is an event structure with 2 cases, within a while loop. Case 0 is triggered by a button and contains a very very long sequence and the other (case 1) I put it just to have an stop button and then stop the while loop with its boolean TRUE value.
    What I need its to be able to stop the execution of case 0 at any time while the sequence (the sequence is made up of many subVIs and case estructures, some subVIs contains sequence structures but not the final sequence I'm dealing with) is running and stop the while loop right away (I need to let the vi finish, I dont want to abort it). Besides if the VI is waiting for an event and the abort button in case 1 is hit the VI should also finish (this is working fine). I want to do
    these 2 actions with one single "abort" button
    (My problem has nothing to do with front panel bloking)"
    Thanks

    Hi,
    I don't think there is any way to stop the execution of a sequence structure in your case 0 (well except hitting the LabVIEW Stop button). What you can do though is to use different program structure to implement the same thing. Seperate your sequences in case 0 into many individual cases in a while loop, like a state machine structure for example. This way by dividing them into different cases, you can decide exactly when an exit condition can be checked.
    Hope this helps,
    Dan

  • How to control the tab control using event structure?

    Hi,
    I am using tab control and event structure in the program.
    When i run the application event is not happening for the active page.
    When user switches from active page to the other page then event is taking place for all pages
    So, how to get the event trigger for the active page when the application is started
    For more clarification i am attaching the code "Test Control Tab using Event Structure.vi"
    Attachments:
    Test Control Tab using Event Structure.vi ‏52 KB

    You have a basic misunderstanding of dataflow. Maybe you should start with some tutorials or study some of the examples that ship with LabVIEW.
    The event structure belongs inside the while loop, and not vice versa. RIght now, the event structure only runs exactly once and never again.
    If the stop is pressed first, the VI will stop. Game over.
    If the tab control is changed (from any state to any other state!), the inner loop will spin forever as fast as the CPU allows, either executing one or the other case. It just reads the tab terminal to decide which case to execute. Changing tab never triggers any events. The VI is trapped inside the event until stop is pressed to stop the VI.
    you were closer to a reasonable program in the other thread:
    http://forums.ni.com/ni/board/message?board.id=170&view=by_date_ascending&message.id=287905
    Have you tried execution highlighting? Maybe things would become more clear of you do.
    LabVIEW Champion . Do more with less code and in less time .

  • Loop with event structure

    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.

  • Event structure in a while loop does an extra iteration

    In this program, after the user has measured all the values, he or she will press a calibration complete button and the results of the measurement will be displayed.  However when the program runs and this button is pressed, the event structure does one more iteration.  Is there a way for the while loop to read the control before the event structure executes to prevent this?
    p.s.  I know that the wiring is probably a lot more complicated than it needs to be so if there is a better way to place values into a particular space in an array let me know
    Thanks
    Chris O.

    Probably just a matter of the order of execution in your data flow.
    Please post a VI so we can see what is going on now.
    Never mind.  You have since posted it.  SMerucurio's suggestion of a separate event case for the other button should work fine.
    Message Edited by Ravens Fan on 06-30-2008 01:20 PM
    For putting an element into a specific location of an array, look at "Replace Array Subset".  This should allow you to replace your groups of shift registers with a 1-D array since you are basically building 1-D arrays after your case structures anyway.
    Message Edited by Ravens Fan on 06-30-2008 01:24 PM

  • How can i use the same front panel graph in more than one events in an event structure?

    i want to display the signals from my sensorDAQ in a graph.but i have more than one event in the event structure to acquire the signal and display it in the graph.the first event is to acquire the threshold signals and its displayed in the graph as a feedback.after the first event is executed, i will call the second event,where the further signals are acuired and compared with the threshold signals from the event 1.my question is how can i use the same front panel control in more than two events in the event structure?please answer me i'm stuck.
    Solved!
    Go to Solution.

    Hi,
    I have attached here an example of doing the same using shift registers and local variables. Take a look. Shift register is always a better option than local variables.
    Regards,
    Nitzz
    (Give kudos to good answers, Mark it as a solution if your problem is Solved) 
    Attachments:
    Graph and shift registers.vi ‏12 KB
    graph and local variables.vi ‏12 KB

  • How to trigger value change in event structure

    Hii everyone, as the title, how should I trigger the value change event to pop up a message.. below is my connection..
    I want to trigger the event structure to pop up the sub-vi, when the flame and led are TRUE state... I using property node but still the event structure not able to execute.. How should I connect? Thank you very much...
    Solved!
    Go to Solution.

    There are several ways you can do it. First you have to configure your sub-vi so that it does whatever you want when it runs  (in the vi properties, top most window for example) and to make sure that it closes completely when finished (when clicking the "OK" button for example).
    You than need to make an asynchronous call to the sub-vi. There are several ways to do it. My favorite one is shown below. You go in the "Application control" sub-palette and select Static VI reference. I like this approach because it keeps track of the sub-vi path for you, as long as the sub-vi is in the same project. You then drag the sub-vi onto the empty square that will changes to your sub-vi icon. You then connect to an invoke node from the same sub-palette and select run VI. Set "Wait Until Done" to false and the main VI will keep running after starting the Sub vi. Set "Auto Dispose Ref" is the easiest way to go. Otherwise you have to keep track of the sub-vi reference and close it yourself when you're done.
    Marc Dubois
    HaroTek LLC
    www.harotek.com

  • How to read shared variables inside event structure ?

    Hi,
    I have a problem that my shared variables do not update inside event structure. The program(s) I am trying to get working is seen in the attached screenshot. It works as follows:
    0. I start the vi that is unsquared.
    1. I write a string to a shared variable using vi in red square. I make sure that its updated using write-wait-read.
    2. I run the other vi (blue square), this changes the boolean shared variable.
    The unsquared vi has been running the whole time, it has event structure bind to boolean shared variable change (the one in blue vi). After I have runned the blue vi, the unsquared vi should change the indicator values to match the ones in red vi. However I have to start the blue vi multiple times to get it to change, sometimes even 6 times.
    Also, when I change the value in red vi to a third value and start blue vi multiple times, the unsquared vi shows all the variables. I.e. I put "cat" to red then start red, put "mouse" to red then start red,... and then start clicking blue... Unsqured shows cat, mouse,..., dog (dog is the default).
    How can I force the shared variable to update inside event sructure. I want the current value of the variable, not some historical values.
    Attachments:
    Screenshot-5.png ‏108 KB

    Found the buffering... disabling it solved the problem... thanks.
    FYI, there is another solution that I just found out... attached. Adding timeout to the event structure and the variable read outside the event structure... This makes the shared variable strings (one that is read outside and the otherone that is read inside) different.
    Could someone explain why the variables are in different state even if they are used in the same place and looped with 10ms intervals?
    Juha
    Attachments:
    Screenshot-6.png ‏110 KB

  • How to stop While Loop in Event Structure with same button?

    Hello,
    I have a problem. I want to use one control to activate an event in a event structure, and the same control to terminate a while loop in that event.
    It is possible to use 2 controls to do this, but I need it to be only one.
    Thank you  
    Message Edited by Heinen on 02-19-2009 06:16 AM
    Message Edited by Heinen on 02-19-2009 06:20 AM
    The Enrichment Center is required to remind you that you will be baked, and then there will be cake.
    Solved!
    Go to Solution.

    Hello,
    I have a bit different problem.
    I have a tab control, with several buttons on different pages.
    In the current situation, we can talk about two pages, where one page ("Settings") in the Image, has a START and EXIT button, while second page ("Wait") has an EXIT button.
    In a while loop, I have event structure, which handles events of the START and EXIT buttons of the Settings page. This is fine. But I also want to control the Exit button of the Wait page.
    The control works like this:
    When I click on Start in the Settings page, the front panel shows Wait page and attempts to connect to a datasocket server on the remote computer. If the user wants to stop this process, he can click on Exit on Wait page too. But, this doesn't give any immediate effect. On the even of Start button, the front panel is not locked, so the user can actually click the Exit button on the next page when it's visible. But it's of no immediate effect. Means, what the LabVIEW does is, finishes the execution of event in Start button's click, and while this executes, it doesn't consider the Exit button's refreshed value (shown in Red circle in the block diagram).
    Simple question: Is there any way to check the updated (latest/live) value of a control during some event's execution? Or if I write an Event "Value Changed" for the Exit button and pass it to some variable. Is it the only solution?
    Thanks ahead.
    Vaibhav
    Attachments:
    terminate event_diagram.jpg ‏200 KB
    terminate event_front_1.jpg ‏63 KB
    terminate event_front_2.jpg ‏63 KB

Maybe you are looking for

  • Business area is not reflecting in A/c doc

    Hi After creating the sales invoice when accounting doc is generated i can only see the business are for customer line account and sales receivable a/c, but for other accounts like service tax, edu cess, higher edu cess business area is not picking.(

  • How to pass original Record ID of a checkedout Record to Web pane

    Hi, we have defined a web pane in MDM Data Manager to display the results of java program (servlet). URL defined in console is http://<App Server>:52000/auom/servlet/ACalculation?records=<r> records=<r> sends record ID of the selected Record. Refer t

  • Web service method binding (flash builder issue)

    I have a new Flash Builder (Flex) project, basically it has 2 combo boxes in it. I have added a web service, the service is called uws_lookups and has 2 methods, lookupLanguage and lookupCountry. If I bind a combobox to the result from either of thes

  • Missing Sequence Files ????

    Good Day... After opening my fcp file, I receive several "missing sequence file...wont play back properly" messages. I believe I may have deleted these sequence files accidentaly (it was around 12 am...I wasnt as mentally sharp as I normally am). I c

  • Unlock my old phone

    how do I do to unlock my old phone? I just bought an iphone 5s and would ike to unlock the 4S