vague nerd a écrit :
...
Par contre, le programme boucle sans temporisation (sleep). Je me demande s'il ne serait pas judicieux d'en ajouter un (très faible pour ne pas que ça se remarque), pour que le pi ne soit pas tout le temps occupé à faire des if qui seront le plus souvent insatisfait. Genre time.sleep(0.1). Qu'en pensez-vous ?
Cdt.
Bonjour,
Merci du feed-back qui me permet de découvrir les possibilités du python (je suis un fossile vivant, élevé à l'UNIX System 3 et au C de Ritchie & Kernighan ) .
Ma remarque suivante n'est donc pas basée sur l'expérience du Raspberry et du python.
Quelque soit le langage utilisé (interprété, compilé), j'ai toujours eu horreur de la boucle infinie (while true) et de l'appel système sleep.
Un programme qui boucle en attendant un événement comme une action humaine ou un périphérique, nefait rien d'autre pendant ce temps. Par contre, il consomme de la ressource peu être difficile à swapper (selon les algorytmes utilisés) car, en général, le swap intervient sur un défaut d'IO (et sur un % de CPU utilisé (légèrement modifiable par la commande nice)).
AMHA, la solution élégante est l'utilisation des interruptions. J'ai un peu googolé et cela semble possible sur le GPIO du Raspberry:
http://raspberrywebserver.com/gpio/usin ... -gpio.html
Reste à savoir si ta carte lecteur RFID fournit une interruption. Au siècle dernier, j'avais réalisé un clavier I2C en utilisant 2 PCF8574. Ce circuit génère une interruption sur changement d'état (le clavier était une matrice de 8x8 touches, pour une face avant déportable pour un projet d'émetteur/récepteur).
Le programme devait faire plein d'autres choses et ne pouvait passer son temps à attendre une action de l'opérateur (humain = lent). le micro-controlleur était un kit à base de 80C51 (un ancêtre aussi) et l'OS (en fait un interpréteur basic) n'était pas multitache :
http://www.ti.com/product/PCF8574
Vu la puissance faramineuse du Raspberry, cette approche n'est peut-être plus nécessaire mais, apparemment, le besoin existe
encore puisque certains se sont donné le mal d'implémenté la fonctionnalité dans une bibliothèque.
Cordialement
Sylvain