PymateIO-Delaying: Difference between revisions
Jump to navigation
Jump to search
NEVER USE BLOCKING INSTRUCTION in the mainloop
The sleep(), sleep_ms() are BLOCKING INSTRUCTIONS.
They should never be used in your script, neither in the mainloop
| Line 11: | Line 11: | ||
The solution for this is: | The solution for this is: | ||
* use the ''' | * use the '''DelayTimer''' class | ||
* set the delay on the ''' | * set the delay on the '''DelayTimer''' when the source event occurs. | ||
* check the ''' | * check the '''DelayTimer.done''' at every mainloop cycle. | ||
* Once | * Once '''done''', it is time to executed the delayed code. | ||
Remark: the '''done''' will be True only once for every '''set()'''! | |||
{{PYMATE-TRAILER}} | {{PYMATE-TRAILER}} | ||
Revision as of 17:46, 29 June 2026
Abstract
The "Cycle Timing" tutorial state the following:
NEVER USE BLOCKING INSTRUCTION in the mainloop
Blocking instruction locks the script execution in a waiting state... whereas critical operation may requires quick reaction from the script.
The sleep(), sleep_ms() are BLOCKING INSTRUCTIONS.
They should never be used in your script, neither in the mainloop
The solution for this is:
- use the DelayTimer class
- set the delay on the DelayTimer when the source event occurs.
- check the DelayTimer.done at every mainloop cycle.
- Once done, it is time to executed the delayed code.
Remark: the done will be True only once for every set()!
PymateIO all right reserved © 2026 - Written by MCHobby for PymateIO