Lancer procedure

rhumanuss Messages postés 36 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 2 novembre 2007 - 2 nov. 2007 à 13:08
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 - 2 nov. 2007 à 22:52
Bonjour à tous,

Voila j'ai un petit soucis sous vb6.
Je voudrais qu'une procédure se lance automatiquement lorsqu'une variable passe à false (ou true), sans l'appeler.

En fait, j'écoute les ports COMs sur lesquels arrivent un flux constent de données (trames ModBus). Mon soucis est que les données arrivent tellement vite que si je fais l'affichage au fur et à mesure, ca plante. Je souhaiterais donc passer une variable (ex: JeRecoi) à faux, et de ce fait, lorsquelle serait à faux, la procédure d'affichage et d'enregistrement dans une fichier txt se lancerait sans que je doive l'appeler

Pouvez vous m'aider?

Merci d'avance

5 réponses

mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
2 nov. 2007 à 13:28
Salut,

Je vois trois solutions, mais pas super super, y'a peut être(sûrement) mieux (je connais visual basic depuis 2 semaines, donc je connais pas grand chose encore ^^"):

La première, tu fais un if... et tu appelles ta fonction, mais ça tu n'as pas l'air de vouloir.

La deuxième: tu peux utiliser un timer? mais dans ce cas là, tu auras une saisie régulière, mais peut être pas optimale au niveau de la quantité de données.

3ème solution (peut être mieux):
Tu utilises     " If GetInputState then DoEvents  " pour faire deux trucs en même temps, un en attente (la sauvegarde de ton fichier texte), et un qui tourne en permanence (l'acquisition de tes données)

Il te faut déclarer ça avant:
PrivateDeclareFunction GetInputState Lib "user32" () Aslong

Pour voir comment ça marche, va par ici :)
http://www.vbfrance.com/infomsg_LANCER-PROCEDURE_1029785.aspx
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
2 nov. 2007 à 13:31
0
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
2 nov. 2007 à 15:22
Hmmm j'ai dit que des conneries pour le 3ème, c'est pas ça la fonction, je vais chercher laquelle c'était...
0
rhumanuss Messages postés 36 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 2 novembre 2007
2 nov. 2007 à 17:50
ce qu'il faut, c'est que je gère l'affichage lorsque je ne reçoit rien sur les ports COM (intervals de temps en secondes ou millisecondes...:s), donc en fait, lorsque je sort de mon comEvent, juste avant de sortir j'aurais passé une variable d'état à TRUE, ce qui aurait été détecté par ma fonction (ou procedure) d'affichage. Parceque le soucis, c'est que je faisait l'affichage juste après avoir reçu les données, mais je le fesait dans le OnCom de mon MsCom. C'était beaucoup trop lourd, et c'est pas génial de raconter sa vie dans un onCom. J'ai pensé à l'idée du timer, mais c'est pas du tout l'idéal dans mon cas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
2 nov. 2007 à 22:52
Il me semble pourtant qu'un timer serait peut-être une bonne option.
Un timer réglé pour se déclencher toutes les n millisecondes, et dont l'EVT déclenche ta procédure d'affichage.
Lorsque tu recois des datas, tu passes sa propriété Enabled à False et tu la remet à True en fin de réception.
0
Rejoignez-nous