Une solution et pas nécessairement la meilleure
Voici la facon que je procède : 1- je recois une string en paramètre et celle-ci est assemblé avec les informations suivantes =
Bps, (vitesse de transmission)
BitsDonnees, (nombre de bit a envoyé)
Parite, (E = paire, N = aucune parité et O = impaire)
BitArret (1 = ONESTOPBIT, 1.5=ONE5STOPBITS et 2 =TWOSTOPBITS)
2- je converti en int les données recues et fractionnées
3- avec le CreateFile, j'essaie d'ouvrir le COM. La variable : m_NomDuPort est un char* contenant le COM1 ou 2
Jespère que ca pourra aider certaine personne :D
/////////////////////////////////////////////////////////////////////////////////////////
// Initialisation : Ouvre le port et règle les paramètres de la communication. Retourne 0 en
// cas de résussite et une valeur non nulle (le numéro de l'erreur)
// en cas d'échec.
// ****** des fois il y a des problèmes avec le bit d'arret 1.5 tout dépend des ordinateurs ******
//
// Intrant : sInitialisation --- la chaine a initialiser
// Extrant : Reussit --- si ca réussit ou non
/////////////////////////////////////////////////////////////////////////////////////////
int CPortSerie::Initialisation( char* sInitialisation )
{
char delimiteurs[] = ","; // caractère délimiteur dans la chaine
char* Bps; // vitesse de transmissions des données
char* BitsDonnees; // nombre de bits a envoyé a la fois
char* Parite; // parité, non parité, aucun
char* BitArret; // 1, 1.5 ou 2
int iBps; // pour la transformation de string en int
int iBitsDonnees; // pour la transformation de string en int
int iParite; // pour la transformation de string en int
int iBitArret; // pour la transformation de string en int
char cParite;
int Reussit = 0; // retourne 0 si les paramètres sont correct
// séparer les éléments de la string, afin de de pourvoir initialiser le port
Bps = strtok( sInitialisation, delimiteurs ); // bps
BitsDonnees = strtok( 0, delimiteurs ); // bitsDonnees
Parite = strtok( 0, delimiteurs ); // parite
BitArret = strtok( 0, delimiteurs ); // bitArret
// transformer en int
iBps = DecoderInt( Bps ); // decoder la vitesse de transmission
iBitsDonnees = DecoderInt( BitsDonnees ); // décoder le nombre de bit a envoyé
iBitArret = DecoderBitArret( BitArret ); // decoder bit d'arret
// mettre en majuscule
cParite = MettreEnMajuscule(Parite);
// transformer en int
iParite = DecoderParite( cParite );
PortSerie = CreateFile( m_NomDuPort, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0 );
if( PortSerie == INVALID_HANDLE_VALUE )
{
TraiterErreur( "Configuration de port. Dans CreateFile", GetLastError() );
throw CErreur( "Le port est mal initialise" );
Reussit=1;
}
//
// réglage des paramètres de communication
//
// obtention des paramètres courants
if( !GetCommState( PortSerie, &dcb ) )
{
TraiterErreur( "L'obtention de parametre. Dans GetCommState", GetLastError() );
throw CErreur( "L'ouverture de parametre." );
Reussit = 1;
}
// modification des principaux paramètres
dcb.BaudRate = iBps;
dcb.ByteSize = iBitsDonnees;
dcb.Parity = iParite ;
dcb.StopBits = iBitArret ;
// application des nouveaux paramètres
if( !SetCommState( PortSerie, &dcb ) )
{
TraiterErreur( "Initilialisation des parametres, dans SetCommState ", GetLastError() );
Reussit = 1;
throw CErreur( "La configuration de nouveau parametre." ); // il y a des problèmes ici des fois avec 1.5
}
return Reussit;
}