besoin d'explication sur GetOverlappedResult [.net c++] - C#/.NET managed - Programmation
Marsh Posté le 16-05-2006 à 19:58:25
http://msdn.microsoft.com/library/ [...] result.asp
Marsh Posté le 16-05-2006 à 20:04:40
c'est bien gentil mais... j'ai déjà été voir sur msdn mais je n'arrive pas à bien comprendre.
Marsh Posté le 19-05-2006 à 19:22:44
est ce que quelqu'un pourrait sur la question que j'ai posé, car j'en ai besoin
merci d'avance
Marsh Posté le 19-05-2006 à 20:07:15
Salut,
Cela permet de retrouver le resultat d'une operation asynchrone.
Marsh Posté le 19-05-2006 à 20:13:35
merci de bien vouloir m'aider
est ce que je suis obligé de mettre getoverllapedresult dans mon code et que serait les conséquence sans cette fonction
est ce qu'il faut traiter les erreurs quand on utilise waitCommEvent
merci bcp
Marsh Posté le 19-05-2006 à 23:22:35
il faut toujours traiter les erreurs...
Pour savoir quels sont les conséquences il faut savoir ce que fait le programme et c'est pas avec le peu que tu donnes que l'on peut le deviner.
ex: une fonction qui fait une addition (asynchrone)(bon faut imaginer un grosse addition), getoverlappedresult permettra d'en connaitre le resultat.
Marsh Posté le 20-05-2006 à 00:11:03
merci de m'aider,
au faite j'ai réalisé un programme sur la communication série
le programme que j'ai mis se trouve dans un thread je m'explique:
Code :
|
voila mon code , ce que je ne comprends c'est pourquoi gérer les erreurs?
pourquoi utiliser GetOverlapped dans une boucle??
si j' enlève la gestion des erreur , la conséquence est que la charge du CPU se met à 100%
j'èspere que je suis clair des les explications, pour que vous puissez m'aider.
merci bcp
Marsh Posté le 20-05-2006 à 12:00:56
Salut,
Citation : |
En fait d'apres la doc, puisque l'on utilise 'ov', cela veut dire que 'hCom' a été ouvert en mode overlapped (asynchrone).
Donc contrairement au commentaire, le waitcommEvent n'attends pas
Si l'evenement a pas eu lieu, getlasterror renvoie ERROR_IO_PENDING
donc on entre dans getoverlappedresult qui lui fera l'attente (car son parametre bWait vaut true).
Dans ce mode d'attente, le processeur 'ne tourne pas' et ne consomme rien, jusqu'a ce que l'evenement 'ov.hEvent' a lieu. ce qui permet de sortir du while (!getoverlappedresult...).
Si tu supprime le test de getoverlappedresult, le programme va boucler sur waitcommeevent jusqu'a ce que cela devienne bon, et chaque tour de boucle 'fait tourner' le processeur.
Marsh Posté le 20-05-2006 à 12:43:27
ok merci
quand vous dites que WaitcommEvent n'attend pas , ca veut dire que di l'evenement n'est pas là le programme va tourner sur getOverlalpped jusu'au moment où l'evenement se produit, si cela si produit l
Marsh Posté le 20-05-2006 à 12:52:45
ok merci
quand vous dites que WaitcommEvent n'attend pas , ca veut dire que si l'evenement n'est pas là le programme va tourner sur getOverlalppedResult jusqu''au moment où l'evenement se produit, mais est ce que dans cette boucle le programme ne passe jamais sur getLastError?? et pourquoi avoir cela ici?
si l'évenement se produit, est que la fonction WaitCommEvent sera vraie et la suite du programme pourra avoir lieu?
merci bcp de votre aide
Marsh Posté le 20-05-2006 à 13:58:30
Bon j'essaie de commenter le code:
Code :
|
Mais bon faut regarder la doc MSDN, peut pas t'en dire plus moi, ou sinon voit avec celui qui a ecrit le code.
Marsh Posté le 20-05-2006 à 14:09:41
pour l'écriture j'ai fais ce code:
WriteFile(hComm,(LPCVOID)buf,dwtoWrite,&dwWritten,ov);
while(!GetOverlappedResult(hComm,ov,&dwResult,true)){
}
est ce que pour ce code, les réponses que vous m'avez données sont valable
le faite que je suis en mode overlapped , ça me permet d'écrire ou de lire en mode asynchrone c'est à dire que je n'ai pas besoin de dire de combien d'octet je dois lire ou écrire, contrairement au mode synchrone
merci
Marsh Posté le 16-05-2006 à 19:39:56
bonsoir,
je prog sur visual studio .net c++
est que vous pouvez m'aider pour m'expliquer ce code :
si vous pourriez me donner une explication complète car j'en ai besoin pour un RAPPORT;
merci bcp de votre aide