Go Down

Topic: bibliothèque Serial qui ne bloque pas loop (Read 1 time) previous topic - next topic

55lj5hh25

Bonjour

en faisant des essai j'ai constaté que la bibliothèque Serial inclut dans l ide Arduino bloque loop le temps de la communication.

existe t il des bibliothèques qui ne bloque pas ?

comment fait la bibliothèque pour séparé les caractere ?

est ce que le fichier rxtxSerial a al racine du dossier Arduino est le "driver" ?

fdufnews

Quote
bibliothèque Serial inclut dans l ide Arduino bloque loop le temps de la communication

Quelle instruction bloque?
Fais voir ton code

55lj5hh25

j'ai pas de code j'en ai fait un pour montrer:
la fonction tx envoie une phrase a l'ordi, elle empêche le clignotement de la diode de a fonction clignote.
donc : la bibliothèque serial est "bloquante" ( je sais pas si le terme et bon, mais y  a surement un terme officiel pour ce genre de comportement )
tu peux mettre la fonction tx en commentaire pour constater que ça clignote alors plus vite.

il me faudrait une bibliothèque qui peut envoyer des valeurs sans bloquer la boucle car pour contrôler une moteur pas a pas qui tourne vite, il faut que la boucle soit tres souvent rafraîchie.

Code: [Select]

void tx(){
  int i = 0;
  while(i++ < 10){
    Serial.print("le code envoie a chaque boucle cette chaine de caractere 10 fois . peu importe ce  qu elle contient mais il faut qu elle soit longue pour bien voir que ça bloque la boucle\n");
  }
}

boolean led = false;
unsigned long aa = 0;
void clignote (){
  if(aa < micros() - 100000){
    digitalWrite(13,led = !led );
    aa = micros();
  }
}

void setup() {               
  Serial.begin(4800);
  pinMode(13,OUTPUT);
}


void loop() {
  tx();
  clignote();
}

B@tto

Serial.begin(4800);

Essaye à 115200 ... Tu envois je sais pas combien de caractères 10 fois à une vitesse très basse ! Chaque caractère nécessite un byte, à la louche ça fait quasiment 1000 caractères x 8 bit soit 8 000 bits à 4800 bits/s ... Y'a pas de miracle !

55lj5hh25

je voudrais etre sur que loop n'est pas bloqué ne serait ce que une seul milliseconde ? c'est trop demander a une carte Arduino ? je parle bien d une carte Arduino

Go Up