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

VB 6 et antérieur Discussion :

Virtual serial port et VB


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 24
    Points
    24
    Par défaut Virtual serial port et VB
    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?

  2. #2
    Membre confirmé Avatar de La Praline
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 568
    Points
    568
    Par défaut
    Bonjour,

    Peut êter que si tu nous fournissais ton code, la résolution de ton problème et l'explication qui va avec serait plus rapide/efficace/agréable/etc..

    Merci d'avance

    Cordialement
    ..........................."Membre Chevronné"... non "Chaviré" serait plus juste !!!
    ...............................Avant toute chose => Règles, FAQ, Tuto, Google...
    ...................................................................
    Rock'n Roll

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 24
    Points
    24
    Par défaut
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    If UNIT(Index).communication = False Then 'si ports ouverts, fermeture    
        Port1 = Trim(Str(UNIT(Index).portcom))  
        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) < 1)
        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
        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 
        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 suppression
        While (DeletePair(Port1) = False) And (Abs(otimer - Timer) < 1)
        Wend
     
    End If

  4. #4
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Je ne connais pas cette librairie, donc je peux pas trop aider. Mais une petite remarque quand même. Dans tes boucles d'attente, tu devrais mettre un DoEvents pour que Windows aie la main pour faire le boulot.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    While (DeletePair(Port1) = False) And (Abs(otimer - Timer) < 1)
     DoEvents
    Wend
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 24
    Points
    24
    Par défaut
    J'avais mis des "Do events" dans les boucles et je les ai enlevés, je ne sais plus trop pourquoi, surement d'autres soucis ailleurs, mais tu as raison je vais les remettre..merci de me l'avoir fait remarqué..

  6. #6
    Membre confirmé Avatar de La Praline
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 568
    Points
    568
    Par défaut
    Bonjour,

    Pourrais-tu éditer ton code afin de placer les balises [code] ... [/code] autour de ce dernier...

    Ce sera nettement plus facile pour nous de déchiffrer...
    D'avane merci


    Cordialement
    ..........................."Membre Chevronné"... non "Chaviré" serait plus juste !!!
    ...............................Avant toute chose => Règles, FAQ, Tuto, Google...
    ...................................................................
    Rock'n Roll

  7. #7
    Membre averti Avatar de pmboutteau
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Février 2005
    Messages : 601
    Points : 420
    Points
    420
    Par défaut
    ce système pourrait me permettre d'utiliser plusieurs webcam identiques?
    ours ours !! Au début elle est froide mais après elle est bonne!

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 24
    Points
    24
    Par défaut
    A vrai dire je ne sais pas trop..Dans mon cas, je communique via Ethernet avec une carte maître d'un réseau sans fil (zigbee). Chaque appareil possède sa propre interface d'exploitation de donnée. L'utilisation des paires de port com virtuel se fait entre l'interface réseau et les interfaces d'exploitation..la seule connexion matérielle est la liaison ethernet, je n'ai donc pas de pb de driver ou autre..mais j'ai d'autres soucis. Tu peux avoir un port physique dans une paire de port virtuel.
    Si tu veux te renseigner un peu, j'utilise VSPD Xp de chez eltima (il y a une version de démo)

    http://www.eltima.com/help/vspdxp/

Discussions similaires

  1. problème avec serial port
    Par shirya dans le forum VB.NET
    Réponses: 15
    Dernier message: 22/12/2010, 10h03
  2. insérer serial port dans une dll
    Par sdecorme dans le forum C++
    Réponses: 1
    Dernier message: 29/04/2009, 10h01
  3. Probleme SERIAL PORT
    Par ishikawa dans le forum Windows
    Réponses: 1
    Dernier message: 30/03/2007, 20h16
  4. Qu'est-ce que "virtual printer port for usb"
    Par Asdorve dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 20/07/2006, 13h07

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