Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » [Bêta] PythonExtra.
Lephenixnoir En ligne Administrateur Points: 24572 Défis: 170 Message

[Bêta] PythonExtra.

Posté le 29/10/2022 09:49

PythonExtra est un add-in Python alternatif pour (à ce stade) Graph 35+E II, Prizm et Graph 90+E. L'objectif est de fournir plus de fonctionnalités : modules standard, getkey(), fonctions de dessin plus performantes, etc.

Version Bêta 0.2
Graph 35+E II / Prizm / Graph 90+E : PythonExtra-pe-0.2.0-beta.zip


Aperçu de PythonExtra sur Graph 90+E. (Cliquez pour agrandir)

Description sommaire des fonctionnalités :
  • Compile pour Graph 90+E (fx-CG 10/20/50) et Graph 35+E II (fx-9860G III)
  • Peu de RAM sur Graph 35+E II (c'est difficile d'en trouver sur ce modèle)
  • Un shell pas trop mal (saisie rapide, scrolling) avec de bonnes performances
  • Plein de modules standard
    • array, builtins, cmath, collections, io, math, random, struct, sys, time
  • Le module spécifique CASIO : casioplot (fidèle à part sur les polices)
  • Un nouveau module gint avec les fonctionnalités avancées de gint :
    • Pour l'instant, une bonne partie de <gint/display.h> et <gint/keyboard.h>
    • Donc getkey() (attente de touche) ainsi que keydown() (test instantané) !
    • Et des fonctions de dessin rapides comme dline() ou drect()

Le plan actuel :
  • Être sensiblement compatible avec l'appli Python officielle.
  • Pousser les fonctionnalités ajoutées pour vraiment relever le niveau de Python !
  • Si du temps de développement se débloque : support autres Graph mono (pas de promesses).

Updates et screenshots à venir. Je n'ai pas l'intention d'implémenter un million de fonctionnalités, juste ce qu'il faut pour s'assurer que ça ne finisse pas mal documenté et non maintenu comme CasioPython.

Dépôt Git : https://gitea.planet-casio.com/Lephenixnoir/PythonExtra
PythonExtra est notamment possible grâce à l'aide précieuse de Mb88.

Comparaison directe

Dans l'exemple ci-dessous (réalisé par Mb88), un Flappy Bird déjà bien optimisé (dessin partiel etc, à gauche) est accéléré un bon gros coup en utilisant PythonExtra et le module gint pour le dessin (à droite).


Contexte historique

Aux journées APMEP 2022, redgl0w racontait comment le port MicroPython pour Numworks n'était finalement pas super difficile. Moi je parlais de comment un port maison résoudrait le problème de getkey(), et Critor m'a convaincu d'essayer sur-le-champ.

En fin de compte, j'ai clôné MicroPython Dimanche à midi et à 1 heure du matin j'avais un port fonctionnel avec getkey() sur ma Graph 90+E (que j'ai d'ailleurs montré à CASIO Lundi, pour la démo). Comme quoi, des fois ça marche tout seul !

