Bonjour,
J'ai un petit souci concernant le vidage du flux de données d(une voie serie sous Linux
Je résume le problème :
J'ai une machine linux (debian) et j'ai un tactile de chez Elotouch de branché dessus.
Le driver de chez EloTouch à l'air de fonctionner correctement mais le problème de calibration quand a lui présente quelques bugs.
La calibration se fait en mode console et on va lire les coordonnées du point taper sur /dev/ttyS0.
Le programme fonctionne si l'on ne touche pas a l"ecran avant de lancer le programme. Mais si l'on remplit le flux de la /dev/ttyS0 (un appuie sur l'ecran = 2 à 3 trame de 10 caractères envoyer), le programme valide automatiquement des coordonées qui ne sont pas forcément les bonnes.
Pour etre plus clair sur le programme (en gros)
- Ouverture de la voie serie
- Init du terminal (console)
- boucle pour valider 3 angles à taper
- appel de la fonction d'affichage Croix (génération de croix à l'ecran)
- Capture de la trame (trame commencant par un 'U' et 10 caractères de long)
- Libération buffer et Descripteur de fichier
-fermeture voie serie
- fermeture terminal
Le probleme c'est que si j'utilise :
while (!feof(DesFich))
{
read = fgetc (Desfich);
}
Il reste bloquer dans la boucle en attendant que j'appuie sur l'écran pour vider la /dev/ttyS0, il n'arrive pas à voir la fichier de fichier pour sortir de la boucle
et si j'utilise un fread, a priori il n'arrive pas a me valider mon
read = malloc (char*)..... il me retourne etat NULL
et meme un fflush ne fonctionne pas, j'ai toujours les coordonnees qui traine.
A priori la boucle de capture des caractères de trame est bonne mais vu que pour un simple appuie, le tactile balance au moins 2 ou 3 trame, le programme garde les trames qui suivent en mémoire pour les coordonnées des autres points.
Merci d'avance de vos réponse.