Accueil > > > CLASSE DE CONTRÔLE DU PORT SÉRIE RS232 AVEC LES API WINDOWS.
CLASSE DE CONTRÔLE DU PORT SÉRIE RS232 AVEC LES API WINDOWS.
Information sur la source
Description
Les fichiers LSerie.cpp et LSerie.h contiennent une classe qui prend en charge la gestion du port série, c'est à dire: - Ouverture d'un port série (de Com1 à Com9) - Paramétrage de la communication (Vitesse, Time Out...) - Lecture de l'état des lignes CTS, DSR, Ring, CD - Ecriture de l'état des lignes RTS, DTR, TX Cette classe est compatible avec Visual C++ (et probablement avec les autres compilateurs C++ pour windows). Le programme SerialTest.exe (Projet Visual C++) est un exemple d'utilisation de cette librairie. Personnellement je m'en sert pour mettre au point des montages electronique connectés au port série.
Source
- class LSerie
- {
- public:
- //------ CONSTRUCTOR ------
- LSerie();
- virtual ~LSerie();
-
-
- //------ OPEN AND CONFIGURE ------
- bool open(int numPort, long speedInBaud); //Open the serial port COM "numPort" at the speed "speedInBaud".
- // bauds with and this adjustement : 8 bit / 1 stop bit / no parity).
- // Return: true if success.
-
- bool open(int numPort, long speedInBaud, //Open the serial port COM "numPort" at the speed "speedInBaud".
- int nbBit, int parity, float nbStopBit); // bauds with and this adjustement : "nbBit" bit / "nbStopBit" stop bit / parity (0=no parity, 1=odd, 2=even).
- // Return: true if success.
-
- void closeCom(); //Close the serial port.
- bool setTimeOut(DWORD ms); //Set the time-out for receive data. Return: true if success.
- bool setSpeed(DWORD baudrate); //Set the speed in bauds. Return: true if success.
-
-
- //------ SEND AND RECEIVE DATA ------
- int sendData(DWORD lg, LPBYTE data); //Send table "data" of "lg" bytes. Return: number of bytes really sent.
- int sendData(string* data); //Send string "data". Return: number of bytes really sent.
- int receiveData(DWORD lg, LPBYTE data); //Receive table "data" who is limit at "lg" bytes. Return: number of bytes received.
- int receiveData(string* data); //Receive string "data". Return: number of bytes received.
-
-
- //------ READ AND WRITE THE STATE OF THE CONTROL LINE ------
- bool setRts(bool val); // Set the state of RTS. Return: true if success.
- bool setDtr(bool val); // Set the state of DTR. Return: true if success.
- bool setTxd(bool val); // Set the state of TXD. Return: true if success.
- bool getCts(); // Return: The state of CTS.
- bool getDtr(); // Return: The state of DTR.
- bool getRi(); // Return: The state of RI.
- bool getCd(); // Return: The state of CD.
-
-
- string getErrorMsg(); // Return: The error message generated by the last function.
-
-
-
-
-
- private:
- HANDLE hcom; //Fichier de sortie sur le port COM | The file stream use for acces to the serial port.
- _COMMTIMEOUTS ct; //={0,0,0,0,0}; //Config du Time Out | This variable contain the delay of the time-out.
- DCB dcb; //Config du Port | This object is use in order to configure the serial port.
- int bufferSize;
- };
class LSerie
{
public:
//------ CONSTRUCTOR ------
LSerie();
virtual ~LSerie();
//------ OPEN AND CONFIGURE ------
bool open(int numPort, long speedInBaud); //Open the serial port COM "numPort" at the speed "speedInBaud".
// bauds with and this adjustement : 8 bit / 1 stop bit / no parity).
// Return: true if success.
bool open(int numPort, long speedInBaud, //Open the serial port COM "numPort" at the speed "speedInBaud".
int nbBit, int parity, float nbStopBit); // bauds with and this adjustement : "nbBit" bit / "nbStopBit" stop bit / parity (0=no parity, 1=odd, 2=even).
// Return: true if success.
void closeCom(); //Close the serial port.
bool setTimeOut(DWORD ms); //Set the time-out for receive data. Return: true if success.
bool setSpeed(DWORD baudrate); //Set the speed in bauds. Return: true if success.
//------ SEND AND RECEIVE DATA ------
int sendData(DWORD lg, LPBYTE data); //Send table "data" of "lg" bytes. Return: number of bytes really sent.
int sendData(string* data); //Send string "data". Return: number of bytes really sent.
int receiveData(DWORD lg, LPBYTE data); //Receive table "data" who is limit at "lg" bytes. Return: number of bytes received.
int receiveData(string* data); //Receive string "data". Return: number of bytes received.
//------ READ AND WRITE THE STATE OF THE CONTROL LINE ------
bool setRts(bool val); // Set the state of RTS. Return: true if success.
bool setDtr(bool val); // Set the state of DTR. Return: true if success.
bool setTxd(bool val); // Set the state of TXD. Return: true if success.
bool getCts(); // Return: The state of CTS.
bool getDtr(); // Return: The state of DTR.
bool getRi(); // Return: The state of RI.
bool getCd(); // Return: The state of CD.
string getErrorMsg(); // Return: The error message generated by the last function.
private:
HANDLE hcom; //Fichier de sortie sur le port COM | The file stream use for acces to the serial port.
_COMMTIMEOUTS ct; //={0,0,0,0,0}; //Config du Time Out | This variable contain the delay of the time-out.
DCB dcb; //Config du Port | This object is use in order to configure the serial port.
int bufferSize;
};
Conclusion
Librairie Réalisée sous Visual C++ 7. Pour avoir les mises à jours futur et des explications: http://mixandtec.free.fr/articles/artnorm1_1.php. Exemple d'utilisation: com = new LSerie(); // Tentative d'ouverture du port COM2 à une vitesse de 9600 bauds (8bit, 1bit de stop et pas de parité). if( !com->open(2, 9600) ) { MessageBox("Port Com indisponible", "SerialTest : Erreur!"); return; } // Envois d'une chaine de caractères: std::string stdString("Message à transmettre"); if( com->sendData(&stdString) < 0 ) { MessageBox("Envois de données imposssible", "SerialTest : Erreur!"); return; }
Historique
- 22 mai 2005 13:37:17 :
- La version 2 de cette librairie permet de définir plus de paramétres concernant la configuration du port série.
De nouvelles fonctions permettant de travailler directement avec des objets std:string ont été ajoutés.
- 22 mai 2005 13:39:49 :
- La version 2 de cette librairie permet de définir plus de paramétres concernant la configuration du port série.
De nouvelles fonctions permettant de travailler directement avec des objets std:string ont été ajoutés.
- 29 novembre 2005 13:06:17 :
- Ajout des mots clefs de recherche.
- 30 mai 2006 19:23:52 :
- Correction de l'erreur concernant l'affectation de la parité avec la fonction :
open(int numPort, long speedInBaud, int nbBit, int parity, float nbStopBit)
- 05 juin 2006 19:02:39 :
- Correction oubli initialisation vitesse de communication dans le constructeur.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Besoin d'un coup de main dans la rélisation d'une application Win32 en langage C [ par sim_richard286 ]
Je suis actuellement étudiant en GEII 2ième année et je souhaiterais avoir une petite aide pour la réalisation d'une
RS232 en USB [ par sirdeneb ]
Bonjour à tous, J'ai un programme en cpp qui communique avec une carte d'acquisition sur le port série. Or étant obligé de change
Conception d'un multiplexeur RS232 [ par CleFac ]
Bonjour,J'ai une connexion RS232 en E/S. Les données entrantes sur ma connexion RS232 sont écrites sur une/des socket(s).Maintenant les données entran
com. série rs232 config port [ par LaTatadu91 ]
Bonjour,Voila je cherche a developer une communication sur un port com (rs232)et je cherche des infos ou de l'aide sur la configuration du port.D'apre
port série RS232 [ par woudi2008 ]
Bonjour,Je suis entrein de réaliser une communication série RS232 entre un pc et un PIC18F4220. j'utilise borland c++ builder du coté du PC et Mplab d
Simuler port série RS232 [ par alilou2955 ]
Bonjour. Je voudrais faire des modif/ajouts sur une application C/C++ existante. Celle-ci utilise le port série RS232 (COM1 par exemple) pour recevoir
selection automatique d'un port série [ par flozzzzz ]
bonjour, je suis stagiaire dans un bureau d'étude et je dois faire des modifications / améliorations d'un programme déjà existant. Je n'ai pas vraime
port rs232 [ par nanouchou ]
Bonjour, j'aimerai envoyer une suite de données sous hexadécimal à travers le port RS232 de mon PC. J'ai du mal à faire un programme qui fonctionne co
tiroir rs232 via port usb [ par Mokhnache ]
Bonjour à tous,Est ce que il y'a qulqu'un qui sait comment peut on ouvrir un tiroir caisse rs232 connecter à un ordinateur via un adaptateur USBsachan
port serie (RS232) [ par njinya ]
Salut à tout le monde je m'intéresse à l'informatique industriel et j'aimerais manipuler les ports serie(ou parallèles) pour allumer une led par exemp
|
Derniers Blogs
CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril
Forum
ARBRE BINAIREARBRE BINAIRE par pacotheking
Cliquez pour lire la suite par pacotheking
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|