begin process at 2012 02 16 13:43:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

Probléme avec DoEvents


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

Probléme avec DoEvents

jeudi 26 janvier 2006 à 11:02:09 | Probléme avec DoEvents

lbch1974

Salut
   Merci d'avance pour vos aides. J'est réalisé un programme en visual basic 6.0 qui reçoit les données a travers le com1 et le com2 pour cela j'est travaillé avec la procédure d'évenement  OnComm() du contrôle OnComm qui ce déclanche automatiquement des que le port série (Com1 ou Com2) reçoit des données. a l'intérieur de cette procédure j'est utilisé le syntaxe suivant : 
Do
          DoEvents
          tampon_ptb220 = tampon_ptb220 & mscPTB220.Input
 Loop Until InStr(tampon_ptb220, Chr$(13) & Chr$(10)) 
 A l'execution du programme et aprés quelque minute il envoi le message d'erreur suivant "Erreur d'execution 28 espace de pile insuffisant"
et quand je fait le débogage il me signale que l'erreur et au niveau du syntaxe DoEvents . Sachant que lorsque je met DoEvents en commentaire le SE se plante.
Merci
jeudi 26 janvier 2006 à 11:11:04 | Re : Probléme avec DoEvents

econs

Administrateur CodeS-SourceS


C'est certainement ta variable tampon_ptb220 qui explose. Elle doit contenir trop d'éléments.
tampon_ptb220 prend trop de mémoire, et au moment où DoEvents la sollicite, c'est la goutte qui fait déborder le vase.
Mais ton problème doit bien se situer sur ta boucle Do ... Loop.
Soit elle ne s'arrête jamais, soit il y a trop d'input avant de recevoir le caractère de fin.
1ère possibilité à privilégier.




Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
jeudi 26 janvier 2006 à 11:23:36 | Re : Probléme avec DoEvents

perathoner

Hello.

Elle est de quel type ta variable tampon_ptb220 ???

Pourquoi ne met tu pas un tableau d'octets à la place ??? (ex : Dim toto() as Byte)

J'imagine que t'es données reçu sur des COM1 et COM2 ont un protocole... ex protocole Modbus... donc t'es données sont encapsulées... suivant une trame que toi tu décode par la suite..pour que t'es données ais un sens. Donc en fonction de ton protocol tu devrais faire n tableau d'octets ou d'autres chose !!! je ne connais pas ton projet... à toi de voir..

@+


jeudi 26 janvier 2006 à 11:31:58 | Re : Probléme avec DoEvents

perathoner

Re..

Ou bien le pb vient du fait que ta boucle est infinie... c'est à dire que ta condition de stop n'arrive jamais...???
Moi perso j'ai eu plusieurs fois ce message et à chaque fois c't un pb de boucle infini...voilà.

@+
jeudi 26 janvier 2006 à 11:49:02 | Re : Probléme avec DoEvents

lbch1974

Merci
Mon variable tampon_ptb220 est de type string sachant qu' a l'execution du programme il ya récéption des données et le programme le traite et l'affiche dans un TextBox . Mais le message d'erreur se manifeste aprés quelque minute

jeudi 26 janvier 2006 à 12:06:09 | Re : Probléme avec DoEvents

acecel

Oui car la condition pour sortir de la boucle n'est jamais vérifiée, donc ta variable Tampon se remplit jusqu'à saturation.
De plus ta boucle fait appel sans cesse à la fonction .input de ta variable mscPTB220, et ce de manière asynchrone, c'est à dire qu'il n'attends pas que l'execution de cette fonction soit finie avant de continuer la procédure, et donc il l'appelle sans cesse, jusqu'à ce qu'il y ait trop d'appels dans la pile mémoire, et là ca plante.

Enfin je croit



jeudi 26 janvier 2006 à 12:18:44 | Re : Probléme avec DoEvents

perathoner

Re.