(Enfin, le début marche tout seul. Faire une bonne UI et gérer tous les détails ensuite c'est une autre paire de manches !)

Fichier joint


Précédente 1, 2, 3 ··· 10 ··· 16, 17, 18, 19, 20, 21, 22 Suivante
Tuper4 Hors ligne Membre Points: 889 Défis: 19 Message

Citer : Posté le 25/02/2024 16:20 | #


ouah! bomme chance pour tout ca!
When the doorbell rings at three in the morning, it’s never good news. -Anthony Horowitz
Slyvtt Hors ligne Maître du Puzzle Points: 2389 Défis: 17 Message

Citer : Posté le 25/02/2024 21:28 | # | Fichier joint


Yo,

merci Lephé, super boulot.
Voici en pièce attachée les versions compilées à jour (de ce soir) avec une icone Beta pour bien distinguer les versions.

Les corrections de Lephé sont intégrées à la version fx9860G ainsi que le support des fileIO (open / close / read / write). Il y a quelques exemples fournis. Par contre pas de module NW ni de support de ulab car il n'y a pas assez de mémoire. On récupère donc juste les fichiers en plus par rapport à la dernière version.

Pour la version fxCG50, pas de nouvelles features, mais par contre des corrections de bugs ici et là pour stabiliser la version.

Amusez vous bien, et si vous trouvez des bugs, merci de faire remonter.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Tuper4 Hors ligne Membre Points: 889 Défis: 19 Message

Citer : Posté le 25/02/2024 21:45 | #


Donc il y a un open/read /write pour fx9860G ?! Bravo pour le travail!
When the doorbell rings at three in the morning, it’s never good news. -Anthony Horowitz
Slyvtt Hors ligne Maître du Puzzle Points: 2389 Défis: 17 Message

Citer : Posté le 25/02/2024 21:48 | #


Oui depuis ce soir grâce à la RAM économisée par les améliorations de Lephé, j'ai pu ajouter le support des fichiers pour la fx9860G.
Avant ça plantait par manque de mémoire.
Par contre j'ai pas testé énormément donc attention tout de même.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Tuper4 Hors ligne Membre Points: 889 Défis: 19 Message

Citer : Posté le 25/02/2024 22:34 | #


Ok ok! Et, je suppose qu'il peut lire seulement les fichiers binaires? Mais merci beaucoup a toi a Lephe et a tout les autres qui ont aidés!
When the doorbell rings at three in the morning, it’s never good news. -Anthony Horowitz
Slyvtt Hors ligne Maître du Puzzle Points: 2389 Défis: 17 Message

Citer : Posté le 25/02/2024 22:58 | #


Non non, binaire ou normaux, comme tu veux.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Tuper4 Hors ligne Membre Points: 889 Défis: 19 Message

Citer : Posté le 26/02/2024 08:42 | #


Ouah! C'est cool ça! Je vais vous tiendre au courant quand je l'utiliserai
When the doorbell rings at three in the morning, it’s never good news. -Anthony Horowitz
Ptitjoz Hors ligne Membre Points: 263 Défis: 10 Message

Citer : Posté le 26/02/2024 17:42 | #


Merci Lephe et Slyvtt.
Super travail !
Je vais regarder tout celà d'un plus près quand j'aurais un peu de temps.. là je suis en déplacement sans aucun matériel.
Un peu poète, un peu geek, un peu rêveur, un peu écolo.
https://joz.alwaysdata.net/info/

Ptitjoz Hors ligne Membre Points: 263 Défis: 10 Message

Citer : Posté le 27/02/2024 18:20 | #


Premiers retours de la version Beta
0) L'icône lève les ambiguïtés ; merci !
1) quand je navigue de répertoire en répertoire j'ai ce genre se soucis après quelques EXE
Edit Sur machine Graph 35+EII et émulateur Casio

j'essaierai de faire quelque chose de reproductible
Pour simplifier, j'ai 2 répertoires AAAA et BBBB et dans chacun un script aaaa.py et bbbb.py avec print("hello")
j'exécute l'un plusieurs fois et idem pour l'autre et à un moment il n'est plus possible de changer sans sortir complément de python

2) La gestion de fichier fonctionne bien Merci ! w , a, r mais toujours à la racine (peut-on spécifier un chemin) ?

