Bonjour Je suis encore trés débutant sur Python et je n’ai choisi ce langage que pour des raisons essentiellement pratiques. J’ai, il y a longtemps développé une application ( en objective C mais sans appeler les spécificités du langage objet) j’avais fait ce choix car mon appli devait tourner sur MACOS. Aujourd’hui mon intention est de transférer cette application sur un Rasberry. Il m’a semblé qu' après l’installation de Linux sur mon Mac (j’ai fais le choix d' Ubuntu) le transfert sur un Rasberry serait relativement facile, d’autant que même s’il est de taille imposante, mon programme n’utilise pas de ressources systemes très importantes, et que la vitesse d’exécution d' un Python me semble suffisante. En gros, il y a une soixantaine de fonctions élémentaires, une interface graphique (GUI) assez sophistiquée (une quarantaine de canvas, labels et autres amusettes). Pour éviter les surprises désagréables lors du transfert en Rasberry, je n’utilise dans mes scripts que Tkinter et les imports standards. Je ne vous imposerai pas mon listing (trop gros) mais je pense que le squelette de l' application devrait suffire. Sachez simplement que pour des raisons pratiques seulement 7 interrupteurs sont utilisés pour gérer toute l’application. Actuellement se sont les touches du clavier de l’ordinateur, mais sur le Rasberry ce seront 7 boutons poussoirs. (via le port GPIB). Mais ces 7 poussoirs remplissent une douzaines de fonctions différentes il s’ensuit qu’en fonction du contexte une même touche peut effectuer différentes tâches… Mon programme a donc une boucle principale (ma_boucle() pour ne pas la nommer) ainsi organisée
def ma_boucle ():
if contexte == 1:
# on gère les touches a,t, KP_1
if la_touche == 'a':
fonction 1
if la touche == 't':
fonction 2
if la_touche == 'KP_1' :
fonction 3
if contexte == 2:
# on gère les touches a,z,e,r,t, KP_1,KP_2, KP_3
if la_touche == 'a':
fonction 5
if la touche == 'z':
fonction 2
if la_touche == 'KP_1' :
fonction 9
.
.
.
if contexte == 4:
# on gère les touches a,z,e,r,t, KP_1,KP_2, KP_3
if la_touche == 'a':
fonction 18
if la touche == 'z':
fonction 7
if la_touche == 'KP_1' :
fonction 5
.
.
.
Je vous passe la suite il me semble que tout est assez clair. Hormis les différents imports (GUI, tkinter et librairie standatd) mon script principal est de la forme :
import ...
# mes définitions de fonctions
def maj():
def stat_DD():
def stat_RAM():
....
def affiche1(a,b):
def affiche2(c,d):
....
# la fameuse boucle principale
def ma_boucle(la_touche):
....
....
# et le script se termine en
....
# on passe la touche frappée à ma_boucle()
fen1.bind("<Key>",ma_boucle)
fen1.mainloop()
############################################
# #
# SAUVEGARDE AVANT ARRET DU SCRIPT #
# Ceci s'execute quand on quitte le script #
# #
############################################
lit_stat_RAM()
maj_stat_DD()
quitter()
Voilà, c’est tout. Et maintenant mon appel au secours : Nulle part je n’ai trouvé de documentation claire sur la façon dont s’execute un script en Python En C je sais toujours où se trouve le pointeur programme, en Python c’est le flou en la matière. Le résultat c’est que j’ai des "stack error" (ou assimilés) des récursions trop nombreuses (je crois) et cela après un temps d’utilisation du script trop long à son gré ! Et tout cela sans aucun message d’erreur pendant l’exécution. Si ces erreurs proviennent, comme je le pense, d’un débordement de la pile d' évènements comment remettre à zéro cette structure ? Veuillez pardonner mon ignorance. Merci pour vos avis et aussi pour quelques liens qui me rendront (on peut rêver, moins bête)