Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1556 connectés 

  FORUM HardWare.fr
  Programmation
  C

  LINUX - Problème de gestion voie serie avec ecran tactile

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

LINUX - Problème de gestion voie serie avec ecran tactile

n°950508
Romux
Posté le 11-01-2005 à 02:05:16  profilanswer
 

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.

mood
Publicité
Posté le 11-01-2005 à 02:05:16  profilanswer
 

n°950512
push
/dev/random
Posté le 11-01-2005 à 04:34:52  profilanswer
 

je  :sleep:  déja mais essaye de poster un peu plus de code en utilisant les balises, sinon peut-être ça à la place ?

Code :
  1. int c;
  2. while(c = fgetc(Desfich) != EOF) ...


 
enfin quelqun t'aideras demain  :sleep:  :sleep:  :sleep:


Message édité par push le 11-01-2005 à 14:03:18
n°950721
Romux
Posté le 11-01-2005 à 13:51:01  profilanswer
 

tu pense que ca pourrait venir de ma variable "c", moi dans le prog elle est defini en "char"

n°950732
push
/dev/random
Posté le 11-01-2005 à 14:01:41  profilanswer
 

de toute facon ça doit être un int sinon tu risques d'avoir des problèmes un jour ou l'autre mais ton soucis vient peut-être du feof enfait, en testant la valeur de retour du fgetc toi même ça arrange rien ?
 
enfin se que j'en dis  :sleep:

n°950754
Romux
Posté le 11-01-2005 à 14:18:16  profilanswer
 

Le probleme s'est que cette methode je l'ai déja testé de cette facon:
 
read = fgetc (DesFich);
while (read != EOF)
{
    read = fgetc (DesFich);
}
et ça fait le meme resultat.
Je vais poster du code dans la soiree, tu pourras me dire ce qui te choque.
Je te remercie

n°950840
Emmanuel D​elahaye
C is a sharp tool
Posté le 11-01-2005 à 15:45:25  profilanswer
 

Romux a écrit :

Le probleme s'est que cette methode je l'ai déja testé de cette facon:


read = fgetc (DesFich);
while (read != EOF)
{
    read = fgetc (DesFich);
}


et ça fait le meme resultat.


Ce code est correct à condition que 'read' soit de type int.
 
La façon de coder habituelle est :


   int read;
 
   while ((read = fgetc (DesFich)) != EOF)
   {
      /* traiter 'read' */
   }


Message édité par Emmanuel Delahaye le 11-01-2005 à 15:46:25

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°950894
Romux
Posté le 11-01-2005 à 16:34:33  profilanswer
 

Merci je vais essayer avec ça mais bon c'est un prog pour mon boulot et le probleme c'est que sur mon portable pas de voie serie .... sniff

n°950987
Emmanuel D​elahaye
C is a sharp tool
Posté le 11-01-2005 à 17:43:10  profilanswer
 

Romux a écrit :

Merci je vais essayer avec ça mais bon c'est un prog pour mon boulot et le probleme c'est que sur mon portable pas de voie serie .... sniff


On trouve sur le marché des adaptateurs USB/V.24 pilotables du PC comme un port série...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°951389
Romux
Posté le 12-01-2005 à 03:29:08  profilanswer
 

merci bcp je vais me rencarder de ça. je vais poster du code demain.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  LINUX - Problème de gestion voie serie avec ecran tactile

 

Sujets relatifs
[java] Problème avec les variablesprobleme de valeur de variable
problème d'accent avec php et sql server[visual C++ 6] probléme de linkage,!!!!!!!!aidezzzz moiiiiiiiiiiii!!!!
probleme cadre resolution dans la page aide!!![UML] diagramme des classes et linux
problème sous PHP et DW: balise EMBED SRC et BACKGROUND incompatible??Probleme compilation package sous linux
problème de positionnement du texte avec Firefox 
Plus de sujets relatifs à : LINUX - Problème de gestion voie serie avec ecran tactile


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR