Skip to content

Commit 4373789

Browse files
committed
Update scheduler.py
using *param passing user's parameters add KeyboardInterrupt except handle
1 parent 1aafe01 commit 4373789

File tree

1 file changed

+26
-13
lines changed

1 file changed

+26
-13
lines changed

tmScheduler/scheduler.py

+26-13
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
'''
22
simple Time base Task Scheduler
3+
4+
Author: shaoziyang
5+
Date: 2021.2
6+
Ver: 1.2
7+
8+
https://www.micropython.org.cn
9+
310
'''
411

512
from micropython import const
@@ -9,12 +16,12 @@
916

1017
class Task():
1118

12-
def __init__(self, callback, param = None, interval = 1000, state = TASK_RUN):
19+
def __init__(self, callback, *param, interval = 1000, state = TASK_RUN):
1320
self._callback = callback
1421
self._param = param
15-
self._cnt = 10
1622
self._intv = interval
1723
self._state = state
24+
self._cnt = 10
1825
self._rt = 0
1926

2027
def pause(self):
@@ -24,10 +31,7 @@ def resume(self):
2431
self._state = TASK_RUN
2532

2633
def run(self):
27-
if self._param == None:
28-
self._callback()
29-
else:
30-
self._callback(self._param)
34+
self._callback(*self._param)
3135

3236
class Scheduler():
3337
def __init__(self, tm, interval = 100, task_idle = None, task_err = None):
@@ -55,12 +59,17 @@ def _run(self, task):
5559

5660
def scheduler(self):
5761
while True:
58-
for i in range(len(self._tasks)):
59-
task = self._tasks[i]
60-
self._run(task)
61-
if self._task_idle:
62-
self._task_idle()
63-
62+
try:
63+
for i in range(len(self._tasks)):
64+
task = self._tasks[i]
65+
self._run(task)
66+
if self._task_idle:
67+
self._task_idle()
68+
except KeyboardInterrupt:
69+
return
70+
except Exception as e:
71+
print('except {}'.format(e))
72+
6473
def find(self, task):
6574
try:
6675
return self._tasks.index(task)
@@ -70,10 +79,13 @@ def find(self, task):
7079
def clear(self):
7180
self._tasks.clear()
7281

73-
def add(self, task):
82+
def add(self, task, stat = TASK_RUN):
7483
if self.find(task) == None:
7584
self._tasks.append(task)
7685
task._cnt = task._intv // self._interval
86+
print('add task:', task._callback.__name__)
87+
if stat == TASK_STOP:
88+
self.pause(task)
7789

7890
def delete(self, task):
7991
try:
@@ -93,3 +105,4 @@ def run(self, task):
93105
if self.find(task) != None:
94106
task._rt = task._cnt
95107
self._run(task)
108+

0 commit comments

Comments
 (0)