PB de liaison serie sous Windows ouverture port ou DCB
ludolechinois
Messages postés12Date d'inscriptionmercredi 25 février 2004StatutMembreDernière intervention27 février 2008
-
18 juin 2004 à 11:50
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 2009
-
21 juin 2004 à 08:11
J'ai fais un petit prog avec une liaison serie au debut rien ne communique.Mais si je lance l hyperternimal avec 9600 bauds,pas de parite, un bit stop, pas de control de flux puis je ferme l hyperterminal et que je lance mon prog ca marche. Je pense que j'oublie un parametre utile dans le DCB voici un extrait de l'ouverture de port
Liaison_Serie::Liaison_Serie(char * com, DWORD vitesse, BYTE taille,
BYTE parite, BYTE stop, DWORD inque,DWORD outque)
{
/* Création du port */
hCom = CreateFile(com,GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
/* Initialisation de la structure DCB */
if(hCom != INVALID_HANDLE_VALUE)
{
// Paramètres de la donnée DCB
GetCommState(hCom,& maStructure);
maStructure.BaudRate = vitesse;
maStructure.ByteSize = taille;
maStructure.Parity = parite;
maStructure.StopBits = stop;
if (parite==0)
{
maStructure.fParity = FALSE;
}
else
{
maStructure.fParity = TRUE;
}
maStructure.fDtrControl=1;
maStructure.fTXContinueOnXoff=1;
maStructure.fRtsControl=1;
maStructure.fAbortOnError=1;
maStructure.fOutxCtsFlow = FALSE;
maStructure.fOutxDsrFlow = FALSE;
maStructure.fOutX = FALSE;
maStructure.fInX = FALSE;
maStructure.fDsrSensitivity = FALSE;
maStructure.fBinary = TRUE;
maStructure.fNull = false; // n'élimine pas les caractère 0 (NULL)
maStructure.DCBlength = sizeof(maStructure);
SetCommState(hCom,& maStructure);
//Option : Fonction de lecture non bloquante
GetCommTimeouts(hCom,& test);
test.ReadIntervalTimeout = MAXDWORD;
test.ReadTotalTimeoutConstant = 0;
SetCommTimeouts(hCom,& test);
// Initialise la taille du buffer d'entree et de sortie
SetupComm(hCom,inque,outque);
// vider le comm des perturbation
PurgeComm(hCom,PURGE_TXCLEAR & PURGE_RXCLEAR);
}
else
{
MessageBox (NULL, "Erreur Ouverture Port Com1","",MB_OK);
}
}
A voir également:
PB de liaison serie sous Windows ouverture port ou DCB
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 20095 21 juin 2004 à 08:11
Salut,
Si c'est bien dans le DCB, tu devrais trouver en comparant les DCB que tu obtiens quand ça ne marche pas et quand ne ça marche pas. Un point d'arrêt à l'appel de la fonction SetCommState et tu regardes.