Creation menu et choix du port com

Résolu
Parseq Messages postés 5 Date d'inscription dimanche 13 novembre 2011 Statut Membre Dernière intervention 30 août 2012 - 13 nov. 2011 à 01:19
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 - 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

End Sub

7 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
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
3
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
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
3
Parseq Messages postés 5 Date d'inscription dimanche 13 novembre 2011 Statut Membre Dernière intervention 30 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
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 nov. 2011 à 13:56
?
Stéphanie de Monaco ?
0

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

Posez votre question
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
13 nov. 2011 à 16:21
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
0
Parseq Messages postés 5 Date d'inscription dimanche 13 novembre 2011 Statut Membre Dernière intervention 30 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


Merci pour ton aide !!!
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
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
0
Rejoignez-nous