WorldViz User Forum

WorldViz User Forum (
-   Vizard (
-   -   Breaking while loops with timers (

mape2k 03-13-2013 06:58 AM

Breaking while loops with timers
Hello Vizard-Team!

I have a small problem: I want to break a while loop either with a button press (works fine) or after a certain amount of time has expired. So far, I have not been able to manage it with timer functions. Is there another way? The code below shows my current status. The timer function is called correctly and expires correctly after 10s, but the global testTrig variable is not parsed and the while loop does not break.

Any thoughts? Thank you!


def test():
        global testTrig

        for k in range(len(presentSeq)):
                testTrig = 0               
                while testTrig is 0:
                        testTrig = viz.callback(viz.TIMER_EVENT,testExpired)
                        viz.starttimer(0,10) # start timer with 10s

                        yield viztask.waitAny([waitJoyButton])                                                        # wait for joystick button
                        testTrig = 1
                # do some more before next iteration...

def testExpired(num):
        global testTrig

        testTrig = 1
        print 'Expired!'
        return testTrig

Jeff 03-13-2013 07:36 AM

Are you doing anything in your while loop other than waiting for time to pass or the waitJoyButton condition? If not, it seems you could replace the while loop with something like:

yield viztask.waitAny( [ waitJoyButton, viztask.waitTime(10) ] )

mape2k 03-14-2013 08:52 AM

Works brilliantly and much more elegant than creating a time for it...
Thanks! :)

All times are GMT -7. The time now is 01:55 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2021, vBulletin Solutions, Inc.
Copyright 2002-2018 WorldViz LLC