IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Ouverture d'une Socket sur VB6


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 66
    Points : 39
    Points
    39
    Par défaut Ouverture d'une Socket sur VB6
    Bonjour à tous ,

    Voila je suis débutant sur VB6 et je travaille actuellement sur une interface graphique qui me permettra de gérer différents capteurs (IR pour la détéction de mouvement et Magnétique pour l'ouverture d'une porte), afin de déterminer leur états.

    Pour y arriver j'utilise un récépteur RFxcom (433Mhz), que je connecte via ethernet sur un réseau local, j'ai ensuite ouvert une socket client sur VB6 avec une fenêtre qui me permet de rentrer le nom et l'adresse IP de ma socket.

    Pour le moment j'ai réussi à décoder puis traiter les infos envoyer par mes capteurs afin de savoir quant un capteur est en état d'alerte ou pas.
    J'ai donc créer une fenêtre de supervision qui me permet sur une image de savoir a quel endroit se situe mon capteur.

    Le petit problème que je rencontre aujourd'hui c'est que je voudrais forcer la connexion à ma socket quant je charge ma fenêtre de supervision...car autrement je ne reçoit pas mes infos capteurs.

    Ce travail est dans le cadre de mon stage, je vous remercie pour toutes vos réponses.

    Code fenêtre Supervision :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    Private flagtimer As Boolean
     
    Public capteurdir As String
     
     
    Private Type EnrCapteur
      cType As String * 1
      cUser As String * 5
      cAlive As String * 1
      cStatus As String * 1
      X As String * 5
      Y As String * 5
      TStamp As String * 15
    End Type
     
    Dim SensorSprite(1000) As TextBox
     
    Private Declare Function GetTickCount Lib "kernel32" () As Long
     
    Public Sub xWait2(ByVal MilsecToWait As Long)
        Dim lngEndingTime As Long
     
        lngEndingTime = GetTickCount() + (MilsecToWait)
        Do While GetTickCount() < lngEndingTime
            DoEvents
        Loop
    End Sub
     
    Private Sub Effacer_Click()
    message.Text = ""
    End Sub
     
    Private Sub Enr_Click()
          frmEnrsous.Show
    End Sub
     
    Private Sub form_activate()
           If flagtimer = False Then
              flagtimer = True
              Call Timer2_Timer
           End If
    End Sub
     
    Private Sub Form_load()
       frmSuper.Refresh
       Picture1.Picture = LoadPicture(App.Path & "\image\St-Just.bmp")
       flagtimer = False
     
     
     
       For I = 0 To 999
             Set SensorSprite(I) = Controls.Add("VB.Textbox", "SensorSprite" + Format(I))
             SensorSprite(I).Height = 135
             SensorSprite(I).width = 135
             SensorSprite(I).Top = 0
             SensorSprite(I).Left = 0
             SensorSprite(I).ZOrder 1
             SensorSprite(I).forecolor = &HFFFFFF
             SensorSprite(I).Visible = True
             SensorSprite(I).Enabled = False
             SensorSprite(I).BorderStyle = none
     
       Next
     
    End Sub
     
    Private Sub Form_Unload(Cancel As Integer)
        flagtimer = False
    End Sub
     
    Private Sub message_Change()
       If Len(message.Text) > 6000 Then
          message.Text = Left$(message, 4000)
       End If
    End Sub
     
     
     
    Private Sub Timer2_Timer()
    Dim fsensor As String
    Dim sensordata As EnrCapteur
    Dim snum As Integer
    Dim ffsensor As String
    Dim nbsensor As Integer
     
        nbsensor = 0
        While flagtimer = True
           fsensor = Dir(capteurdir + "*.txt")
           snum = 0
           Do While fsensor <> ""
              ffsensor = capteurdir + fsensor
              Open ffsensor For Random Access Read As #6 Len = Len(sensordata)
              Get #6, 1, sensordata
              Close #6
              If Trim(sensordata.cUser) <> "" Then
                SensorSprite(snum).Top = Val(sensordata.Y)
                SensorSprite(snum).Left = Val(sensordata.X)
                SensorSprite(snum).ZOrder 0
     
                If sensordata.cStatus = "A" Then
                  SensorSprite(snum).BackColor = &H3479CC
                Else
                  If sensordata.cStatus = "D" Then
                     SensorSprite(snum).BackColor = &H11FF00
                  Else
                     If sensordata.cStatus = "R" Then
                         SensorSprite(snum).BackColor = &H1000FF
                         message.Text = Format(Now) + " ALERTE UTILISATEUR " + sensordata.cUser + vbCrLf + message.Text
                     End If
                  End If
                End If
                If Val(Format(Now, "yyyyMMddHHmmss")) - Val(sensordata.TStamp) > 7200 Then
                  sensordata.cAlive = "N"
                  message.Text = Format(Now) + " capteur " + Left(fsensor, 6) + " INACTIF" + vbCrLf + message.Text
                  Open ffsensor For Random Access Write As #6 Len = Len(sensordata)
                  Put #6, 1, sensordata
                  Close #6
                End If
                If sensordata.cAlive = "A" Then
                  SensorSprite(snum).Text = "A"
                Else
                  SensorSprite(snum).BackColor = &H1FFFF
                  SensorSprite(snum).Text = sensordata.cStatus
                End If
     
                snum = snum + 1
              End If
              fsensor = Dir()   ' Get next sensor entry.
           Loop
           If snum < nbsensor Then
              For I = snum To nbsensor
                 SensorSprite(I).Top = 0
                 SensorSprite(I).Left = 0
                 SensorSprite(I).ZOrder 1
              Next
           End If
           nbsensor = snum
           Call xWait2(5000)
        Wend
    End Sub
    Code Connexion Socket :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    Public fesbridge As String
    Public capteurdir As String
     
    Private Type EnrEsbridge
      Num As String * 5
      label As String * 40
      AdresseIp As String * 36
    End Type
     
    Private Function find_first_free_num() As Integer 'permet de chercher un numéro disponible pour l'utilisateur
    Dim esb As EnrEsbridge
    Dim I As Integer
     
    esb.Num = ""
    esb.AdresseIp = ""
     
    If Dir(fesbridge) <> "" Then
       Open fesbridge For Random Access Read As #3 Len = Len(esb)
       For I = 1 To Int(LOF(3) / Len(esb))
          Get #3, I, esb
          If (esb.Num <> "" And Trim(esb.AdresseIp) = "") Then
             find_first_free_num = I
             Close #3
             Exit Function
          End If
       Next I
       find_first_free_num = I
       Close #3
       Exit Function
    End If
    find_first_free_num = -1
    End Function
     
    Private Sub Creer_Click()
        Dim esb As EnrEsbridge
        Dim fnum As Integer
     
            esb.label = label.Text
            esb.AdresseIp = AdresseIp.Text
            fnum = find_first_free_num()
            If fnum = -1 Then
               esb.Num = "1"
            Else
               esb.Num = Format(fnum)
            End If
            Open fesbridge For Random Access Write As #3 Len = Len(esb)
            Put #3, Val(esb.Num), esb
            Close #3
            Unload Me
     
    End Sub
     
    Private Sub Form_load()
    Dim I As Integer
    Dim esb As EnrEsbridge
     
    If Dir(fesbridge) <> "" Then
       Open fesbridge For Random Access Read As #3 Len = Len(esb)
       Let I = 1
       Do While Not EOF(3)
          Get #3, I, esb
          I = I + 1
          List1.AddItem (esb.Num + " " + esb.AdresseIp + " " + esb.label)
       Loop
       Close #3
    End If
    Creer.Enabled = False
    supprimer.Enabled = False
    esbStart.Enabled = False
    esbStop.Enabled = False
    If List1.ListCount = 0 Then
       Creer.Enabled = True
    End If
    End Sub
     
    Private Sub List1_Click()
        Dim esb As EnrEsbridge
        Dim lnum As Integer
        Dim esbw As String
     
        If (List1.Text <> "") Then
           Creer.Enabled = False
           supprimer.Enabled = True
           lnum = Format(Left$(List1.Text, 5))
           Open fesbridge For Random Access Read As #3 Len = Len(esb)
           Get #3, lnum, esb
           Close #3
           label.Text = Trim(esb.label)
           AdresseIp.Text = Trim(esb.AdresseIp)
           For I = Forms.Count - 1 To 1 Step -1
              esbw = Trim(Forms(I).Caption)
              If esbw = "EsbridgeRuntime_" + Trim(AdresseIp.Text) Then
                 esbStart.Enabled = False
                 esbStop.Enabled = True
                 Creer.Enabled = False
                 supprimer.Enabled = False
                 GoTo suite
              Else
                 esbStart.Enabled = True
                 esbStop.Enabled = False
              End If
           Next I
    suite:
        Else
           Creer.Enabled = True
           supprimer.Enabled = False
           esbStart.Enabled = False
           esbStop.Enabled = False
           label.Text = ""
           AdresseIp.Text = ""
        End If
     
    End Sub
     
     
     
    Private Sub esbStart_Click()
        Dim EsbR As New EsbRuntime
        Dim esb As EnrEsbridge
        Dim ipaddr As String
        Dim lnum As Integer
     
     
        If (List1.Text <> "") Then
           lnum = Format(Left$(List1.Text, 5))
           esb.Num = lnum
           esb.AdresseIp = ""
           esb.label = ""
           If Dir(fesbridge) <> "" Then
              Open fesbridge For Random Access Read As #3 Len = Len(esb)
              Get #3, Val(esb.Num), esb
              Close #3
           End If
           EsbR.Show vbModeless, Me
           EsbR.Caption = "EsbridgeRuntime_" + Trim(esb.AdresseIp)
           EsbR.capteurdir = capteurdir
     
           esbStart.Enabled = False
           esbStop.Enabled = True
        End If
     
    End Sub
     
    Private Sub esbStop_Click()
        Dim EsbR As New EsbRuntime
        Dim esb As EnrEsbridge
        Dim ipaddr As String
        Dim lnum As Integer
        Dim esbw As String
     
        If (List1.Text <> "") Then
           lnum = Format(Left$(List1.Text, 5))
           esb.Num = lnum
           esb.AdresseIp = ""
           esb.label = ""
           If Dir(fesbridge) <> "" Then
              Open fesbridge For Random Access Read As #3 Len = Len(esb)
              Get #3, Val(esb.Num), esb
              Close #3
           End If
           For I = Forms.Count - 1 To 1 Step -1
              esbw = Trim(Forms(I).Caption)
              If esbw = "EsbridgeRuntime_" + Trim(esb.AdresseIp) Then
                 Unload Forms(I)
                 esbStart.Enabled = True
                 esbStop.Enabled = False
                 GoTo suite_esbstop
              End If
           Next I
    suite_esbstop:
        '   EsbR.Show vbModeless, Me
         '  EsbR.Caption = "EsbridgeRuntime_" + Trim(esb.label)
        End If
     
    End Sub
     
    Private Sub Supprimer_Click()
        Dim esb As EnrEsbridge
        Dim lnum As Integer
     
        If (List1.Text <> "") Then
           lnum = Format(Left$(List1.Text, 5))
           esb.Num = lnum
           esb.AdresseIp = ""
           esb.label = ""
           If Dir(fesbridge) <> "" Then
              Open fesbridge For Random Access Read Write As #3 Len = Len(esb)
              Put #3, Val(esb.Num), esb
              Close #3
           End If
           Unload Me
        End If
    End Sub
    _________________________________________________________________

    BOUHARA Kamel
    Stagiaire Système Embarqué : ESECO SYSTEMS
    Constructeur de solutions Web 3.0 pour la sécurité

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Bonjour,

    Te répondre pour "ta socket" ne sont pas dans mes compétences, mais je peux te faire une petite remarque sur ta façon d'encoder.

    Le GOTO suite, imbriqué dans le for...next ne me semble pas une bonne chose

    Je ferai plutôt ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Private Sub List1_Click()
        Dim esb As EnrEsbridge
        Dim lnum As Integer
        Dim esbw As String
        
        If (List1.Text <> "") Then
                Creer.Enabled = False
                supprimer.Enabled = True
                lnum = Format(Left$(List1.Text, 5))
                Open fesbridge For Random Access Read As #3 Len = Len(esb)
                Get #3, lnum, esb
                Close #3
                label.Text = Trim(esb.label)
                AdresseIp.Text = Trim(esb.AdresseIp)
                For I = Forms.Count - 1 To 1 Step -1
                     esbw = Trim(Forms(I).Caption)
                     If esbw = "EsbridgeRuntime_" + Trim(AdresseIp.Text) Then
                                      esbStart.Enabled = False
                                      esbStop.Enabled = True
                                      Creer.Enabled = False
                                      supprimer.Enabled = False
                                      exit For
                                                                                            Else
                                      esbStart.Enabled = True
                                      esbStop.Enabled = False
                     End If
                Next I
                                   Else
                Creer.Enabled = True
                supprimer.Enabled = False
                esbStart.Enabled = False
                esbStop.Enabled = False
                label.Text = ""
                AdresseIp.Text = ""
        End If
    
    End Sub
    Plus simple et ... sans GOTO

    A+

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par iclic Voir le message
    Bonjour,

    Te répondre pour "ta socket" ne sont pas dans mes compétences, mais je peux te faire une petite remarque sur ta façon d'encoder.

    Le GOTO suite, imbriqué dans le for...next ne me semble pas une bonne chose

    Je ferai plutôt ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Private Sub List1_Click()
        Dim esb As EnrEsbridge
        Dim lnum As Integer
        Dim esbw As String
        
        If (List1.Text <> "") Then
                Creer.Enabled = False
                supprimer.Enabled = True
                lnum = Format(Left$(List1.Text, 5))
                Open fesbridge For Random Access Read As #3 Len = Len(esb)
                Get #3, lnum, esb
                Close #3
                label.Text = Trim(esb.label)
                AdresseIp.Text = Trim(esb.AdresseIp)
                For I = Forms.Count - 1 To 1 Step -1
                     esbw = Trim(Forms(I).Caption)
                     If esbw = "EsbridgeRuntime_" + Trim(AdresseIp.Text) Then
                                      esbStart.Enabled = False
                                      esbStop.Enabled = True
                                      Creer.Enabled = False
                                      supprimer.Enabled = False
                                      exit For
                                                                                            Else
                                      esbStart.Enabled = True
                                      esbStop.Enabled = False
                     End If
                Next I
                                   Else
                Creer.Enabled = True
                supprimer.Enabled = False
                esbStart.Enabled = False
                esbStop.Enabled = False
                label.Text = ""
                AdresseIp.Text = ""
        End If
    
    End Sub
    Plus simple et ... sans GOTO

    A+
    Pourquoi tu pense que sa irai mieux que mon GOTO ? ^^

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 243
    Points : 328
    Points
    328
    Par défaut
    Parce que les goto/gosub c'est maaaaaal

    En vb6, il vaut mieux réserver les goto aux traitements d'erreur (il n'y a pas de gestion d'exception alors on fait avec ce que l'on a ).

    Les goto/gosub pour une autre utilisation mènent à ce que l'on appelle du code spaghetti, à savoir du code dont il est (très) difficile de suivre le déroulement car en le lisant, tu passe ton temps à sauter d'un groupe de ligne à un autre (je te le laisse chercher sur google/wikipédia pour plus de détail).

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par 250rgv Voir le message
    Parce que les goto/gosub c'est maaaaaal

    En vb6, il vaut mieux réserver les goto aux traitements d'erreur (il n'y a pas de gestion d'exception alors on fait avec ce que l'on a ).

    Les goto/gosub pour une autre utilisation mènent à ce que l'on appelle du code spaghetti, à savoir du code dont il est (très) difficile de suivre le déroulement car en le lisant, tu passe ton temps à sauter d'un groupe de ligne à un autre (je te le laisse chercher sur google/wikipédia pour plus de détail).
    Merci pour l'info. !

Discussions similaires

  1. Ouverture d'une page sur le réseau local
    Par geriler dans le forum Firefox
    Réponses: 1
    Dernier message: 28/10/2008, 11h59
  2. Réponses: 2
    Dernier message: 26/07/2007, 09h17
  3. Téléchargement de fichier puis ouverture d'une page sur un clic
    Par gy0m76 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 04/12/2006, 12h32
  4. Forcé l'ouverture d'une feuille sur Excel
    Par Didpa dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/11/2006, 15h41
  5. Réponses: 2
    Dernier message: 07/01/2006, 12h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo