IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Probleme de Do Loop


Sujet :

VBScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Par défaut Probleme de Do Loop
    Bonjour,
    Je debute en vbs, j'essais de faire un petit programme qui lit en boucle un port com virtuel.

    Voici mon minuscule programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SUB MAIN
        Dim i
        Set MS=CreateObject("MSCOMMLib.MSComm")
        MS.CommPort=11
        MS.PortOpen=True
     
             Do  while i = T :
                  i = MS.Input
                  If i = S Then 
                            MC.SendCommand("ENPROG")
                  End If
             Loop
     
        MS.PortOpen=False
    END SUB
    Le décor ...
    J'ai un programme qui envoie sur le COM10 le caractere S pour start et T pour stop.
    COM10 et COM11 sont une paire virtuel ( Com0Com )
    Mon petit programme en vbs lit le Com11 en boucle... s'il reçoit "S" il execute la commande MC.SendCommand("ENPROG")...
    Tant qu'il ne recoit pas "T", si c'est le cas, ferme le Com11 et exit.
    J'aurai eu beaucoup de change si ce programme fonctionnait du premier coup mais ce n'ai pas le cas.
    Le monitoring sur le Com11 m'indique bien que le programme tourne en boucle sur le Com11.
    Le probleme survient lorsque je lance ce script.
    MC.SendCommand("ENPROG") est executé immediatement, c'est une commande la mise en marche d'un moteur PàP.
    Si j'envoie le message "S" sur le Com (Theoriquement, il devrait executer la commande MC.SendCommand("ENPROG"))
    le monitoring m'indique la fermeture du port, soit la commande MS.PortOpen=False...

    En gros ily a un decalage dans mon execution et je n'arrive pas a corriger ce defaut.
    Quelqu'un aurait une idée
    Merci pour toutes infos
    Olivier

  2. #2
    Membre chevronné Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    Salut.

    Je vois pas trop ce qu'est ton problème, mais on peut essayer de regarder ton code :

    Le ":" après le Do While n'est-il pas de trop?
    D'après ce que t'as dit, j'essayerais bien dans le test :
    car actuellement, il compare i avec une variable S non initialisée, ce qui ne peut pas fonctionner.
    Attention, le test peut être sensible à la casse. Dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If i = "S"  OR i = "s" Then
    Bon courage!

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Par défaut
    Salut,
    Merci pour ta reponse mais cela ne fonctionne toujours pas, meme avec cette syntaxe.
    Les ":" sont un residu d'essais d'ecriture.
    j'ai fait un essais dans mon Do.. Loop avec Select Case pour fixer le probleme et determiner si la cause de mon probleme etait les conditions If .. Then , ou simplement une declaration Do.. Loop defectueuse.
    Avec Select case le PC se fige! ...Plus de souris, plus rien, meme pas Ctrl+Alt+Sup
    Je continue a faire quelques essais pour avoir quelque chose de plus

    A+

  4. #4
    Membre chevronné Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    OK, j'ai jeté un deuxième coup d'oeil à ton code et en fait il y a d'autres petits dysfonctionnements visibles :

    Selon moi le problème est idem avec la comparaison avec T : Do while i = "T"

    De plus, si i n'a pas été initialisé avant la boucle While, le test ne peut pas fonctionner. Il faut donc l'initialiser avec i = "T" ou i = MS.Input avnt de lancer ta boucle.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Par défaut
    Salut,

    Merci pour ta reponse, j'avais fait un essais avec une initialisation de i=MS.Input sous la ligne MS.PortOpen=True.... mais de memoire rien de concluant.
    En fait, ce week end j'ai laissé tombé cette communication rs232 virtuelle entre les deux softs car j'ai constaté que si l'ouverture du com est effective, le transfert de données ne l'etait pas.
    J'aurais bien aimé trouver une solution, au moins pour une satisfaction personnel mais j'ai craqué. j'ai fait un bidouillage hardware a la sortie des les deux com present sur mon ordi et une gestion d'initialisaton des lignes DCD.
    Donc mon probleme est resolu temporairement le temps de finaliser mon montage.
    Lors d'une hypothetique amelioration, j'y reviendrais dessus

    Merci pour tes reponses
    bonne semaine

Discussions similaires

  1. probleme de sortie boucle LOOP
    Par adelsunwind dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/05/2008, 08h41
  2. Problem de loop
    Par aminho10 dans le forum SQL
    Réponses: 5
    Dernier message: 30/04/2008, 13h47
  3. Probleme de boucle do loop
    Par jacko842 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 18/01/2008, 14h31
  4. [VBA-E] PRobleme avec une boucle DO..LOOP WHILE
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 31/07/2006, 01h04
  5. Réponses: 13
    Dernier message: 20/03/2006, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo