Port série virtuel

mimine10 Messages postés 22 Date d'inscription vendredi 11 juin 2004 Statut Membre Dernière intervention 31 octobre 2007 - 19 avril 2007 à 13:49
fabienbe Messages postés 1 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 21 septembre 2008 - 21 sept. 2008 à 10:30
Bonjour à tous,

Désirant communiquer avec plusieurs appareils via Ethernet, j'utilise donc des ports série virtuels. J'ai rajouté la vspdtcl dans mon projet VB et copier ces différentes fonctions de création et suppression de port com dans un module de mon projet. Donc quand je veux communiquer avec un appareil en particulier je choisis de créer la paire de port com désirée, j'ouvre un des port com virtuel dans mon interface de communication et l'autre dans mon interface d'exploitation. Quand je veux stopper cette communication je supprime la paire de port com créée. Mon pb, c'est qu'il y a des moments où ça marche très bien et d'autre VB me dit que le port que j'ouvre dans mon interface d'exploitation est déjà ouvert, alors que je viens de lancer mes programmes..C'est un peu la confusion avec mes ports com virtuels. Dans la bibliothèque vspdctl.dll, j'utilise juste "Createpair", "Deletepair", et "Deleteall" à la fermeture de mon interface de communication. Est-ce que quelqu'un à déjà fait ce genre de chose et pourrai me conseiller sur l'utilisation des ports com virtuels? dans mon prochain message je joindrai une partie de mon code qui gère la création et suppression de port virtuel

<!-- / message -->

7 réponses

mimine10 Messages postés 22 Date d'inscription vendredi 11 juin 2004 Statut Membre Dernière intervention 31 octobre 2007
19 avril 2007 à 13:50
If UNIT(Index).communication = False Then   'si ports ouverts, fermeture
   
   
    Port1 = Trim(Str(UNIT(Index).portcom))  'récupération de la paire de ports à récupérer
    Port2 = Trim(Str(UNIT(Index).portvirt))
    Port1 = "COM" + Port1                   'mise en forme
    Port2 = "COM" + Port2
    Call CreatePair(Port1, Port2)           'création de la paire de port com
    otimer = Timer                          'attente de création
    While (CreatePair(Port1, Port2) = False) And (Abs(otimer - Timer) < 3)
        DoEvents
    Wend
   
    Open App.Path + "\Portcom" For Output As #1 'écriture port com pour récupération par l'exploitation
        Print #1, Trim(Str(UNIT(Index).portcom))    'valeur de portcom avec lequel le logiciel d'exploitation doit s'ouvrir
        Print #1, Trim(UNIT(Index).ident)           'identifiant que le logiciel doit reconnaître
    Close #1
   
    Call CONNEXION_com2(Index)      'connexion au port virtuel correspondant au num du matériel
    Command3(Index).Picture = LoadPicture(App.Path + "\connexion_ok1.bmp")
    UNIT(Index).communication = True            'indicateur de communication à true
   
    'Lancement du prog d'exploitation correspondant au système
    chemin = App.Path + "" + UNIT(Index).exploitation 'chemin de l'executable BMS_expl
    retval = Shell(chemin, 1)
       
Else
    UNIT(Index).communication = False   'si la paire était ouverte on la ferme
    Command3(Index).Picture = LoadPicture(App.Path + "\connexion_no1.bmp")
    Port1 = Trim(Str(UNIT(Index).portcom))  'récupération de la paire de ports à récupérer
    Port2 = Trim(Str(UNIT(Index).portvirt))
    Port1 = "COM" + Port1                   'mise en forme
    Port2 = "COM" + Port2
    MSComm2(Index).PortOpen = False
    Call DeletePair(Port1)
    otimer = Timer                          'attente de création
    While (DeletePair(Port1) = False) And (Abs(otimer - Timer) < 1)
        DoEvents
    Wend
   
End If


   
   


 
0
mimine10 Messages postés 22 Date d'inscription vendredi 11 juin 2004 Statut Membre Dernière intervention 31 octobre 2007
19 avril 2007 à 13:56
J'ai une autre petite question, quand je lance un executable grâce à mon code ci-dessus, comment faire pour l'arrêter?? Je crois que ça peut-être une cause de mes problèmes..
0
metoui fethi Messages postés 6 Date d'inscription mardi 17 février 2009 Statut Membre Dernière intervention 7 février 2009
4 mai 2007 à 08:46
fethi
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 mai 2007 à 09:22
Quand je lis de telles choses, ma foi...
J'en reste baba

   otimer = Timer                          'attente de création
    While (DeletePair(Port1) = False) And (Abs(otimer - Timer) < 1)
        DoEvents
    Wend

Il est bien évident que la valeur de otimer étant plus petite (prise avant) que la valeur actuelle de Timer,
otimer - Timer sera toujours négatif (et jusqu'à preuve du contraire, un nombre < 0 est également <1)

on est donc là dans une boucle sans fin...

et Kif-Kif plus haut !!!
0

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

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 mai 2007 à 09:24
Il est maintenant vrai que l'utilisation de Abs vient bousculer les choses....
0
mimine10 Messages postés 22 Date d'inscription vendredi 11 juin 2004 Statut Membre Dernière intervention 31 octobre 2007
4 mai 2007 à 10:36
Désolée, apparemment je ne suis pas aussi confirmée que toi..
Si tu trouves mes questions ridicules ne perds pas ton temps avec moi, mais il est vrai que l'utilisation de Abs bouscule les choses. Je n'ai peut-être pas assez cherché, il doit y avoir une rubrique "gros débutant" sur le forum..Je ne fais pas de VB tous les jours mais je l'utilise occasionnellment, ce qui n'est visiblement pas assez souvent pour avoir le privilège de poser des questions et surtout d'avoir des réponses. Je te remercie donc d'avance de ne plus perdre ton temps avec mes questions car je me passerai volontier de tes commentaires.


Sur ce bonne continuation 
0
fabienbe Messages postés 1 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 21 septembre 2008
21 sept. 2008 à 10:30
on peut trouver un utilitaire externe en open source qui marche très bien ,


il permet de créer 2 ports virtuels et de les relier automatiquement

http://sourceforge.net/projects/com0com/

fb
0
Rejoignez-nous