3) les longs noms (donnés dans des exemples ne passent pas sur l'émulateur
Un peu poète, un peu geek, un peu rêveur, un peu écolo.
https://joz.alwaysdata.net/info/

Slyvtt Hors ligne Maître du Puzzle Points: 2389 Défis: 17 Message

Citer : Posté le 27/02/2024 18:36 | #


pour 0/ ça aide bien aussi les icones différentes

1/ (E9) est un code erreur = Error 9 - C'est je pense là encore la conso mémoire. Peux tu faire un SHIFT + VAR pour dire ce que tu vois ?

2/ Je cherche aussi pour les sous répertoires, mais sans succès pour le moment, y'a un truc qui veut pas et je sais pas pourquoi.

3/ Oui, l'émulateur n'accepte que le format DOS vintage 8+3, heureusement Python Extra gère bien lui.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Ptitjoz Hors ligne Membre Points: 263 Défis: 10 Message

Citer : Posté le 27/02/2024 18:42 | #


Voila le shift VAR

Un peu poète, un peu geek, un peu rêveur, un peu écolo.
https://joz.alwaysdata.net/info/

Lephenixnoir En ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 27/02/2024 19:37 | #


Coucou, E9 c'est ce que tu récupères si l'add-in est à court de mémoire. Déjà je suis content de voir que ça marche parce qu'habituellement quand un programme est à court de mémoire c'est difficile de faire quoi que ce soit.

Avec 2048 octets de libres j'imagine que c'est fragmenté. C'est difficile de faire des miracles, faudra optimiser l'usage mémoire encore et voir si y'a des fuites. En tous cas y'a rien que tu peux faire dans l'immédiat à part éviter d'avoir 100 fichiers dans le même dossier.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2389 Défis: 17 Message

Citer : Posté le 27/02/2024 20:02 | #


Accessoirement je confirme au passage (à Tuper4), que le mode binaire fonctionne parfaitement pour les entrées/sorties vers les fichiers.

Par exemple le code suivant passe crème:
file = open("demobinary.bin", "wb")
num=[3,6,9,12,18]
array=bytearray(num)
file.write(array)
file.close()

#open and read the file after the appending:
file = open("demobinary.bin","rb")
number = list( file.read(3) )
number2 = list( file.read(2) )
print(number)
print("\nYou should read [3,6,9] \n")
print(number2)
print("\nand now [12,18] \n")
file.close()


Et comme le montre la capture suivante on est bien Ok en terme de contenu dans le fichier généré :


Sachant que 0x0C = 12 en décimal et 0x12 = 18 en décimal, donc on est bon sur ce coup là.

Attention, ça reste une vérification rapide, on verra à l'usage et avec retour d'expérience consolidé.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Tuper4 Hors ligne Membre Points: 889 Défis: 19 Message

Citer : Posté le 27/02/2024 21:22 | #


Une question un peu hors-sujet, mais peut on éxécuter des programmes en parallèle avec PE? Genre, les deux programmes s'éxécutes en même temps?

Sinon, merci pour ton exemple Slyvtt! Car je ne comprenais pas comment l'utiliser . Et j'ai une autre petite question, pour quoi il y a "wb" a la fin de cette ligne?
file = open("demobinary.bin", "wb")
A part de tout ça, joli travail! Merci beaucoup!
When the doorbell rings at three in the morning, it’s never good news. -Anthony Horowitz
Lephenixnoir En ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 27/02/2024 21:23 | #


Euh du threading serait peut-être envisageable un jour mais là non.

Pour le "wb", "w" veut dire "write" (écriture dans le fichier) et "b" veut dire "binaire" (ça change presque rien ici).
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Tuper4 Hors ligne Membre Points: 889 Défis: 19 Message

Citer : Posté le 27/02/2024 21:45 | #


Ok ok! J'ai testé juste là et ça marche nickel! Et j'ai une autre question ^^", peut on crée des fichiers avec PE maintenant? Merci pour vôtre travail encore une fois!
When the doorbell rings at three in the morning, it’s never good news. -Anthony Horowitz
Lephenixnoir En ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 28/02/2024 08:04 | #


Avec la démo de SlyVTT tu peux oui. C'est d'ailleurs exactement ce qui est fait dans ton code ci-dessus. Quand tu ouvres un fichier en écriture ça le crée automatiquement s'il n'existe pas déjà (et s'il existe déjà ça le vide !).
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Ptitjoz Hors ligne Membre Points: 263 Défis: 10 Message

Citer : Posté le 28/02/2024 09:07 | #


Lephenixnoir a écrit :
Avec la démo de SlyVTT tu peux oui. C'est d'ailleurs exactement ce qui est fait dans ton code ci-dessus. Quand tu ouvres un fichier en écriture ça le crée automatiquement s'il n'existe pas déjà (et s'il existe déjà ça le vide !).

je suppose que la fonction delete du fichier n'existe pas ?
Un peu poète, un peu geek, un peu rêveur, un peu écolo.
https://joz.alwaysdata.net/info/

Slyvtt Hors ligne Maître du Puzzle Points: 2389 Défis: 17 Message

Citer : Posté le 28/02/2024 09:55 | #


Dans Python, remove() et removedir() font partie du module os
A ma connaissance celui-ci n'est pas supporté pour le moment.

Par contre la fxlibc propose le remove() dans <stdio.h> à l'état de test et on a dans gint le support de rmdir() et unlink(), donc on devrait pouvoir faire si il y a un besoin exprimé.

J'avoue que perso j'ai jamais testé ces fonctions IRL, donc je sais pas leur niveau de fiabilité/robustesse.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Ptitjoz Hors ligne Membre Points: 263 Défis: 10 Message

Citer : Posté le 28/02/2024 10:07 | #


Merci, c'était juste pour info/curiosité ; sauf si d'autres en font une demande forte, ne vous fatiguez pas à développer une fonction qui sera peu usitée.
Un peu poète, un peu geek, un peu rêveur, un peu écolo.
https://joz.alwaysdata.net/info/

Ptitjoz Hors ligne Membre Points: 263 Défis: 10 Message

Citer : Posté le 17/03/2024 17:51 | #


Rien de nouveau pour PE ? des choses en préparation ?
Un peu poète, un peu geek, un peu rêveur, un peu écolo.
https://joz.alwaysdata.net/info/

Précédente 1, 2, 3 ··· 10 ··· 16, 17, 18, 19, 20, 21, 22 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 83 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd