kopia lustrzana https://github.com/peterhinch/micropython-micro-gui
README.md: Add note about callback execution speed.
rodzic
ca5e2b2a20
commit
923caaa6df
31
README.md
31
README.md
|
@ -155,7 +155,7 @@ under development so check for updates.
|
||||||
9. [Realtime applications](./README.md#9-realtime-applications) Accommodating tasks requiring fast RT performance.
|
9. [Realtime applications](./README.md#9-realtime-applications) Accommodating tasks requiring fast RT performance.
|
||||||
10. [ePaper displays](./README.md#10-epaper-displays) Guidance on using ePaper displays.
|
10. [ePaper displays](./README.md#10-epaper-displays) Guidance on using ePaper displays.
|
||||||
|
|
||||||
[Appendix 1 Application design](./README.md#appendix-1-application-design) Tab order, button layout, encoder interface, use of graphics primitives
|
[Appendix 1 Application design](./README.md#appendix-1-application-design) Tab order, button layout, encoder interface, use of graphics primitives, more on callbacks.
|
||||||
[Appendix 2 Freezing bytecode](./README.md#appendix-2-freezing-bytecode) Optional way to save RAM.
|
[Appendix 2 Freezing bytecode](./README.md#appendix-2-freezing-bytecode) Optional way to save RAM.
|
||||||
[Appendix 3 Cross compiling](./README.md#appendix-3-cross-compiling) Another way to save RAM.
|
[Appendix 3 Cross compiling](./README.md#appendix-3-cross-compiling) Another way to save RAM.
|
||||||
|
|
||||||
|
@ -809,6 +809,10 @@ are passed, bearing in mind the first arg described above. An incorrect
|
||||||
argument count results in puzzling tracebacks which appear to implicate the GUI
|
argument count results in puzzling tracebacks which appear to implicate the GUI
|
||||||
code. This is because it is the GUI which actually executes the callbacks.
|
code. This is because it is the GUI which actually executes the callbacks.
|
||||||
|
|
||||||
|
Callbacks should complete quickly. See
|
||||||
|
[Appendix 1 Application design](./README.md#appendix-1-application-design) for
|
||||||
|
discussion of this.
|
||||||
|
|
||||||
###### [Contents](./README.md#0-contents)
|
###### [Contents](./README.md#0-contents)
|
||||||
|
|
||||||
## 2.3 Colors
|
## 2.3 Colors
|
||||||
|
@ -3339,6 +3343,31 @@ micro-gui.
|
||||||
|
|
||||||
The `primitives.py` demo provides a simple example.
|
The `primitives.py` demo provides a simple example.
|
||||||
|
|
||||||
|
## Callbacks
|
||||||
|
|
||||||
|
Callback functions should execute quickly, otherwise screen refresh will be
|
||||||
|
delayed until the callback is complete. Where a time consuming task is to be
|
||||||
|
triggered by a callback an `asyncio` task should be launched. In the following
|
||||||
|
sample an `LED` widget is to be cycled through various colors in response to
|
||||||
|
a callback.
|
||||||
|
```python
|
||||||
|
def callback(self, button, val):
|
||||||
|
asyncio.create_task(self.flash_led())
|
||||||
|
|
||||||
|
async def flash_led(self):
|
||||||
|
self.led.color(RED)
|
||||||
|
self.led.value(True) # Turn on LED
|
||||||
|
await asyncio.sleep_ms(500)
|
||||||
|
self.led.color(YELLOW)
|
||||||
|
await asyncio.sleep_ms(500)
|
||||||
|
self.led.color(GREEN)
|
||||||
|
await asyncio.sleep_ms(500)
|
||||||
|
self.led.value(False) # Turn it off. Task is complete.
|
||||||
|
```
|
||||||
|
The `callback()` executes fast, with the `flash_led()` running as a background
|
||||||
|
task. For more information on asyncio, see
|
||||||
|
[the tutorial](https://github.com/peterhinch/micropython-async/blob/master/v3/docs/TUTORIAL.md).
|
||||||
|
|
||||||
###### [Contents](./README.md#0-contents)
|
###### [Contents](./README.md#0-contents)
|
||||||
|
|
||||||
## Appendix 2 Freezing bytecode
|
## Appendix 2 Freezing bytecode
|
||||||
|
|
Ładowanie…
Reference in New Issue