module:python:taskevent:taskevent
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
module:python:taskevent:taskevent [2022/10/21 15:53] – created - external edit 127.0.0.1 | module:python:taskevent:taskevent [2022/10/21 19:49] (current) – [Übersicht] omdevelop | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Module - Python - TaskEvent ====== | ||
+ | [[http:// | ||
+ | [ | ||
+ | [[http:// | ||
+ | [[http:// | ||
+ | [[http:// | ||
+ | [[http:// | ||
+ | ] | ||
+ | ===== Übersicht ===== | ||
+ | TaskAction durchläuft eine Schleife mit COUNT_ACTIONCYCLE-Durchgängen und wartet in jeder Schleife auf die Fertigstellung der Berechnung des Subtask TaskRefresh: | ||
+ | * TaskAction: | ||
+ | * begin | ||
+ | * Beginn Schleife: löscht den EventReady := 0 | ||
+ | * starten des Subtask: TaskRefresh | ||
+ | * wartet auf das Ergebnis von TaskRefresh (warten auf: EventReady == 1 gesetzt) | ||
+ | * TaskRefresh: | ||
+ | * begin | ||
+ | * (NC löscht den EventReady := 0) | ||
+ | * beginnt Berechnung... | ||
+ | * setzt EventReady := 1 nach erfolgter Berechnung | ||
+ | * end | ||
+ | |||
+ | Download aktuelle Version: {{: | ||
+ | ===== ToDo ===== | ||
+ | --- | ||
+ | ===== Done ===== | ||
+ | ==== 221021 ==== | ||
+ | |||
+ | Hauptprogramm: | ||
+ | < | ||
+ | # | ||
+ | import time as TIM | ||
+ | import threading as THR | ||
+ | # | ||
+ | import Task as TSK | ||
+ | # | ||
+ | # | ||
+ | # Constant | ||
+ | # | ||
+ | COUNT_ACTIONCYCLE = 3 | ||
+ | # | ||
+ | # | ||
+ | # Field - Global | ||
+ | # | ||
+ | # | ||
+ | # Callback - Task - Refresh | ||
+ | # | ||
+ | def OnTaskRefreshStart(task): | ||
+ | # | ||
+ | task.GetArguments()[0].clear() | ||
+ | # | ||
+ | return | ||
+ | def OnTaskRefreshAbort(task): | ||
+ | # | ||
+ | task.GetArguments()[0].set() # stop waiting on abort! | ||
+ | # | ||
+ | return | ||
+ | def OnTaskRefreshExecute(task): | ||
+ | # | ||
+ | print('### | ||
+ | TIM.sleep(3.0) | ||
+ | print('### | ||
+ | task.GetArguments()[0].set() | ||
+ | # | ||
+ | return False | ||
+ | # | ||
+ | # Callback - Task - Action | ||
+ | # | ||
+ | def OnTaskActionStart(task): | ||
+ | # | ||
+ | # | ||
+ | return | ||
+ | def OnTaskActionAbort(task): | ||
+ | # | ||
+ | TaskRefresh.Abort() | ||
+ | # | ||
+ | return | ||
+ | def OnTaskActionExecute(task): | ||
+ | print(' | ||
+ | print('### | ||
+ | TaskRefresh.Start() | ||
+ | task.GetArguments()[0].wait() | ||
+ | print('### | ||
+ | # | ||
+ | return (task.GetCounter() < COUNT_ACTIONCYCLE) | ||
+ | # | ||
+ | # Main | ||
+ | # | ||
+ | if (' | ||
+ | print(' | ||
+ | # | ||
+ | EventReady = THR.Event() | ||
+ | # | ||
+ | TaskRefresh = TSK.CTask(' | ||
+ | OnTaskRefreshStart, | ||
+ | OnTaskRefreshAbort, | ||
+ | OnTaskRefreshExecute, | ||
+ | (EventReady, | ||
+ | TaskAction = TSK.CTask(' | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | TaskAction.Start() | ||
+ | # | ||
+ | print(' | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | </ | ||
+ | |||
+ | Ausgabe der Kommandozeile: | ||
+ | < | ||
+ | runfile(' | ||
+ | |||
+ | *** MainProgram-TaskEvent: | ||
+ | OnTaskAction-Execute[TaskAction]< | ||
+ | ### TaskAction - Start Refresh and Wait for Event... | ||
+ | *** MainProgram-TaskEvent: | ||
+ | ### TaskRefresh - Busy... | ||
+ | ### TaskRefresh - SetEvent! | ||
+ | ### TaskAction - Refresh Finished (Event set) | ||
+ | OnTaskAction-Execute[TaskAction]< | ||
+ | ### TaskAction - Start Refresh and Wait for Event... | ||
+ | ### TaskRefresh - Busy... | ||
+ | ### TaskRefresh - SetEvent! | ||
+ | ### TaskAction - Refresh Finished (Event set) | ||
+ | OnTaskAction-Execute[TaskAction]< | ||
+ | ### TaskAction - Start Refresh and Wait for Event... | ||
+ | ### TaskRefresh - Busy... | ||
+ | ### TaskRefresh - SetEvent! | ||
+ | ### TaskAction - Refresh Finished (Event set) | ||
+ | </ | ||
+ | ==== 221021 ==== | ||
+ | * Aufbau der Event-Library, | ||
+ | * import threading | ||
+ | * e = threading.Event() | ||
+ | * Neu: Argument-Übergabe (hier Event) an Threads! | ||
+ | * [[https:// | ||
+ | * Verbesserung der CTask-Library mit Argument-Übergabe, | ||
+ | * Neue Klasse: CTask | ||
+ | * Direkte Klasse: threading-Event | ||
+ | |||
+ | ----- | ||
+ | [[http:// | ||
+ | [ | ||
+ | [[http:// | ||
+ | [[http:// | ||
+ | [[http:// | ||
+ | [[http:// | ||
+ | ] | ||
+ | |||
module/python/taskevent/taskevent.1666360410.txt.gz · Last modified: 2022/10/21 15:53 by 127.0.0.1