mimine10
Messages postés22Date d'inscriptionvendredi 11 juin 2004StatutMembreDernière intervention31 octobre 2007
-
19 avril 2007 à 13:49
fabienbe
Messages postés1Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention21 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
mimine10
Messages postés22Date d'inscriptionvendredi 11 juin 2004StatutMembreDernière intervention31 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
mimine10
Messages postés22Date d'inscriptionvendredi 11 juin 2004StatutMembreDernière intervention31 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..
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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 !!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
mimine10
Messages postés22Date d'inscriptionvendredi 11 juin 2004StatutMembreDernière intervention31 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.