L'idée à mon sens, s'est qu'il faudrait que tu détermine une procédure pour déterminer quand dois tu lire ton buffer de réception, et quand ne dois tu pas lire.
ex : On part du principe que ton buufer de réception est vide.
      Quand tu vois qu'il y a des données qui viennent d'arriver, tu ne fais rien et tu attend qu'il n'y ai plus de mouvement pour aller les lire.
       Là tu regarde le nombre d'octets que tu as reçu. En fonction de ce nombre tu dimmensionne un tableau d'octets. Dans lequel tu stocke ta trame.
    Puis dans une boucle, tu décode toute ta trame...

Je sais pas si ça t'aide..??

jeudi 26 janvier 2006 à 12:30:06 | Re : Probléme avec DoEvents

lbch1974

Merci Monsieur perathoner mais je vous signale que la boucle ne s'execute pas à l'infini car sinom le prgramme ne va pas afficher la valeur suivante qui est différente de la valeur précédente.
 
jeudi 26 janvier 2006 à 13:18:57 | Re : Probléme avec DoEvents

econs

Administrateur CodeS-SourceS

"Et pourtant elle tourne" ... à l'infini

DoEvents n'a jamais fait planter quoi que ce soit. Ton message d'erreur provient bien de la pile. acecel t'a mis sur la voie dans un précédent message.

Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
jeudi 26 janvier 2006 à 13:42:53 | Re : Probléme avec DoEvents

acecel

Au lieu d'utiliser une boucle, essaye plutôt d'utiliser un timer, en définissant un intervalle qui s'accorde bien avec la vitesse de réception des données sur ton port COM.
Dès que le programme ne recoit plus de donnée, affiche la variable Tampon à l'ecran, et réinitialise là.


Car à mon avis, la boucle est "trop rapide" pour recupérer les informations sur le port COM, lui n'arrive plus à suivre, la pile mémoire se sature, et donc ca plante.




1 2

Cette discussion est classée dans : erreur, doevents, probléme, tampon, ptb220


Répondre à ce message

Sujets en rapport avec ce message

Probléme d'empaquetage et surtout de déploiement [ par energiez ] Bonjour!Tout d'abord merci a ceux qui m'aideront.J'ai créer un petit logiciel intégrant une base de données gérée grace une DAO (microsoft DAO 2.R/3.5 recordset probléme [ par philo71 ] Bonjour,je vous expose rapidement ma config, je fait une appli en vb 6 , avec sql serveur.Les requétes sont effectuées a tranvers un adodc, mon record Probléme avec les ImageList [.net] [ par Charles Racaud ] Bonjour, Problème étrange avec VB.net 2003 Tout allait bien dan Erreur 32765 [ par Yaoel ] Bonjour, j'ai une erreur quand j'ouvre un COMMON DIALOG : ( Info d'erreur : 32765 la fonction commune de dialogue a échoué au cours d'initialisation. Probléme avec Dialogue.ShowFont [ par electroremy ] Bonjour à tous !Quand je lance Dialogue.ShowFont, j'obtiens une erreur comme quoi aucune police n'est installée sur mon ordi puis un message avec un n MSDN Probléme d'affichage [ par TomIlliev ] Bonjour à Tous,J'avais demandé il y a 10 jours environ où trouver la MSDN en français.Mortalino m'a donné un adresse je l'ai téléchargée, est installé Excel: Erreur de fichier: Rusque de perte de donnée [ par ngus1er ] Bonjour à tous, Voila, je travail sur une base de donnée documentaire sous excel. Il comporte beaucoup de macro, dont une assez concéquante, il est d probléme lié à adodc sous windows 7 [ par ndaseraphin ] Bonjour, Voici mon problème.J'ai une application que j'ai conçue sous vb6 sous windows XP SP2 et sous windows xp tous les formulaires peuvent être uti erreur 429 [ par apsuria ] gap J'ai un petit programme qui me passe des variable de EXCEL vers WORD qui marche trés bien sur PC. En le démarrant avec EXCEL 2011 sur MAC, il me erreur [ par fokis ] Slt, j'ai un problem avec mon projet, lorsque j'éssai d'exécuter une commande avec comme code " set rs = new ADOBD.Recordset rs.open " select * from


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 2,028 sec (4)

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