Creation menu et choix du port com

Résolu
Signaler
Messages postés
5
Date d'inscription
dimanche 13 novembre 2011
Statut
Membre
Dernière intervention
30 août 2012
-
Messages postés
14828
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 novembre 2021
-
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

End Sub

7 réponses

Messages postés
14828
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 novembre 2021
157
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
Messages postés
14828
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 novembre 2021
157
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
Messages postés
5
Date d'inscription
dimanche 13 novembre 2011
Statut
Membre
Dernière intervention
30 août 2012

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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
?
Stéphanie de Monaco ?
Messages postés
14828
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 novembre 2021
157
Bonjour,

Regardes :
http://www.andreavb.com/forum/viewtopic_2896.html

---------------------------------------------------------------------
[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
Messages postés
5
Date d'inscription
dimanche 13 novembre 2011
Statut
Membre
Dernière intervention
30 août 2012

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


Merci pour ton aide !!!
Messages postés
14828
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 novembre 2021
157
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