Ouvrir/fermer les ports avec visuel et checkbox

Soyez le premier à donner votre avis sur cette source.

Vue 9 989 fois - Téléchargée 1 383 fois

Description

Bonjour,
Cette source consiste a ouvrir des ports com, 1,2,3,4. elle a une interface visuelle, des check box.
Elle peut servir a allumer des lumières depuis l'ordi grace a un transistor.

Source / Exemple :


Private Sub Command1_Click()
    If Option1.Value = True Then
        If MSComm1.PortOpen = True Then
            MsgBox "Port déja ouvert"
        Else
            MSComm1.PortOpen = True
                 Pov.Visible = True
                 Po.Visible = True
                 Pfr.Visible = False
                  Pf.Visible = False
            
            
        End If
        End If
        
 If Option2.Value = True Then
        If MSComm2.PortOpen = True Then
            MsgBox "Port déja ouvert"
        Else
            MSComm2.PortOpen = True
                   Pov.Visible = True
                   Po.Visible = True
                   Pfr.Visible = False
                   Pf.Visible = False
        End If
        End If
 If Option3.Value = True Then
        If MSComm3.PortOpen = True Then
            MsgBox "Port déja ouvert"
        Else
            MSComm3.PortOpen = True
                Pov.Visible = True
                Po.Visible = True
                Pfr.Visible = False
                Pf.Visible = False
        End If
        End If

 If Option4.Value = True Then
        If MSComm4.PortOpen = True Then
            MsgBox "Port déja ouvert"
        Else
            MSComm4.PortOpen = True
                Pov.Visible = True
                Po.Visible = True
                Pfr.Visible = False
                Pf.Visible = False
        End If
        End If

End Sub

Private Sub Command2_Click()
 If Option1.Value = True Then
        If MSComm1.PortOpen = False Then
            MsgBox "Port déja fermé"
        Else
            MSComm1.PortOpen = False
                Pov.Visible = False
                Po.Visible = False
                Pfr.Visible = True
                Pf.Visible = True
        End If
        End If

 If Option2.Value = True Then
        If MSComm2.PortOpen = False Then
            MsgBox "Port déja fermé"
        Else
            MSComm2.PortOpen = False
                Pov.Visible = False
                Po.Visible = False
                Pfr.Visible = True
                Pf.Visible = True
        End If
        End If

 If Option3.Value = True Then
        If MSComm3.PortOpen = False Then
            MsgBox "Port déja fermé"
        Else
            MSComm3.PortOpen = False
                Pov.Visible = False
                Po.Visible = False
                Pfr.Visible = True
                Pf.Visible = True
        End If
        End If
        
 If Option4.Value = True Then
        If MSComm4.PortOpen = False Then
            MsgBox "Port déja fermé"
        Else
            MSComm4.PortOpen = False
                Pov.Visible = False
                Po.Visible = False
                Pfr.Visible = True
                Pf.Visible = True
        End If
        End If
End Sub

Conclusion :


Merci de noter ma source et d'ajouter d'éventuels Comentaires

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Erat78
Messages postés
3
Date d'inscription
samedi 16 juillet 2005
Statut
Membre
Dernière intervention
7 octobre 2006
-
Salut,
L'auteur parle de comander une lumière avec un transistor... Ce la (si je ne m'abuse) equivaut à utiliser une carte tout ou rien (la carte en moins!...). QQ pourrait il m'aiclairer a ce sujet...

Bonne journée
cs_ABF
Messages postés
228
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
26 avril 2012
-
Salut, Je ne pense pas que cette personne ait besoin de 3 commentaires ayant la même idée mais d'1 encouragement ou du suggestion, critique... du contenu de la source, de la matière.

Pour ma part je n'ais pas trop regardé : continue.
jean_marc_n2
Messages postés
170
Date d'inscription
jeudi 11 décembre 2003
Statut
Membre
Dernière intervention
24 janvier 2009
-
Hello Katsankat,

j'aurais adopté exactement la même approche :o); Au final, 2 fonctions sur command1 et command2 plus une ou 2 fonctions de service.
katsankat
Messages postés
577
Date d'inscription
vendredi 30 décembre 2005
Statut
Membre
Dernière intervention
12 juillet 2012
3 -
Salut, autre suggestion: récupérer l' index dans option_click() puis l' utiliser pour éviter la redondance du code. Voici comment j'aurais fait

private ID as integer

private sub option_click()
ID = index
end sub

private sub command_click()

dim FLAG as boolean

If MSComm(index).PortOpen = True Then
MsgBox "Port déja ouvert"
Else
MSComm(index).PortOpen = True

if ID=1 or ID=2 or ID=3 then FLAG=true
Pov.Visible = FLAG
Po.Visible = FLAG
Pfr.Visible = not FLAG
Pf.Visible = not FLAG
End If

end sub

Cette approche évite les tests de condition inutiles.
Le mieux étant de factoriser le code redondant avec une petite fonction:

private sub Ouverture(id as integer)
If MSComm(id).PortOpen = True Then
MsgBox "Port déja ouvert"
else
Pov.Visible = true
Po.Visible = true
Pfr.Visible = false
Pf.Visible = false
end if
end sub

le code en est simplifié:
private sub command_click()
Ouverture(ID)
end sub

Reste à intégrer le command2_click dans la fonction Ouverture() !
jean_marc_n2
Messages postés
170
Date d'inscription
jeudi 11 décembre 2003
Statut
Membre
Dernière intervention
24 janvier 2009
-
Hello,

Tes End If sont mal indentés, chaque Endif doit être sous son IF:

If tutu then
If toto then
' coucou
End If
End If

Ton code est inutilement dupliqué: Dans ce cas, on fait un tableau de controle:
MSComm(1), MScomm(2), etc ..

Il suffit de leur donner le même nom et de changer la propriété index: 0, 1, 2, 3.

Comme ça, plus de code dupliqué :-)

Bonne suite!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.