rhumanuss
Messages postés36Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention 2 novembre 2007
-
2 nov. 2007 à 13:08
Kristof_Koder
Messages postés918Date d'inscriptionvendredi 3 août 2007StatutMembreDernière intervention27 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
mstarsup5
Messages postés527Date d'inscriptionlundi 15 octobre 2007StatutMembreDernière intervention10 octobre 20131 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
rhumanuss
Messages postés36Date d'inscriptionsamedi 21 mai 2005StatutMembreDerniè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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Kristof_Koder
Messages postés918Date d'inscriptionvendredi 3 août 2007StatutMembreDernière intervention27 octobre 200810 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.