コード例 #1
0
 def wait(self, sv, supervisor, svlist):  # synchronize and retrigger suite
     clock = io.clock()
     delay = int(1000 * ((sv.Current_time + sv.t0 + Timestep / 2) -
                         clock * Speed_factor))  # milliseconds
     if delay < 0: delay = 0
     if delay == 0 and abs(2 * clock - int(2 * clock)) < 0.01: delay = 1
     if not self.pause:
         self.callback = self.after(
             delay, lambda: self.suite(sv, supervisor, svlist))
コード例 #2
0
def init_update(sv, autotest):
    """
    run real time
    """
    sv.t0 = io.clock(
    ) * Speed_factor + Epsilon_time  # synchro (inputs as delayed events)
    sv.delayed_list = []
    if not istrue(sv.Object[Exit], sv.Current_time):
        rt.pinscan(sv)  # scan inputs and make them delayed events
        sv.delayed_list = rt.nextevents(sv)  # prepare list of delayed events
        rt.update_loop(sv)
コード例 #3
0
 def suite(self, sv, supervisor, svlist):  # continue program
     rt.update_loop(sv)  # execute loop in runtime module
     self.message["text"] = ("Box" + str(1 + sv.Boxnumber)) + " time: " + (
         '%0.1f' % sv.Current_time) + "s  lag: " + (
             '%0.1f' % max(0, (io.clock() * Speed_factor - sv.Current_time -
                               sv.t0))) + "s"  # display time bar
     if not (Exit in sv.Object
             and istrue(sv.Object[Exit], sv.Current_time)):
         self.wait(sv, supervisor, svlist)  # continue if not exit
     else:
         supervisor.multi_stop(1 + sv.Boxnumber,
                               svlist)  # exit sequence using multistop
コード例 #4
0
 def changepin(self, sv, nam):
     if not Allow_manual: return
     if not nam in sv.Pinstate:
         print("\n", Anom, "   ", Within, nam)  # *** Anomaly in", nam,"***
     else:
         if nam in sv.Namedpinlist:
             self.update(sv, sv.Namedpinlist[nam])
         else:
             self.update(sv, nam)
         # transmit info to io module
         nb = nam[len(Pin) + 1:-1]
         if not isnumber(nb): nb = "0"
         pinnumber = int(nb)
         value = (sv.Pinstate[nam] != Vrai)  # n.b. will react slowly
         io.panelpin(sv, pinnumber, value, io.clock() * Speed_factor)
コード例 #5
0
 def go(self, supervisor, sv, svlist):  # (re)start program
     self.bouton_start["bg"] = FalseColor  # appearance of start button
     if sv.Current_time == 0:  #  initialize at start
         io.run(sv)
         rt.init_outputs(sv)
         self.closed = False
         init_update(sv, self.autotest)
     if not (Exit in sv.Object and istrue(
             sv.Object[Exit], sv.Current_time)):  # do not resume after exit
         if self.pause:  # resume after pause
             self.pause = False
             sv.t0 = io.clock(
             ) * Speed_factor - sv.Current_time + Epsilon_time  # adjust clock with delay
             print(Warn_resume)
         for element in sv.Visible:  # update display before starting
             self.update(sv, element)
         self.suite(sv, supervisor, svlist)
コード例 #6
0
 def changeout(self, sv, nam):
     if not nam in sv.Object:
         print("\n", Anom, "   ", Within, nam)  # *** Anomaly in", nam,"***
     else:
         # fit into Whand
         nod = sv.Object[nam]
         if not istrue(nod, sv.Current_time):
             nod.value = [(sv.Current_time, None)]
         else:
             nod.value = [(nod.value[0][0], sv.Current_time)]
         nod.lasttime = sv.Current_time
         nod.lastchange = sv.Current_time
         nod.haschanged = True
         # transmit info to io module
         nb = nam[len(Output) + 1:-1]
         if not isnumber(nb): nb = "0"
         pinnumber = int(nb)
         io.setpin(pinnumber, st, io.clock() * Speed_factor - sv.t0)
         # update display
         self.update(sv, nam)
コード例 #7
0
    
    while new_session:
        try:
            # initialize session
            print()
            new_session=False
            svlist=[]
            box=0
            testnum=0
            scriptlist, autotest, parallel=io.getscriptlist()                      # read script

            # prevent window from closing
            windowlock=lock_window(windowlock)

            # store test start time                       
            if autotest: debut=io.clock()

            # begin loop on script names
            for sourcename in scriptlist:
                sourcename, master, showname = actual_script(sourcename)     # adjust if yoked                                      

                # initialize box                    
                testnum+=1
                sv=sp.spell()
                sv.Boxnumber=box
                if parallel: box+=1                                           # different channel numbers on each box
                sv.Graphic=False                                             # no controlpanel
                sv.clear_all()                                                    # reset all variables except Graphic and Debog
                sv.slaveto=master                                           # yoked script if master!=0
                sv.Current_clause=None, None, None
                sv.Do_tests=autotest