Fonction lire ds un port série

Résolu
cs_imanewin32
Messages postés
71
Date d'inscription
mardi 30 mars 2004
Statut
Membre
Dernière intervention
12 août 2004
- 6 août 2004 à 09:42
cs_thierry la fronde
Messages postés
351
Date d'inscription
mercredi 21 juillet 2004
Statut
Membre
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!!!

2 réponses

cs_thierry la fronde
Messages postés
351
Date d'inscription
mercredi 21 juillet 2004
Statut
Membre
Dernière intervention
12 août 2009

6 août 2004 à 15:46
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.
}
}
3
cs_thierry la fronde
Messages postés
351
Date d'inscription
mercredi 21 juillet 2004
Statut
Membre
Dernière intervention
12 août 2009

6 août 2004 à 15:41
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; ???
0