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