comm serie avec win32 - pb de time out - C - Programmation
MarshPosté le 14-03-2005 à 17:29:33
Bonjour !
c'est au sujet de la comm serie avec win32
En fait, je dois faire un programme qui lit un fichier ligne par ligne et envoie chaque ligne par lien serie a un microcontrolleur.
je fais de la comm synchrone (pas overlap). J'ai ajoute des time out, pour pas rester infiniement en attente. Si la lecture de l'aquitement ne se fait pas (apres time out) je reecrit la ligne (jusqu'a 10 ecritures, apres, error, mais ca on s'en fout).
Lorsque le time out est assez grand pour ne pas avoir a reecrire la ligne, mon prog marche.
Si quelqu'un a des explication... Peut etre que ces valeurs de time out sont trop faibles et que windows ne les prend pas en compte (pourtant le programme se comporte bien...). Peut etre que je ne devrait pas renvoyer de nouveau la meme ligne, juste attendre, sinon, la nouvelle ligne s'ajoute a une ligne a moitie lue, cote microcontrolleur ??? Peut etre que ...
Marsh Posté le 14-03-2005 à 17:29:33
Bonjour !
c'est au sujet de la comm serie avec win32
En fait, je dois faire un programme qui lit un fichier ligne par ligne et envoie chaque ligne par lien serie a un microcontrolleur.
je fais de la comm synchrone (pas overlap). J'ai ajoute des time out, pour pas rester infiniement en attente.
Si la lecture de l'aquitement ne se fait pas (apres time out) je reecrit la ligne (jusqu'a 10 ecritures, apres, error, mais ca on s'en fout).
Lorsque le time out est assez grand pour ne pas avoir a reecrire la ligne, mon prog marche.
tTimeout.ReadTotalTimeoutMultiplier = 5;
tTimeout.ReadTotalTimeoutConstant = 30;
Par contre, pour des valeurs faibles, necessitant la reexpedition de la ligne, ca ne marche plus
tTimeout.ReadTotalTimeoutMultiplier = 1;
tTimeout.ReadTotalTimeoutConstant = 1;
alors que le logiciel qui lit les communications sur le lien serie m'indique que c'est bien la meme ligne qui est transmise de nouveau
IRP_MJ_WRITE S315FC1015C000000DC400000DC800000DCC00000DD0AD
IRP_MJ_READ Serial0 TIMEOUT Length 0:
IRP_MJ_WRITE S315FC1015C000000DC400000DC800000DCC00000DD0AD
IRP_MJ_READ Serial0 SUCCESS Length 8: R10200FD
Si quelqu'un a des explication...
Peut etre que ces valeurs de time out sont trop faibles et que windows ne les prend pas en compte (pourtant le programme se comporte bien...).
Peut etre que je ne devrait pas renvoyer de nouveau la meme ligne, juste attendre, sinon, la nouvelle ligne s'ajoute a une ligne a moitie lue, cote microcontrolleur ???
Peut etre que ...
Merci beaucoup !
Olivier