C: Readfile() - C - Programmation
Marsh Posté le 15-05-2005 à 16:36:07
Zelltemplar a écrit : Je dois ecrire en C un programme qui communique avec le port série. Dans la fonction readfile, |
Si tu veux dire 'ReadFile()', j'enclenche le mode Windows.
Citation : il y a un champs ou il faut mettre le nombre de caractères que l'on veut recevoir. |
Non. C'est un champ où l'on indique le nombre max de caractères lus en une fois. Ca dépend essentiellement de ton tableau de char. Mettons qu'il fasse 128 char, tu passes 128 si les données sont de type binaire, ou 128-1 si c'est du texte, de façon à le transformer en chaine en utilisant le nombre réel de caractères reçus pour placer un 0 dans le tableau.
Citation : |
Il faut jouer sur la configuration du flux (paramètres de CreateFile). J'utilise ça:
|
et voici ma lecture non blocante:
|
Détails sur http://msdn.microsoft.com
Marsh Posté le 15-05-2005 à 23:28:52
ok merci, mais ca me semble bien compliqué, c'est pourtant quelque chose de courant de ne pas connaitre la taille des données à recevoir! Il n'y a pas un autre moyen???
Marsh Posté le 15-05-2005 à 23:50:07
Il faut configurer le timeout comme tu le veux via SetCommTimeouts. Au delà du timeout spécifié la lecture s'arrêtera et ReadFile renverra 0. Se fier à lpNumberOfBytesRead pour savoir combien d'octets ont été lus.
http://msdn.microsoft.com/library/ [...] serial.asp
Marsh Posté le 15-05-2005 à 16:13:45
Bonjour,
Je dois ecrire en C un programme qui communique avec le port série. Dans la fonction readfile, il y a un champs ou il faut mettre le nombre de caractères que l'on veut recevoir. Le probleme c'est que je ne connais pas à l'avance le nombre de caractères que je vais recevoir, alors je met un nombre volontairement élevé, par exemple 100, mais si la personne d'en face m'envoie que 18 caracteres, alors la fonction readfile reste en attente d'un autre caractere. Comment faire pour qu'elle s'arrete? Merci d'avance et dites moi si je n'ai pas été assez clair ^^