Professional Documents
Culture Documents
Dure : 15 minutes
Cet article a pour but de montrer comment accder au port srie du PC avec C++ Builder
I - Avant-propos........................................................................................................................................................... 3 II - Gnralit sur le port srie....................................................................................................................................3 II-A - Le brochage vue de face..............................................................................................................................3 III - Format des donnes............................................................................................................................................. 4 IV - Le composant TcomPort.......................................................................................................................................4 IV-A - Ouverture du port........................................................................................................................................ 4 IV-B - Fermeture du port........................................................................................................................................4 IV-C - Changement de niveau sur les sorties RTS et DTR.................................................................................. 5 IV-D - tat d'une broche d'entre, CTS, DSR, RLSD........................................................................................... 5 IV-E - crire une chane de caractres sur TxD................................................................................................... 5 IV-F - crire une valeur sur TxD........................................................................................................................... 6 IV-G - Lecture d'une chane de caractres sur RxD............................................................................................. 6 IV-H - Lecture d'une valeur sur RxD..................................................................................................................... 6 IV-I - Vrifier les erreurs sur le port srie..............................................................................................................6 IV-J - Nombre d'octets prsents dans le buffer d'entre....................................................................................... 7 IV-K - Vider les buffers d'entre et de sortie......................................................................................................... 7 IV-L - Attendre un vnement pour excuter une action...................................................................................... 7 IV-M - Changer les paramtres du port.................................................................................................................8 IV-N - Stocker les paramtres du port dans un fichier .ini.................................................................................... 8 IV-O - Lire les paramtres du port depuis un fichier .ini........................................................................................8 IV-P - Gestion des exceptions............................................................................................................................... 9 V - Conclusion............................................................................................................................................................. 9 VI - Liens......................................................................................................................................................................9
-2Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2013 Vincent PETIT. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://petit.developpez.com/serie/cours_tcomport/
I - Avant-propos
Dans les applications industrielles et domotiques, nous avons souvent besoin d'allier un systme lectronique une application logicielle via un port d'entre/sortie de l'ordinateur. Ce peut tre le port parallle, le port srie ou mme l'USB. Par exemple un modem externe, sur le port srie ou une imprimante avec le port parallle. Ceci dans un but d'allgement des montages lectroniques et de commodit pour tout ce qui est calcul. Bien que ce ne soit pas toujours possible, par exemple pour des systmes embarqus, ou l l'emploi d'un micro contrleur est invitable. Ce tutoriel pour but de voir, quelques mthodes de ce composant, pour l'criture, la lecture, les mises 1 des niveaux sur certaine broche, voir l'tat des entres etc... sur le port srie.
Affectation : Nom C++ Builder RLSD Rx Tx DTR -DSR RTS CTS RING Broche Broche n1 Broche n2 Broche n3 Broche n4 Broche n5 Broche n6 Broche n7 Broche n8 Broche n9 Sens
Description des signaux: Broche 1 : DCD ou RLSD (Data Carrier Detect) ou (Receive Line Signal Detect) cette ligne est une entre active l'tat haut. Elle signale l'ordinateur qu'une liaison a t tablie avec un correspondant ; Broche 2 : RxD (Receive Data) cette ligne est une entre. C'est ici que transitent les informations du correspondant vers l'ordinateur ; Broche 3 : TxD (Transmit Data) cette ligne est une sortie. Les donnes de l'ordinateur vers le correspondant sont vhicules par son intermdiaire ; Broche 4 : DTR (Data Terminal Ready) cette ligne est une sortie active l'tat haut. Elle permet l'ordinateur de signaler au correspondant que le port srie a t libr et qu'il peut tre utilis s'il le souhaite ; Broche 5 : GND (Ground) c'est la masse ; Broche 6 : DSR (Data Set Ready) cette ligne est une entre active l'tat haut. Elle permet au correspondant de signaler qu'une donne est prte ; Broche 7 : RTS (Request To Send) cette ligne est une sortie, qui quand elle est active est l'tat haut. Elle indique au correspondant que l'ordinateur veut lui transmettre des donnes ; Broche 8 : CTS (Clear To Send) cette ligne est une entre active l'tat haut. Elle indique l'ordinateur que le correspondant est prt recevoir des donnes ; Broche 9 : RI ou RING (Ring Indicator) cette ligne est une entre active l'tat haut. Elle permet l'ordinateur de savoir qu'un correspondant veut initier une communication avec lui.
D'un point de vue lectronique, les signaux TX et RX en sortie des prises rpondent aux normes RS232, c'est dire: 1 logique compris entre -3 et -25V et 0 logique compris entre +3 et +25V.
-3Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2013 Vincent PETIT. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://petit.developpez.com/serie/cours_tcomport/
Bien sur, nous pouvons utiliser les broches comme bon nous semble, c'est dire par exemple, se servir de CTS autrement que pour signaler l'ordinateur que le priphrique est prt recevoir, mais il vaut quand mme mieux respecter la norme.
-4Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2013 Vincent PETIT. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://petit.developpez.com/serie/cours_tcomport/
void __fastcall TForm1::Button2Click(TObject *Sender) { ComPort1->Connected=false; //Fermeture du port (arrt des communications) } //-------------------------------------------------------
Le port srie est ferm, toutes tentatives de lecture, d'criture ou autre, dclenchera une erreur.
Ou par DTR comme cela. c //------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender) { ComPort1->SetDTR(true); //Mise +15V de DTR ComPort1->SetDTR(false); //Mise -15V de DTR } //------------------------------------------------------0 1
Si le Caption du TButton indique "tats haut sur CTS", c'est que le niveau sur celle ci est +15V. Nous pouvons procder de mme pour les autres vnements, DSR et RLSD (DCD).
-5Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2013 Vincent PETIT. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://petit.developpez.com/serie/cours_tcomport/
} //-------------------------------------------------------
AnsiString Phrase; Phrase = Edit1->Text; ComPort1->WriteStr(Phrase); //crit toute la chane "Phrase" sur le port srie
La phrase reut est stocke dans le buffer d'entre du port, qui cela dit en passant est paramtrable en taille dans l'inspecteur d'objets, proprit Buffer / Input et OutputSize. Dans cette exemple, nous remarquons bien que la lecture se fait caractre par caractre, ReadStr vient effacer le caractre dans le buffer, puis il passe au suivant et refait de mme. Une lecture peut se faire, aussi, en dehors de l'vnement OnRxChar.
-6Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2013 Vincent PETIT. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://petit.developpez.com/serie/cours_tcomport/
//------------------------------------------------------void __fastcall TForm1::ComPort1Error(TObject *Sender, TComErrors Errors) { if (Errors.Contains(ceFrame)) { // Une erreur de frame a eu lieu, mauvaise vitesse de communication !? } if (Errors.Contains(ceOverrun)) { // Une erreur d'overrun a eu lieu, la donne suivante est errone !? } // voir l'aide de TComPort sur "LastErrors" pour continuer la gestion des erreurs } //-------------------------------------------------------
http://petit.developpez.com/serie/cours_tcomport/
} //-------------------------------------------------------
L'utilisation de WaitForEvent se fait de la manire suivante : on efface tous les vnements de la proprit Events de TComPort. Ce qui implique qu'aucun thread n'est cr ; on ouvre le port srie ; on dclare les vnements dclencheurs de l'application ; on appel la mthode WaitForEvent avec comme paramtre, les vnements dclencheurs, 0 puis le timeout en ms. Il est possible de remplacer le timeout par "WaitInfinite" ; on test le(s) vnement(s) qui ont dclench(s).
La seconde est de placer par exemple un TComRadioGroup et d'affecter ses proprits : "AutoApply" true ; "ComPort" sur le port voulu, ComPort1, ComPort2 etc... ; "ComProperty" sur le paramtre regler, cpPort pour le port, cpBaudRate pour la vitesse etc...
http://petit.developpez.com/serie/cours_tcomport/
ComPort1->Connected = true; } catch (EComPort &e) { switch (e.Code) { case CError_OpenFailed : msg = "Votre port srie est dj ouvert" ; break ; case CError_WriteFailed : msg = "Erreur d'criture sur le port srie" ; break ; // voir l'aide de TComPort sur "Error codes" pour continuer la gestion des erreurs } } ShowMessage(msg);
} //---------------------------------------------------------------------------
V - Conclusion
Attention le composant TComPort se rvle tre inactif sans l'emploi des TComLed, il vous suffit de placer 3 TComLed et d'attribuer leurs proprits : "ComPort" sur le port voulu, ComPort1 ou ComPort2 etc... ; "LedSignal" une sur IsConn pour l'ouverture du port, l'autre sur IsRx pour la ligne RxD et enfin une sur IsTx pour TxD.
Malheureusement le port srie tend disparatre sur les ordinateurs actuels pour laisser place aux ports USB. Referez vous aux liens ci dessous pour savoir o et comment installer le composant TcomPort.
VI - Liens
Nos articles C++ Builder : Piloter le port srie avec C++ Builder : le composant TComPort, description, le composant TComPort, installation ; Piloter le port parallle avec C++ Builder : le composant TDLPortIO, description, le composant TDLPortIO, installation.
-9Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2013 Vincent PETIT. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://petit.developpez.com/serie/cours_tcomport/
- 10 Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2013 Vincent PETIT. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://petit.developpez.com/serie/cours_tcomport/