Bonjour à tous,
Me revoilà avec un problème concernant PcDuino et l'Uart RS232...
J'utilise ce code mais celui ci me fait tourner le processeur à 100%... Quelqu'un n'aurait il pas un bout de code pour éviter de le monopoliser. J'ai déjà utilisé un Timer pour cadencer la boucle mais cela ne suffit pas, ayant une boucle dans le programme, je pense que le problème est la... pouvez vous m'aider??? Merci d'avance
#!/usr/bin/python
# -*- coding: utf-8 -*-
# code Python obtenu avec l'IDE Pyduino - www.mon-club-elec.fr
from pyduino_pcduino import * # importe les fonctions Arduino pour Python
# entete declarative
noLoop=True # bloque loop auto - utilisation timer ici
DEL=2 # declare la broche a utiliser
#--- setup ---
def setup():
#-- gestion port série
Uart.begin(9600) # debit
print("Initialisation Port Série : /dev/ttyS1 @ 9600 = OK ")
delay(5) # laisse temps initialisation serie
pinMode(DEL,OUTPUT) # met la broche en sortie
digitalWrite(DEL,LOW) # eteint les broches
Serial.println("La broche " +str(DEL)+ " est en sortie !")
loop() # premier appel loop
# -- fin setup --
# -- loop --
def loop():
while not Uart.available(): # attend caracteres entrant = attend reponse
pass # ne fait rien
delay(10) # laisse le temps aux caracteres d'arriver...
while Uart.available(): # pour lire tout ce qui entre
chaine=Uart.waitingAll() # lit chaine en reception jusqu'a plus rien...
if not Uart.available(): delay(10) # attend caracteres entrant si plus rien
print "chaine recue = "+ chaine
if str(chaine)=="0x13" :
digitalWrite(DEL,HIGH) # allume la LED
elif str(chaine)=="0x12" :
digitalWrite(DEL,LOW) # eteint la LED si negatif
timer(100, loop) # appelle fonction loop apres intervalle en ms
# resultats sur pcduino avec htop :
# en mode loop auto permanent : usage CPU = 100%
# 100 ms ~10 appels par seconde = 5% usage CPU
# 10 ms ~ 100 appels par seconde = 20% usage CPU
# 5 ms ~ 200 appels par seconde = 30% usage CPU => bon compromis
# 1 ms ~ 1000 appels par seconde = 60% usage CPU
# 0.5ms ~ 2000 appels par seconde = 75% usage CPU
# 0.1ms ~ 10 000 appels par seconde = 95% usage CPU
# -- fin loop --