Lecteur code barre et traitement [Résolu]

Bonjour

Je vous présente mon problème. J’ai réalisé une « pointeuse » avec les éléments suivants

Arduino Nano
Shield datalogeur (lecteur carte microSD, horloge)
Afficheur LCD 2 lignes 16 caractères I2C
lecteur de code barre 'Code39" sortie TTL

Fonctionnement
Attente de données sur port série
lecture code barre et stockage dans variable
puis
Affichage d’un message de bienvenue et du code numérique du code barre avec des Delay() pour augmenter le temps d’affichage
puis
Stockage sur la carte SD d’une ligne contenant Date, Heure et code numérique du code barre
puis
Retour au début pour le prochain code barre

(Durée d’un cycle complet environs 8s après la lecture du code barre)

Cette installation fonctionne très bien depuis plus d’un an, Aujourd’hui j’ai besoin d’ajouter une condition pour éviter les doublons lors de la lecture (certaines personnes badge plusieurs fois de suite)

J’ai donc fais une boucle if qui vérifie que le nouveau code barre lu ne soit pas identique au précédent et qui dans le cas d’un doublon lance « return void() » et cela fonctionne bien si programme à fait un tour complet (8s)
Mais si un nouveau code barre est lu avant cette durée il n’est pas vu comme un doublon.

La lecture du code barre est faite sur un port série virtuel pin D5 et D6 à l’aide de la librairie « SoftwareSerial » , j'utilise le code ci dessous pour la capture des données

while(mySerial.available()) {                          // Attente du debut de reception 
     mySerial.setTimeout(500);		 // Délai après le dernier caractère
     C39Complet= mySerial.readString();       // capture de la chaine sur port série

J’ai essayer de vidanger le buffer d’entrée avec flush en fin de programme mais cela ne fonctionne pas.

Merci pour votre aide

flush ne vide pas le buffer de réception mais attend que le buffer d'émission soit vide.
Pour purger le buffer de réception il faut fait un

while(Serial.available())
     Serial.read();

ou

while(Serial.read()!=-1);

En gros je voudrai empêcher l'entrée des données juste après la capture et réactiver à la fin

j'ai aussi testé un serial.end juste après la lecture et un begin à la fin du programme mais sans succès

C'est bon j'ai réglé le problème simplement avec un

mySerial.read();

en fin de boucle