LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 2013
-
1 juin 2007 à 11:50
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 2013
-
4 juin 2007 à 11:32
Bonjour,
Voila je cherche a developer une communication sur un port com (rs232)
et je cherche des infos ou de l'aide sur la configuration du port.
D'apres le maigre document dont je dispose je sais que:
"chaque échange se compose de 11 moments:
1 start
8 moments d'infos
1 parité paire
1 stop"
alors voila ma question est comment traduire cela au niveau du DCB ?
voici mon code actuel mais je ne pense pas que cela corresponde avec ce que je dosi faire:
dcb.BaudRate = CBR_9600;
dcb.fParity = FALSE;
dcb.ByteSize = 8;
dcb.StopBits = ONESTOPBIT;
surtout pr la parité paire!
bon si quelqu'un s'y connait ca serait sympa,j'aurais aussi peut etre quelques questions sur les comm séries en général si possible...
merci d'avance!
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 1 juin 2007 à 13:26
re, tu pourrais m'aider a comprendre l'overlapped?
notament ceci:
// tant que le thread est actif
while(pManager->m_bReadThreadRunning)
{
// attente de la réception d'un caractère
DWORD dwEvtMask = 0;
OVERLAPPED ov = {0};
ov.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
if(!pManager->m_pComm->WaitEvent(&dwEvtMask, &ov))
{
// si toujours en attente
if(GetLastError() == ERROR_IO_PENDING)
{
// on attent que l'opération se termine ou qu'elle soit interrompue
// (lors de l'appel à SetEvtMak(0) à la deconnexion par exemple)
DWORD dwResult;
while(!GetOverlappedResult(pManager->m_pComm->GetHandle(), &ov,
&dwResult, TRUE))
{
if(GetLastError() != ERROR_IO_INCOMPLETE)
break;
}
}
}
// lecture si des caractères ont été reçus
if(dwEvtMask & EV_RXCHAR)
{
// lecture des données
DWORD dwLength;
BYTE buffer[RX_SIZE+1];
do
{
// lecture d'un bloc
dwLength = pManager->ReadBlock(buffer, RX_SIZE);
// envoi des données à la fenêtre
if(dwLength > 0)
{
// ajout NUL de terminaison
buffer[dwLength] = '\0';
}
}while(dwLength > 0 && pManager->m_bReadThreadRunning);
}
CloseHandle(ov.hEvent);
que j'ai trouver sur ce site!
la question que je me pose est est ce bloquant?
ou si on ne lit rien peut on effectuer d'autre trucs dans ce thread?
merci de me repondre si t'as un peu de temps!