Parseq
Messages postés5Date d'inscriptiondimanche 13 novembre 2011StatutMembreDernière intervention30 août 2012
-
13 nov. 2011 à 01:19
NHenry
Messages postés15090Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 6 novembre 2023
-
13 nov. 2011 à 18:26
Bonjour à tous,
Pour le monitoring et la recherche d’un mot sur les données de passage dans un port com, j’ai essayé d’écrire des lignes de code mais voilà mes problèmes :
1)Le menu (pour le choix du port com à utiliser) m’affiche la liste de tous les ports com de 1 à 15 au lieu de la liste des ports com présents et pas ouverts (dans mon cas, que le port 2)
2)Quand je choisis une deuxième fois le même port il me donne une erreur "port déjà ouvert"
Je ne comprend pas ?????, merci pour votre aide
Private Sub Form_Load()
‘Declaration des variables
Dim PortActif As Integer
Dim PremierChoix As Integer
Dim NumPort As Integer
PremierChoix = 0
PortActif = 0
‘Test des ports actifs et pas ouverts pour la création du menu
For NumPort = 1 To 15
On Error Resume Next
MSComm1.CommPort = NumPort
MSComm1.PortOpen = True
If Err.Number <> 8002 Or Err.Number <> 0 Then
Load choix(NumPort)
choix(NumPort).Caption = NumPort
choix(NumPort).Visible = True
MSComm1.PortOpen = False
End If
Next NumPort
End Sub
Private Sub choix_Click(ChoixPortActif As Integer)
‘Premier fois que on fait un choix du port com
If PremierChoix = 0 Then
PremierChoix = 1
PortActif = ChoixPortActif
choix(ChoixPortActif).Checked = True
MSComm1.CommPort = ChoixPortActif
MSComm1.PortOpen = True
End If
‘Choix suivant du port com et control si pas le même (choisir une deuxième fois le même port com)
If PremierChoix <> 0 And PortActif <> ChoixPortActif Then
choix(PortActif).Checked = False
MSComm1.CommPort = PortActif
MSComm1.PortOpen = False
PortActif = ChoixPortActif
choix(ChoixPortActif).Checked = True
MSComm1.CommPort = ChoixPortActif
MSComm1.PortOpen = True
End If
NHenry
Messages postés15090Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 6 novembre 2023159 13 nov. 2011 à 01:31
Bonjour,
Pour poster un code, regardes le point 2 de ma signature.
If Err.Number <> 8002 Or Err.Number <> 0 Then
Sera toujours vrai.
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site
NHenry
Messages postés15090Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 6 novembre 2023159 13 nov. 2011 à 13:04
Bonjour,
Erreur 0=pas d'erreur !
Or = Ou, et en anglais Et=?
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site
Parseq
Messages postés5Date d'inscriptiondimanche 13 novembre 2011StatutMembreDernière intervention30 août 2012 13 nov. 2011 à 01:53
D'abord merci pour ta réponse très rapide
Mais comment je peux gérer l'erreur 8002 (Port inexistant) et l'erreur 0 (Port déjà ouvert)
pour créer le menu avec la liste de port ?????
Edit : Effectivement j'ai utilise l’icône de syntaxe mais j'ai efface la deuxième partie (code) par erreur
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site
Parseq
Messages postés5Date d'inscriptiondimanche 13 novembre 2011StatutMembreDernière intervention30 août 2012 13 nov. 2011 à 18:07
Merci Nhenry,
Thank you for the link but.....
1) En lisant simplement l'erreur donnée par VB , l'erreur générée est le 8005 et pas le 0 (comme tu avais suggéré )
Une fois trouvée la faille voici la partie du nouveau code concerné:
For NumPort = 1 To 15
On Error Resume Next
MSComm1.CommPort = NumPort
MSComm1.PortOpen = True
If Err.Number <> 8002 And Err.Number <> 8005 Then
Load Choix(NumPort)
Choix(NumPort).Caption = NumPort
Choix(NumPort).Visible = True
MSComm1.PortOpen = False
End If
Next NumPort
2) Le problème de "deuxième choix" du même port était dû à la portée des variables (dans mon cas la variable PremierChoix)
Une fois trouvée la faille voici la partie du nouveau code concerné (au début du code):
Option Explicit
Private PortActif As Integer
Private PremierChoix As Integer
Private NumPort As Integer
NHenry
Messages postés15090Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 6 novembre 2023159 13 nov. 2011 à 18:26
Bonjour,
De rien :)
Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés.
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site