tigerstorm | Aider moi
Code :
- // implementation de la classe CRS232
- #include <stdio.h>
- #include "RS232.h"
- CRS232::CRS232()
- {
- }
- bool CRS232::Init(int Vitesse,int NbrBit,int NbrBitStop,int Parite)
- {
- DCB StrucDcb; //structure DCB de rs232
- if(hCom==INVALID_HANDLE_VALUE) // si erreur
- {
- printf("erreur lors de l'initialisation\n" );
- return false;
- }
- else
- {
- GetCommState(hCom,&StrucDcb);//lecture des param initiaux
- StrucDcb.BaudRate=Vitesse; // init de la vitesse
- StrucDcb.ByteSize=NbrBit; //8 bits de données
- StrucDcb.StopBits=NbrBitStop; // 1 bit de stop
- StrucDcb.Parity=Parite; // no parity
- SetCommState(hCom,&StrucDcb);// mettre a jour les news params
- return true;
- }
- }
- bool CRS232::OuverturePort(int Num)
- {
- char Nom[5]="COM1";
- Nom[3]= 48 + Num;
- hCom=CreateFile(Nom,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
- return true;
- }
- void CRS232::PurgeCommIn ()
- {
- PurgeComm(hCom,PURGE_RXCLEAR); // fermer entree
- }
- void CRS232::PurgeCommOut()
- {
- PurgeComm(hCom,PURGE_TXCLEAR);// fermer sortie
- }
- void CRS232::FermerPort()
- {
- CloseHandle(hCom);// fermeture du com
- }
- void CRS232::EcrireOctet(char* Donnee,int NbrOctet)
- {
- unsigned long dd; //Sert à verifier si la transmission a reussi ou pas
- WriteFile(hCom,Donnee,NbrOctet,&dd,NULL); // envoi de la trame
- }
- int CRS232::RecevoirOctet(char* Donnee,int *L)
- {
- unsigned long dd; //Sert à verifier si la transmission a reussi ou pas
- int Longueur;
- Longueur=Presence();
- if(Longueur!=0)
- {
- if ((Longueur<=*L))
- {
- ReadFile(hCom,Donnee,Longueur,&dd,NULL);
- *L=Longueur;
- return 0;
- }
- else
- return 1;
- }
- else
- return 2;
- }
- int CRS232::Presence()
- {
- unsigned long Event;
- COMSTAT Info;
- ClearCommError(hCom,&Event,&Info);
- if(Info.cbInQue)
- return Info.cbInQue;
- else
- return 0;
- }
|
|