Fonction lire ds un port série [Résolu]

Messages postés
71
Date d'inscription
mardi 30 mars 2004
Dernière intervention
12 août 2004
- - Dernière réponse : cs_thierry la fronde
Messages postés
351
Date d'inscription
mercredi 21 juillet 2004
Dernière intervention
12 août 2009
- 6 août 2004 à 15:46
pour réaliser la lecture ds un prog qui gére la communication atravers un port série,j'ai réalisé le code

DWORD comserie::lectport(char* e,int t)
{
SetCommMask (Com,EV_RXCHAR );
// WaitCommEvent (Com,&dwCommStatus,0);
ReadFile (Com,e,t-1,&dwBytesTransferred,0);
clearbuf();
return dwBytesTransferred;
}

mais,le prob c'est que mon prog se plante qd il y'a rien à lire que dois je ajouter???????????

aidez moi svp!!!
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
351
Date d'inscription
mercredi 21 juillet 2004
Dernière intervention
12 août 2009
3
Merci
ou ça plutôt :

HANDLE hCom;
OVERLAPPED o;
BOOL fSuccess;
DWORD dwEvtMask;

hCom = CreateFile( "COM1",
GENERIC_READ | GENERIC_WRITE,
0, // exclusive access
NULL, // no security attributes
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL
);

if (hCom == INVALID_HANDLE_VALUE)
{
// Handle the error.
}

// Set the event mask.

fSuccess = SetCommMask(hCom, EV_CTS | EV_DSR);

if (!fSuccess)
{
// Handle the error.
}

// Create an event object for use in WaitCommEvent.

o.hEvent = CreateEvent(
NULL, // no security attributes
FALSE, // auto reset event
FALSE, // not signaled
NULL // no name
);

assert(o.hEvent);

if (WaitCommEvent(hCom, &dwEvtMask, &o))
{
if (dwEvtMask & EV_DSR)
{
// To do.
}

if (dwEvtMask & EV_CTS)
{
// To do.
}
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_thierry la fronde
Messages postés
351
Date d'inscription
mercredi 21 juillet 2004
Dernière intervention
12 août 2009
0
Merci
Peut-être en utilisant d'autres flag. voir MSDN

BOOL Succes = SetCommMask (Com,EV_RXCHAR | EV_RLSD)

If (Succes)
{

//Quelquechose sur la ligne
}
else
return 0; ???
Commenter la réponse de cs_thierry la fronde

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.