Programmation com port en vbs

Fermé
ingrid13 Messages postés 144 Date d'inscription vendredi 25 août 2006 Statut Membre Dernière intervention 29 octobre 2010 - 31 oct. 2009 à 16:31
ingrid13 Messages postés 144 Date d'inscription vendredi 25 août 2006 Statut Membre Dernière intervention 29 octobre 2010 - 3 nov. 2009 à 09:14
Bonjour,

Ca fait deux semaines que je m'arrache les cheveux pour trouver une solution sur un programme en vbs en vain.
J'ai deux programmes que j'essaie de faire communiquer a travers une paire virtuels COM10<>COM11
Le premier programme envoie des messages a chaque fois que je manipule son interface graphique...
A chaque fois que je click sur un bouton, un message ( exemple : S, C,T...) est envoyé sur le COM10.
Par monitoring, je sais que le message arrive bien au COM10.
Jusque là tout fonctionne, ... ou je me plait a le croire :-))

Là où mon probleme arrive , c'est sur le deuxieme programme. Je dois faire un programme en vbscript.
Le deuxieme programme est celui ci
http://www.faulhaber.com/n41656/i425657.html
Ce programme en interface graphique me donne la possibilité de concevoir dans sa racine un script en VB pour le dev.
J'aurai aimé faire un prog assez simple, du genre, ouvrir le com11 attendre un message.... lorsque le message "S" est reçu(exemple) , executer une commande objet.sendmessage(XXX) ... du genre!
Si l'idée est assez simple, je n'y casse des dents dessus car jusqu'a present je n'ai jamais utiliser VB et tres peu souvent du dev sur windows.

N'y aurait il pas une bonne ame pour m'aider a avancer...

Ingrid
A voir également:

1 réponse

ingrid13 Messages postés 144 Date d'inscription vendredi 25 août 2006 Statut Membre Dernière intervention 29 octobre 2010 15
3 nov. 2009 à 09:14
Bonjour,

Voici un essaie


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 )
Le 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.
Un 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
0