User Tools

Site Tools


module:python:taskevent:taskevent

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
module:python:taskevent:taskevent [2022/10/21 19:42] – [221021] omdevelopmodule:python:taskevent:taskevent [2022/10/21 19:49] (current) – [Übersicht] omdevelop
Line 8: Line 8:
 ] ]
 ===== Übersicht ===== ===== Übersicht =====
-  * Ziel: TaskAction durchläuft eine Schleife mit Durchgängen+TaskAction durchläuft eine Schleife mit COUNT_ACTIONCYCLE-Durchgängen und wartet in jeder Schleife auf die Fertigstellung der Berechnung des Subtask TaskRefresh:
   * TaskAction:    * TaskAction: 
     * begin     * begin
Line 21: Line 21:
     * end     * end
  
 +Download aktuelle Version: {{:module:python:taskevent:2210211928_taskevent_01v01.zip | 2210211928_TaskEvent_01V01.zip}}
 ===== ToDo ===== ===== ToDo =====
 --- ---
 ===== Done ===== ===== Done =====
 ==== 221021 ==== ==== 221021 ====
-  *+ 
 +Hauptprogramm: 
 +<code> 
 +
 +import time as TIM 
 +import threading as THR 
 +
 +import Task as TSK 
 +
 +#--------------------------------------------------------- 
 +# Constant 
 +#--------------------------------------------------------- 
 +COUNT_ACTIONCYCLE = 3 
 +
 +#--------------------------------------------------------- 
 +# Field - Global 
 +#--------------------------------------------------------- 
 +#--------------------------------------------------------- 
 +# Callback - Task - Refresh 
 +#--------------------------------------------------------- 
 +def OnTaskRefreshStart(task): 
 +    #print('OnTaskRefresh-Start[{0}]: begin'.format(task.ID)) 
 +    task.GetArguments()[0].clear() 
 +    #print('OnTaskRefresh-Start[{0}]: end'.format(task.ID)) 
 +    return 
 +def OnTaskRefreshAbort(task): 
 +    #print('OnTaskRefresh-Abort[{0}]: begin'.format(task.ID)) 
 +    task.GetArguments()[0].set() # stop waiting on abort! 
 +    #print('OnTaskRefresh-Abort[{0}]: end'.format(task.ID)) 
 +    return 
 +def OnTaskRefreshExecute(task): 
 +    #print('OnTaskRefresh-Execute[{0}]: begin'.format(task.ID)) 
 +    print('### TaskRefresh - Busy...'
 +    TIM.sleep(3.0) 
 +    print('### TaskRefresh - SetEvent!'
 +    task.GetArguments()[0].set() 
 +    #print('OnTaskRefresh-Execute[{0}]: end'.format(task.ID)) 
 +    return False 
 +#--------------------------------------------------------- 
 +# Callback - Task - Action 
 +#--------------------------------------------------------- 
 +def OnTaskActionStart(task): 
 +    #print('OnTaskAction-Start[{0}]: begin'.format(task.ID)) 
 +    #print('OnTaskAction-Start[{0}]: end'.format(task.ID)) 
 +    return 
 +def OnTaskActionAbort(task): 
 +    #print('OnTaskAction-Abort[{0}]: begin'.format(task.ID)) 
 +    TaskRefresh.Abort() 
 +    #print('OnTaskAction-Abort[{0}]: end'.format(task.ID)) 
 +    return 
 +def OnTaskActionExecute(task): 
 +    print('OnTaskAction-Execute[{0}]<{1}>: begin'.format(task.ID, task.GetCounter())) 
 +    print('### TaskAction - Start Refresh and Wait for Event...'
 +    TaskRefresh.Start() 
 +    task.GetArguments()[0].wait() 
 +    print('### TaskAction - Refresh Finished (Event set)'
 +    #print('OnTaskAction-Execute[{0}]: end'.format(task.ID)) 
 +    return (task.GetCounter() <  COUNT_ACTIONCYCLE) 
 +#--------------------------------------------------------- 
 +# Main 
 +#--------------------------------------------------------- 
 +if ('__main__' == __name__): 
 +    print('*** MainProgram-TaskEvent: begin'
 +    # 
 +    EventReady = THR.Event() 
 +    # 
 +    TaskRefresh = TSK.CTask('TaskRefresh', 
 +                            OnTaskRefreshStart, 
 +                            OnTaskRefreshAbort, 
 +                            OnTaskRefreshExecute, 
 +                            (EventReady,)) 
 +    TaskAction = TSK.CTask('TaskAction', 
 +                           OnTaskActionStart, 
 +                           OnTaskActionAbort, 
 +                           OnTaskActionExecute, 
 +                           (EventReady,)) 
 +    TaskAction.Start() 
 +    # 
 +    print('*** MainProgram-TaskEvent: end'
 +    # 
 +    # 
 +
 +
 +</code> 
 + 
 +Ausgabe der Kommandozeile: 
 +<code> 
 +runfile('...TaskEvent.py', wdir='...2210211928_TaskEvent_01V01'
 + 
 +*** MainProgram-TaskEvent: begin 
 +OnTaskAction-Execute[TaskAction]<1>: begin 
 +### TaskAction - Start Refresh and Wait for Event... 
 +*** MainProgram-TaskEvent: end 
 +### TaskRefresh - Busy... 
 +### TaskRefresh - SetEvent! 
 +### TaskAction - Refresh Finished (Event set) 
 +OnTaskAction-Execute[TaskAction]<2>: begin 
 +### TaskAction - Start Refresh and Wait for Event... 
 +### TaskRefresh - Busy... 
 +### TaskRefresh - SetEvent! 
 +### TaskAction - Refresh Finished (Event set) 
 +OnTaskAction-Execute[TaskAction]<3>: begin 
 +### TaskAction - Start Refresh and Wait for Event... 
 +### TaskRefresh - Busy... 
 +### TaskRefresh - SetEvent! 
 +### TaskAction - Refresh Finished (Event set) 
 +</code>
 ==== 221021 ==== ==== 221021 ====
   * Aufbau der Event-Library, Basis Python:    * Aufbau der Event-Library, Basis Python: 
module/python/taskevent/taskevent.1666374140.txt.gz · Last modified: 2022/10/21 19:42 by omdevelop