Liaison série

La programmation des liaisons série s'opère de façon similaire à celle des fichiers.

Vous ouvrez la liaison par CreateFile, puis vous pouvez lire ou écrire sur la ligne par ReadFile ou WriteFile.

(ex NumCom = CreateFile("COM1", GENERIC_READ+GENERIC_WRITE, 0, // non partagé
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

La fonction WaitComEvent permet une action plus fine en étant déclenchée à chaque caractère.

Attention toutefois à sélectionner dans votre application les paramètres voulus car ceux sélectionnés dans le panneau de contrôle ne sont pas actifs. D'après la doc, NT mémorise automatiquement les derniers paramètres sélectionnés par une application pour assurer la compatibilité MSDOS.

Il vaut mieux lire les paramètres en cours par GetCommState( NumCom,&dcb), positionner les paramètres souhaités (ex dcb.BaudRate = CB56000.dcb.fParity = 0;dcb.ByteSize = 8;dcb.Parity = NOPARITY), et les positionner par SetCommState( NumCom,&dcb)

Attention toutefois au compte-rendu, mon P.C. refusant les vitesses au dessus de 115200 bauds.

A cette vitesse j'arrive à transmettre et recevoir par rebouclage des trames de 10 octets à la cadence de 1 ms.

wpe3.gif (5637 octets)

Cela nécessite de décocher la case FIFO validé du bouton avancé des paramètres du port du panneau de configuration. Cette case dont la documentation indique qu'elle autorise l'usage du tampon matériel. Sinon à cette cadence, seules les trames de 1 octet passent. Je suppose que cette case permet de ne déclencher des interruptions que lorsque le tampon est plein, ce qui doit être moins gourmand en occupation CPU mais retarde les acquisitions.

Bauds Lng trame Bouclage ms (moyenne)
    Fifo validée Invalidée
110 1 460 99,6
300 1 169 36,520
600 1 84 18,260
1200 1 42,3 9,130
2400 1 21,4 4,566
4800 1 10,8 2,293
9600 1 5,4 1,246
9600 2 6,46 2,280
19200 1 2,78 1,002
19200 2 3,3 1,2
19200 3 3,8 1,720
56000 1 1,010 1,010
56000 1 1,010 1,010
56000 2 1,18 1,010
56000 1-5   1,010
56000 6   1,172
115200 1-5 1,002 1,002
115200 1-10   1,002
115200 6 1,045 1,002
115200 7 1,135 1,002
115200 8 1,002 1,002
115200 9 1,307 1,002
115200 10 1,405 1,002
115200 11   1,086
115200 12   1,172
 

Accueil ] Remonter ]