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 '''EventTimer''' class | ||
* set the delay on the ''' | * set the delay on the '''EventTimer''' when the source event occurs. | ||
* check the ''' | * check the '''EventTimer.done''' at every mainloop cycle. | ||
* Once '''done''', it is time to executed the delayed code. | * Once '''done''', it is time to executed the delayed code. | ||
Remark: the '''done''' will | Remark: the '''done''' will assert True '''only once''' for every '''set()'''! | ||
== Practical example == | |||
xx | |||
{{PYMATE-TRAILER}} | {{PYMATE-TRAILER}} | ||
Revision as of 17:54, 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 EventTimer class
- set the delay on the EventTimer when the source event occurs.
- check the EventTimer.done at every mainloop cycle.
- Once done, it is time to executed the delayed code.
Remark: the done will assert True only once for every set()!
Practical example
xx
PymateIO all right reserved © 2026 - Written by MCHobby for PymateIO