LINUX - Problème de gestion voie serie avec ecran tactile - C - Programmation
Marsh Posté le 11-01-2005 à 04:34:52
je déja mais essaye de poster un peu plus de code en utilisant les balises, sinon peut-être ça à la place ?
Code :
|
enfin quelqun t'aideras demain
Marsh Posté le 11-01-2005 à 13:51:01
tu pense que ca pourrait venir de ma variable "c", moi dans le prog elle est defini en "char"
Marsh Posté le 11-01-2005 à 14:01:41
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
Marsh Posté le 11-01-2005 à 14:18:16
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
Marsh Posté le 11-01-2005 à 15:45:25
Romux a écrit : Le probleme s'est que cette methode je l'ai déja testé de cette facon:
|
Ce code est correct à condition que 'read' soit de type int.
La façon de coder habituelle est :
|
Marsh Posté le 11-01-2005 à 16:34:33
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
Marsh Posté le 11-01-2005 à 17:43:10
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...
Marsh Posté le 12-01-2005 à 03:29:08
merci bcp je vais me rencarder de ça. je vais poster du code demain.
Marsh Posté le 11-01-2005 à 02:05:16
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.