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

cs_imanewin32 71 Messages postés mardi 30 mars 2004Date d'inscription 12 août 2004 Dernière intervention - 6 août 2004 à 09:42 - Dernière réponse : cs_thierry la fronde 351 Messages postés mercredi 21 juillet 2004Date d'inscription 12 août 2009 Dernière intervention
- 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
cs_thierry la fronde 351 Messages postés mercredi 21 juillet 2004Date d'inscription 12 août 2009 Dernière intervention - 6 août 2004 à 15:46
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.
}
}

Merci cs_thierry la fronde 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de cs_thierry la fronde
cs_thierry la fronde 351 Messages postés mercredi 21 juillet 2004Date d'inscription 12 août 2009 Dernière intervention - 6 août 2004 à 15:41
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.