begin process at 2012 05 29 03:37:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

System

 > 

gestion des timeouts sur port com C/C++


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

gestion des timeouts sur port com C/C++

lundi 6 avril 2009 à 16:28:47 | gestion des timeouts sur port com C/C++

HeXa2

Bonjour!

Je suis actuelement en train de generer une dll qui comunique sur le port série
Il me faut gerer les timeouts.

je veux qu'au bout de 1500ms d'inactivité sur le port, un flag se leve et que le soft qui utilise la dll puisse récuperer ce flag.

cependant, ma dll fait plein de trucs en meme temps et il faudrait que je puisse faire tourner la fonction en backgroung
(vous savez, comme sous nux ou il suffit de mettre le & devant l'appel)

j'avais pensé a utiliser un waitforevent, mais je ne sais pas trop comment le mettre en oeuvre, j'ai été jeter un oeil sur MSDN et il me donne ca:

HRESULT
  IDebugControl::WaitForEvent(
    IN ULONG  Flags,
    IN ULONG  Timeout
    );

en gros, je donne le nom de ma variable drapeau (ULONG) et le nombre de millisecondes avec que le flag s'active...

Mais..; comment le mettre dans le code..? dois-je definir une fonction ou dans un bout de code a l'initialisation du port? est ce que c'est une fonction bloquante ou au contraire , est ce que le sequencement va continuer jusqu'a ce qu'un evenement soit detecté, est ce que je peux aussi mettre un controle en background qui lui dit les operations a effectuer si il leve son drapeau?

Merci d'avance pour vos reponses, si j'ai pas été tres clair, vous pouvez poser vos questions, et je peux aussi fournir mon code.

HeXa

mardi 7 avril 2009 à 11:36:05 | Re : gestion des timeouts sur port com C/C++

HeXa2

Bonjour!

J'ai reflechi un peu (et oui ca m'arrive) et je me suis dit que la meilleure solution est de passer par un thread.

dans mon thread je fais un getcommevent (fonction bloquante) et si ca passe (typiquement si il y a un event sur le port com), je fais passer une varible booleenne i a son etat inverse (je fais ca par pointeur pour pouvoir recuperer tout ca dans mon programme ppal

dans mon programme ppal, je fais un waitforevent sur i pendant 1200ms qui va empecher l'execution de la suite de mon programme et lever un drapeau erreur.

par consequent, si i ne commute pas (si il n'y a pas d'event sur le port com) waitforevent ne passera pas (et renvera une erreur a la fin des 1200 ms) et le prog ne lancera pas les operations sur le port.

le petit probleme que j'ai maintenant, c'est comment passer tous les parametres a mon thread (le nom du port et le pointeur sur la variable de controle i.

un petit coup de main (rien a voir avec un void main (void) ) et je colle mon code ici pour ceux qui pourraient avoir le meme genre de problemes.

PS: si mon idée est de la merde et que vous pensez qu'il peut y avoir mieux, n'hésitez pas

HeXa


Cette discussion est classée dans : fonction, port, dll, flag, timeouts


Répondre à ce message

Sujets en rapport avec ce message

prob avec une dll [ par BlackWizzard ] Salut!je voudrais faire une dll avec un niveau tres bas...j'ai deja créé une dll de cryptage en me basant sur un code simple...la chose que je compren Fonction vers DLL [ par logisim ] Quelqu'un pourrait-il m'aider à transformer une fonction Visual Cpp en DLL pour Visual Basic ?En Cpp :int TradUnimarc(FILE *fpU, FILE *fdb){// code}En Dll avec c++ builder 6 [ par sebastienbro ] J'aimerais savoir comment exporter une fonction dans une DLL, et en même temp, comment importer une fonction ?merci dev c++ Api & dll [ par pounch ] Tout d'abord lu a tous comme j'en avais marre de chercher tout seul dans mon coin, ben j'a decidé de veindre Bon voila mon pr Lien DLL 16 / API WIN32 [ par CoreBreaker ] Bonjour quelqu'un sait-il comment une fonction de l'API Win32 dans une DLL 16bits ?Et de manière générale comment appeler une fonction d'une DLL 32bit prob avec dll et lib [ par zelze ] voila mon prob:j'ai inséré le lib dan le projet, j'ai indiqué:extern "C" __declspec(dllimport) int fonction(char*);fonction(texte);mais lorsque je veu Pour les doués, moi j'en peu plus ! [ par sena ] Salutje voudrais en fait faire un passage de paramètre a une fonction dont un a une valeur par défaut. (puis inclure ca dnas une DLL)Par exemple une f exécuter une fonction en arrière plan [ par sena ] Bonjour,kelk'un aurait - il un exemple simple d'exécution d'une fonction en arrière plan !Car la solution 1 ne fonctionne évidemment pas, car la fonct Recherche fou de C pour réaliser une petite dll [ par loskiller62 ] BonjourProgrammeur VB, j'ai un besoin (relativement urgent) pour une dll. Il s'agit d'une fonction réalisable qu'en Cpp mais dont j'ai besoin pour mon probleme utilisation de DLL [ par poseidon2 ] En fait je cherche a utiliser la fonction d'une de mes DLL, dans une MFC. Pour cela j'utilise la fonction donné par MSDN:hDLL2 = LoadLibrary("HptSimLi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,045 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales