Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Programmation du port série

1 réponse
Avatar
Rémy
Bonjour,

Je développe une appli en C s'appuyant sur un port de communication, en
l'occurrence un port "série" USB, avec les API Windows CreateFile, WriteFile
et ReadFile, en ayant pris soin de déclarer une structure Overlapped au
moment de l'ouverture...

J'ai besoin d'échanger en mode soutenu des trames de 1 à 2 octets avec un
équipement particulier, a 115200 bds. Mes fonctions tournent correctement,
sauf que je butte sur un problème agaçant, à savoir qu'entre deux appels à
WriteFile, ainsi que lecture entre les deux, j'ai une latence de 500 ms,
alors que ma fonction interroge en permanence.

Y'a t'il un mécanisme particulier dans les API Windows imposant cette
constante ?

Merci si vous avez une piste :o)

rémy

1 réponse

Avatar
Bertrand Lenoir-Welter
Bonjour

500 ms, ce n'est pas normal. Visiblement, ça tombe sous le coup d'un
timeout d'écriture, qui se règle avec SetCommTimeouts(). Ca envoie bien,
au moins ? Vérifie ton protocole (structure DCB) pour voir s'il n'y a
pas un contrôle de flux en trop.

En lecture, le mieux est d'utiliser d'abord ClearCommError() pour savoir
s'il y a du monde dans le buffer de réception. Ca évite de tomber dans
le timeout de ReadFile(). Pas très important en overlapped, mais c'est
quand même plus propre.