Added french documentation for Upsilon extension of numworks module

This commit is contained in:
Sylvain PILLOT 2024-03-21 21:19:18 +01:00
parent 649ee31cb4
commit 87eb799412
2 changed files with 130 additions and 59 deletions

View File

@ -4,11 +4,13 @@ PythonExtra offre la possibilité d'utiliser certains modules de la Numworks afi
Il s'agit d'un Work in Progress (WIP) et le support est sujet à tests approfondis à ce stade. Le port concerne les modules `kandinsky`, `ion` et `time` de la Numworks qui sont spécifiques à la machine et sont désormais supportés via cette implémentation. Les modules `math`, `cmath`, `random` étant identiques entre la version `Numworks` et les modules `builtins` de MicroPython, ils ne font donc pas partie de cette implémentation mais sont parfaitement utilisables sans modification dans les scripts.
Note : les modules `turtle` et `matplotlib.pyplot` ne sont pas repris dans cette implémentation. Il est possible d'utiliser les modules `turtle`, `matplotlib` et `casioplot` de Casio Education qui sont parfaitement fonctionnels et fournis en example dans `ports/sh/examples`.
Note : les modules `turtle` et `matplotlib.pyplot` ne sont pas repris dans cette implémentation. Il est possible d'utiliser les modules `turtle`, `matplotlib` et `casioplot` de Casio Education qui sont parfaitement fonctionnels et fournis en exemple dans `ports/sh/examples`.
## `kandinsky`
### Version de base `kandinsky` Epsilon :
Le module `kandinsky` offre le support des primitives graphiques via les routines hautes performance de `gint`. Toutes les fonctions de ce module sont disponibles :
- `color(r,g,b)` : Génère la valeur de la couleur r,g,b. Vous pouvez aussi simplement utiliser un tuple pour définir une couleur : (r,g,b).
@ -36,6 +38,59 @@ Le module offre de plus un certain nombre de couleurs explicitement nommées et
- "cyan"
- "brown"
### Version étendue `kandinsky` Upsilon :
Le fork `Upsilon` de l'OS Numwork offre diverses méthodes additionnelles permettant d'étendre les capacités du module `kandinsky`.
- `draw_line(x1,y1,x2,y2,color)` : Dessine une ligne entre les points (x1,y1) et (x2,y2).
- `draw_circle(xc,yc,rc,color)` : Dessine un cercle de centre (xc,yc) et de rayon rc.
- `fill_circle(xc,yc,rc,color)` : Dessine un disque de centre (xc,yc) et de rayon rc.
- `fill_polygon(p,color)` : trace un polygone plein reliant tous les points founis dans le tableau p.
```
from math import ceil
from kandinsky import *
SCREEN_W, SCREEN_H = 320, 222
def mod(l):
x_min, y_min = l[0]
x_max, y_max = 0, 0
for k in range(len(l)):
x_min = min(x_min, l[k][0])
y_min = min(y_min, l[k][1])
x_max = max(x_max, l[k][0])
y_max = max(y_max, l[k][1])
fx = max(1, (x_max-x_min)/SCREEN_W)
fy = max(1, (y_max-y_min)/SCREEN_H)
for k in range(len(l)):
l[k][0] = ceil((l[k][0]-x_min)/fx)
l[k][1] = ceil((l[k][1]-y_min)/fy)
l = [
[0,200],
[400,200],
[400,250],
[450,150],
[0,200],
[2,62],
[223,236],
[253,222],
[274,236],
[350,184],
[121,2],
[2,62]
]
mod(l)
fill_polygon( l, (255, 0, 0) )
```
### Version étendue `kandinsky` pour fx-CG50 / Graph 90+E :
Les fonctions suivantes sont des ajouts pour tirer partie de l'écran large de la fxCG et qui sont donc une extension du module `Kandinsky`. Elles ne sont donc par définition pas compatible avec le Python Numwork. Ces fonctions sont reconnaisables à leurs appellations qui commencent toutes par `CGEXT_` :
- `CGEXT_Enable_Wide_Screen()` : Active l'écran étendu de la fxCG, aucun paramètre n'est nécessaire. Les coordonnées x de l'écran physique peuvent être négatives pour empiéter sur la bande blanche de gauche et supérieures à 319 pixels pour empièter sur la bande blanche de droite;
@ -53,62 +108,84 @@ Note 2 : En mode non étendu (par défaut à l'initialisation du module `Kandins
## `ion`
### Version de base `ion` Epsilon :
Le module `ion` donne accès à la fonction `keydown(k)` qui renvoie True si la touche k placée en argument est appuyée et False sinon.
La "conversion" des touches entre la machine Numworks et Casio fxCG50 se fait selon le mapping suivant :
| Numworks | Casio fxCG50 | Numworks Key # |
|----------|--------------|---------------------|
| KEY_LEFT | KEY_LEFT | 0 |
| KEY_UP | KEY_UP | 1 |
| KEY_DOWN | KEY_DOWN | 2 |
| KEY_RIGHT | KEY_RIGHT | 2 |
| KEY_OK | KEY_F1 | 4 |
| KEY_BACK | KEY_EXIT | 5 |
| KEY_HOME | KEY_MENU | 6 |
| KEY_ONOFF | KEY_ACON | 7 |
| ... | ... | ... |
| KEY_SHIFT | KEY_SHIFT | 12 |
| KEY_ALPHA | KEY_ALPHA | 13 |
| KEY_XNT | KEY_XOT | 14 |
| KEY_VAR | KEY_VARS | 15 |
| KEY_TOOLBOX | KEY_OPTN | 16 |
| KEY_BACKSPACE | KEY_DEL | 17 |
| KEY_EXP | KEY_EXP | 17 |
| KEY_LN | KEY_LN | 19 |
| KEY_LOG | KEY_LOG | 20 |
| KEY_IMAGINARY | KEY_F2 | 21 |
| KEY_COMMA | KEY_COMMA | 22 |
| KEY_POWER | KEY_POWER | 23 |
| KEY_SINE | KEY_SIN | 24 |
| KEY_COSINE | KEY_COS | 25 |
| KEY_TANGENT | KEY_TAN | 26 |
| KEY_PI | KEY_F3 | 27 |
| KEY_SQRT | KEY_F4 | 28 |
| KEY_SQUARE | KEY_SQUARE | 29 |
| KEY_SEVEN | KEY_7 | 30 |
| KEY_EIGHT | KEY_8 | 31 |
| KEY_NINE | KEY_9 | 32 |
| KEY_LEFTPARENTHESIS | KEY_LEFTP | 33 |
| KEY_RIGHTPARENTHESIS | KEY_RIGHTP | 34 |
| ... | ... | ... |
| KEY_FOUR | KEY_4 | 36 |
| KEY_FIVE | KEY_5 | 37 |
| KEY_SIX | KEY_6 | 38 |
| KEY_MULTIPLICATION | KEY_MUL | 39 |
| KEY_DIVISION | KEY_DIV | 40 |
| ... | ... | ... |
| KEY_ONE | KEY_1 | 42 |
| KEY_TWO | KEY_2 | 43 |
| KEY_THREE | KEY_3 | 44 |
| KEY_PLUS | KEY_ADD | 45 |
| KEY_MINUS | KEY_SUB | 46 |
| ... | ... | ... |
| KEY_ZERO | KEY_0 | 48 |
| KEY_DOT | KEY_DOT | 49 |
| KEY_EE | KEY_F5 | 50 |
| KEY_ANS | KEY_NEG | 51 |
| KEY_EXE | KEY_EXE | 52 |
| Numworks | Casio fxCG50 | Numworks Key # | Upsilon Key Name |
|----------|--------------|---------------------|---------------------|
| KEY_LEFT | KEY_LEFT | 0 | 'left' |
| KEY_UP | KEY_UP | 1 | 'up' |
| KEY_DOWN | KEY_DOWN | 2 | 'down' |
| KEY_RIGHT | KEY_RIGHT | 2 | 'right' |
| KEY_OK | KEY_F1 | 4 | 'OK' |
| KEY_BACK | KEY_EXIT | 5 | 'back' |
| KEY_HOME | KEY_MENU | 6 | 'home' |
| KEY_ONOFF | KEY_ACON | 7 | 'onOff' |
| ... | ... | ... | ... |
| KEY_SHIFT | KEY_SHIFT | 12 | 'shift' |
| KEY_ALPHA | KEY_ALPHA | 13 | 'alpha' |
| KEY_XNT | KEY_XOT | 14 | 'xnt' |
| KEY_VAR | KEY_VARS | 15 | 'var' |
| KEY_TOOLBOX | KEY_OPTN | 16 | 'toolbox' |
| KEY_BACKSPACE | KEY_DEL | 17 | 'backspace' |
| KEY_EXP | KEY_EXP | 17 | 'exp' |
| KEY_LN | KEY_LN | 19 | 'ln' |
| KEY_LOG | KEY_LOG | 20 | 'log' |
| KEY_IMAGINARY | KEY_F2 | 21 | 'imaginary' |
| KEY_COMMA | KEY_COMMA | 22 | 'comma' |
| KEY_POWER | KEY_POWER | 23 | 'power' |
| KEY_SINE | KEY_SIN | 24 | 'sin' |
| KEY_COSINE | KEY_COS | 25 | 'cos' |
| KEY_TANGENT | KEY_TAN | 26 | 'tan' |
| KEY_PI | KEY_F3 | 27 | 'pi' |
| KEY_SQRT | KEY_F4 | 28 | 'sqrt' |
| KEY_SQUARE | KEY_SQUARE | 29 | 'square' |
| KEY_SEVEN | KEY_7 | 30 | '7' |
| KEY_EIGHT | KEY_8 | 31 | '8' |
| KEY_NINE | KEY_9 | 32 | '9' |
| KEY_LEFTPARENTHESIS | KEY_LEFTP | 33 | '_paren_open_' |
| KEY_RIGHTPARENTHESIS | KEY_RIGHTP | 34 | '_paren_clos_' |
| ... | ... | ... | ... |
| KEY_FOUR | KEY_4 | 36 | '4' |
| KEY_FIVE | KEY_5 | 37 | '5' |
| KEY_SIX | KEY_6 | 38 | '6' |
| KEY_MULTIPLICATION | KEY_MUL | 39 | '_star_' |
| KEY_DIVISION | KEY_DIV | 40 | '_slash_' |
| ... | ... | ... | ... |
| KEY_ONE | KEY_1 | 42 | '1' |
| KEY_TWO | KEY_2 | 43 | '2' |
| KEY_THREE | KEY_3 | 44 | '3' |
| KEY_PLUS | KEY_ADD | 45 | '_plus_' |
| KEY_MINUS | KEY_SUB | 46 | '_hyphen_' |
| ... | ... | ... | ... |
| KEY_ZERO | KEY_0 | 48 | '0' |
| KEY_DOT | KEY_DOT | 49 | '_dot_' |
| KEY_EE | KEY_F5 | 50 | 'EE' |
| KEY_ANS | KEY_NEG | 51 | 'Ans' |
| KEY_EXE | KEY_EXE | 52 | 'EXE' |
### Version de base `ion` Upsilon :
Upsilon étend les méthodes du module `ion` en ajoutant les fonctions suivantes :
- `get_keys()` : renvoi la liste des touches pressées (au format texte) selon les codes définis dans le tableau ci-dessus.
- `set_brightness( level )` : change la luminosité de l'écran (level prenant une valeur comprise entre 0 et 240 comprises).
- `get_brightness( )` : retourne la luminosité courante de l'écran (renvoie une valeur comprise entre 0 et 240 comprises).
- `keyboard_keydown( k )` : similaire à keydown( k ) de base dans Epsilon, pour des raisons de compatibilité ascendante.
- `battery( )` : retourne le voltage courant de la batterie (des piles sur Casio-fxCG).
- `battery_level( )` : retourne le l'état de charge de la batterie (des piles) sous forme d'un entier compris en 0 (déchargée(s)) et 4 (complètement chargée(s)).
- `battery_ischarging( )` : renvoie `True` si batterie en charge et `False` sinon (rencoie toujours `False`sur Casio fx-CG car piles sans fonction de recharge).
## `time`

View File

@ -167,10 +167,6 @@ STATIC mp_obj_t ion_keydown(mp_obj_t arg1) {
/* The following function are coming from the Upsilon extension of NW Ion methods */
STATIC mp_obj_t ion_keyboard_keydown(mp_obj_t arg1) {
return ion_keydown( arg1 );
}
STATIC mp_obj_t ion_battery( void ) {
int voltage = (int) gint_world_switch( GINT_CALL( GetMainBatteryVoltage, 1) );
float value = ((float) voltage) / 100.0f;
@ -221,7 +217,6 @@ STATIC mp_obj_t ion_get_brightness( void ) {
MP_DEFINE_CONST_FUN_OBJ_1(ion_keydown_obj, ion_keydown);
MP_DEFINE_CONST_FUN_OBJ_1(ion_keyboard_keydown_obj, ion_keyboard_keydown);
MP_DEFINE_CONST_FUN_OBJ_0(ion_battery_obj, ion_battery);
MP_DEFINE_CONST_FUN_OBJ_0(ion_battery_level_obj, ion_battery_level);
MP_DEFINE_CONST_FUN_OBJ_0(ion_battery_charging_obj, ion_battery_charging);
@ -295,7 +290,6 @@ STATIC const mp_rom_map_elem_t ion_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_keydown), MP_ROM_PTR(&ion_keydown_obj) },
/* Upsilon only objects */
{ MP_ROM_QSTR(MP_QSTR_keyboard_keydown), MP_ROM_PTR(&ion_keyboard_keydown_obj) },
{ MP_ROM_QSTR(MP_QSTR_battery), MP_ROM_PTR(&ion_battery_obj) },
{ MP_ROM_QSTR(MP_QSTR_battery_level), MP_ROM_PTR(&ion_battery_level_obj) },
{ MP_ROM_QSTR(MP_QSTR_battery_charging), MP_ROM_PTR(&ion_battery_charging_obj) },