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 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 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 : 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é
Partager