====== MultiProcessExecution 01V00 =====
[[http://www.openhardsoftware.de/ | Open Hard- & Software]]
[
[[http://www.openhardsoftware.de/dokuwiki | DokuWiki]]
[[http://www.openhardsoftware.de/websites | WebSites]]
[[http://www.openhardsoftware.de/mediawiki | MediaWiki]]
[[http://www.openhardsoftware.de/nextcloud | NextCloud]]
]
===== Übersicht =====
===== Benutzung =====
VSCode-MicroPython-Terminal:
>>>
*** Check Esp32MultiProcessExecution: begin
CBOnStart
CBOnBusy
1
*** Check BlinkSlow: begin
*** Check BlinkSlow: end
2
*** Check BlinkFast: begin
*** Check BlinkFast: end
3
*** Check CountUp: begin
*** Check CountUp: end
4
*** Check CountDown: begin
*** Check CountDown: end
5
CBOnAbort
CBOnEnd
*** Check Esp32MultiProcessExecution: end
♦♦>
MicroPython v1.17 on 2021-09-02; ESP32 module with ESP32
Type "help()" for more information.
>>>
Hauptmodul **Esp32MultiProcessExecution.py**
#
import time
#
import Thread as THR
#
#---------------------------------------------------------------------
# Main - Callback Thread
#---------------------------------------------------------------------
def CBOnStart(thread):
print('CBOnStart')
return
#
def CBOnBusy(thread):
print('CBOnBusy')
Counter = 0
while (THR.stBusy == thread.State):
Counter += 1
print(Counter)
if (1 == Counter):
execfile('BlinkSlow.py')
if (2 == Counter):
execfile('BlinkFast.py')
if (3 == Counter):
execfile('CountUp.py')
if (4 == Counter):
execfile('CountDown.py')
time.sleep(1.0)
return
#
def CBOnAbort(thread):
print('CBOnAbort')
return
#
def CBOnEnd(thread):
print('CBOnEnd')
return
#
#---------------------------------------------------------------------
# Main
#---------------------------------------------------------------------
if ('__main__' == __name__):
#
print('*** Check Esp32MultiProcessExecution: begin')
#
ThreadProcessA = THR.CThread(CBOnStart, CBOnBusy, CBOnAbort, CBOnEnd)
ThreadProcessA.Start()
time.sleep(5.0)
ThreadProcessA.Abort()
time.sleep(1.0)
#
print('*** Check Esp32MultiProcessExecution: end')
#
ChildProcess **BlinkFast.py**
#
#-----------------------------------------------------------
# Main
#-----------------------------------------------------------
if ('__main__' == __name__):
#
print('*** Check BlinkFast: begin')
#
#
print('*** Check BlinkFast: end')
#
#
ChildProcess **BlinkSlow.py**
#
#-----------------------------------------------------------
# Main
#-----------------------------------------------------------
if ('__main__' == __name__):
#
print('*** Check BlinkSlow: begin')
#
#
print('*** Check BlinkSlow: end')
#
#
ChildProcess **CountUp.py**
#
#-----------------------------------------------------------
# Main
#-----------------------------------------------------------
if ('__main__' == __name__):
#
print('*** Check CountUp: begin')
#
#
print('*** Check CountUp: end')
#
#
ChildProcess **CountDown.py**
#
#-----------------------------------------------------------
# Main
#-----------------------------------------------------------
if ('__main__' == __name__):
#
print('*** Check CountDown: begin')
#
#
print('*** Check CountDown: end')
#
#
Library **Thread.py**
import time
import _thread
#
# States
stIdle = 0
stBusy = 1
stEnd = 2
#
class CThread():
#
def __init__(self, onstart, onbusy, onabort, onend):
self.State = stIdle
self.Thread = None
self.OnStart = onstart
self.OnBusy = onbusy
self.OnAbort = onabort
self.OnEnd = onend
return
#
def Start(self):
self.State = stBusy
if (None != self.OnStart):
self.OnStart(self)
self.ThreadID = _thread.start_new_thread(self.CBOnExecute, [self])
return
#
def Abort(self):
self.State = stEnd
if (None != self.OnAbort):
self.OnAbort(self)
return
#
def CBOnExecute(self, thread):
if (None != self.OnBusy):
self.OnBusy(self)
if (None != self.OnEnd):
self.OnEnd(self)
return
#
#
#
#-----------------------------------------------------------
# Check Thread
#-----------------------------------------------------------
def CBOnStart(thread):
print('CBOnStart')
return
def CBOnBusy(thread):
print('CBOnBusy')
Counter = 0
while (stBusy == thread.State):
Counter += 1
print(Counter)
if (3 <= Counter):
thread.Abort()
else:
time.sleep(1.0)
return
def CBOnAbort(thread):
print('CBOnAbort')
return
def CBOnEnd(thread):
print('CBOnEnd')
return
#
if ('__main__' == __name__):
#
print('*** Check Thread: begin')
#
Thread = CThread(CBOnStart, CBOnBusy, CBOnAbort, CBOnEnd)
Thread.Start()
time.sleep(5.0)
Thread.Abort()
#
print('*** Check Thread: end')
#
#
===== Version =====
{{:module:micropython:MultiProcessExecution:2112141157_MultiProcessExecution_01V00.zip|2112141157_MultiProcessExecution_01V00.zip}}
-----
[[http://www.openhardsoftware.de/ | Open Hard- & Software]]
[
[[http://www.openhardsoftware.de/dokuwiki | DokuWiki]]
[[http://www.openhardsoftware.de/websites | WebSites]]
[[http://www.openhardsoftware.de/mediawiki | MediaWiki]]
[[http://www.openhardsoftware.de/nextcloud | NextCloud]]
]