Vitesse port serie sous XP
Le
Christophe
Bonjour,
J'ai développé un programme en C++ qui gère un algorithme d'un système par
le biais d'un port série RS232.
Simplement ce programme envoi sur le port série 1 caractère correspondant à
une action particulière. Le système réagit en effectuant l'opération désirée
(entre de 4 à 10 ms max) et renvoi lui aussi un caractère sur le port série.
En fonction de ce qu'il reçoit le programme choisit une nouvelle action en
envoyant de nouveau un caractère et ainsi de suite. Le temps de réaction du
système n'excède jamais 10 ms. Entre l'envoi et la réception d'un caractère
le programme ne fait rien.
Un fonctionnement classique du système est l'envoi puis la réception de 2000
caractères successifs.
Mon problème est le suivant :
Ce programme utilisé sur un Pentium II 200MHz sous Windows 98 met 12s.
Le même programme utilisé sur un Pentium III 733MHz sous Windows 98 met 8s
Ce même programme utilisé sur un Pentium IV 3GHz sous Windows XP met 25s.
En vérifiant, le temps entre la demande de l'envoi et l'envoi réelle est
beaucoup plus long sous Windows XP. Le temps d’exécution du système n’a pas
changé.
Je ne comprends pas la lenteur sous Windows XP.
Le port série est-il moins prioritaire?
J'ai testé un communication synchrone (possible dans mon cas) ou asynchrone,
jobyiens les même résultats.
J'ai essayé un converter USB/RS232, même rapidité.
Y a t il un moyen d'augmenter la priorité du port série ou d’obliger XP à
écrire sur le port série plus rapidement ?
Merci pour votre Réponse
Cordialement.
J'ai développé un programme en C++ qui gère un algorithme d'un système par
le biais d'un port série RS232.
Simplement ce programme envoi sur le port série 1 caractère correspondant à
une action particulière. Le système réagit en effectuant l'opération désirée
(entre de 4 à 10 ms max) et renvoi lui aussi un caractère sur le port série.
En fonction de ce qu'il reçoit le programme choisit une nouvelle action en
envoyant de nouveau un caractère et ainsi de suite. Le temps de réaction du
système n'excède jamais 10 ms. Entre l'envoi et la réception d'un caractère
le programme ne fait rien.
Un fonctionnement classique du système est l'envoi puis la réception de 2000
caractères successifs.
Mon problème est le suivant :
Ce programme utilisé sur un Pentium II 200MHz sous Windows 98 met 12s.
Le même programme utilisé sur un Pentium III 733MHz sous Windows 98 met 8s
Ce même programme utilisé sur un Pentium IV 3GHz sous Windows XP met 25s.
En vérifiant, le temps entre la demande de l'envoi et l'envoi réelle est
beaucoup plus long sous Windows XP. Le temps d’exécution du système n’a pas
changé.
Je ne comprends pas la lenteur sous Windows XP.
Le port série est-il moins prioritaire?
J'ai testé un communication synchrone (possible dans mon cas) ou asynchrone,
jobyiens les même résultats.
J'ai essayé un converter USB/RS232, même rapidité.
Y a t il un moyen d'augmenter la priorité du port série ou d’obliger XP à
écrire sur le port série plus rapidement ?
Merci pour votre Réponse
Cordialement.

Poser une question


Sous XP
Gestionnaire de périphérique choisir LPT-COM choisir un COM et allé dans
propriété du port changé le 9600 pour 115200 et OK
TRÈS INPORTANT si il y a 2 ports faire la même manip pour les deux sinon XP
va devenir instable.
Votre problème de vitesse est réglé.
reparametrage complet du port com au travers d'une structure DCB.
Chacun des essais à donc été réalisé avec le même baudrate soit 57600.
Pour acceder au port un createfile("com1",...) est effectué puis on ecrit
avec un writefile. la différence vient entre le moment ou le programme ecrit
sur le port com et son apparition effective sur le la ligne TX, ce temps est
beaucoup plus long sous XP.