PapyBasic | #1 Posté le 15/4/2014 à 08:48:23 |
---|
"Parfois l'obstination est une voie !" | Bonjour à toutes et à tous, que veut dire le message : "this expression cannot be a statement" ? Sous Gambas 2 Dans une feuille, neuf labels et un timer. Ce code devrait théoriquement permettre de lire les 8 voies retour d'un MAX 186 Via le port parallèle , branchements comme dans :
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
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
| ' Gambas class file
'*************************************************************************** ' ' ' ' ' This program is free software; you can redistribute it and/or modify ' it under the terms of the GNU General Public License as published by ' the Free Software Foundation; either version 1, or (at your option) ' any later version. ' ' This program is free software; you can redistribute it and/or modify ' it under the terms of the GNU General Public License as published by ' the Free Software Foundation; either version 1, or (at your option) ' any later version. ' ' This program is distributed in the hope that it will be useful, ' but WITHOUT ANY WARRANTY; without even the implied warranty of ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ' GNU General Public License for more details. ' ' You should have received a copy of the GNU General Public License ' along with this program; if not, write to the Free Software ' Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ' '*************************************************************************** 'AFFECTATION DES VARIABLESMesureSismoUn
PUBLIC LeA AS STRING PUBLIC ouinon AS STRING PUBLIC Tacoma AS STRING PUBLIC LePointDat AS STRING PUBLIC chemainMaison AS STRING PUBLIC GroupeDateHeure AS STRING PUBLIC hPort AS File PUBLIC Compteur AS FLOAT PUBLIC devport AS STRING = "/dev/port"
PUBLIC SUB _new()
END
PUBLIC SUB Form_Open() DIM Monfichier AS File timer1.enabled = TRUE Timer1.Delay = 0.1 '******************************************************************* ' création du nom du fichier ou sera enregistré le signal sismique GroupeDateHeure = Format$(Now, "yyyymmddhhnnss") 'création de la chaine identifiant le chemin chemainMaison = "/home/" LePointDat = ".tec" 'Tacoma est la chaine composée du chemin et du nom du fichier Tacoma = chemainMaison & GroupeDateHeure & LePointDat '***************************************************************** ' le delay du timer demarre à 100 ms
'***************************************************************** 'vérification de la présence du fichier Tacoma ' la variable ouinon est affectée de vraie ou faux ouinon = Exist(Tacoma) 'si la variable est affectée de faux alors IF ouinon = FALSE THEN 'creation et ouverture de Tacoma Monfichier = OPEN Tacoma FOR CREATE 'fermeture du fichier
CLOSE #Monfichier 'fin de condition END IF '&H00FF8000& 'Foreground Label1.background = &H00FF8000& Label2.background = &H00FF8000& Label3.background = &H00FF8000& Label4.background = &H00FF8000& Label5.background = &H00FF8000& Label6.background = &H00FF8000& Label7.background = &H00FF8000& Label8.background = &H00FF8000&
END 'Fonction pour ouvrir un le port entrees/sorties PUBLIC FUNCTION OpenPort() AS File DIM hPortOpen AS File hPortOpen = OPEN devport FOR READ WRITE RETURN hPortOpen END 'Fonction pour lire une valeur sur le port PUBLIC FUNCTION LecturePort(hPortRead AS File, adr AS INTEGER) AS INTEGER DIM valeurLue AS INTEGER
SEEK #hPortRead, adr READ #hPortRead, valeurLue RETURN valeurLue END 'Fonction pour ecrire une valeur sur le port PUBLIC FUNCTION EcrirePort(hPortWrite AS File, adr AS INTEGER, valeur AS INTEGER) SEEK #hPortWrite, adr WRITE #hPortWrite, valeur END 'Fonction pour fermer le port PUBLIC FUNCTION ClosePort(hPortClose AS File) CLOSE #hPortClose END PUBLIC SUB Timer1_Timer() DIM Monfichier AS File DIM hPortTimer AS File DIM n AS INTEGER DIM SelectionCanal186 AS INTEGER DIM NiveauLogiqueAdrsCanal AS INTEGER DIM bit AS INTEGER DIM B AS INTEGER DIM PilotMax AS INTEGER DIM Sortie AS INTEGER DIM U AS INTEGER DIM MesureSismoHt AS INTEGER DIM MesureSismoSt AS INTEGER DIM MesureSismoSx AS INTEGER DIM MesureSismoCq AS INTEGER DIM MesureSismoQu AS INTEGER DIM MesureSismoTr AS INTEGER DIM MesureSismoDe AS INTEGER DIM MesureSismoUn AS INTEGER DIM C AS INTEGER DIM comparateur AS INTEGER ' DIM Compteur AS Integer Compteur = Compteur + 1 'STOP IF Compteur = 1 THEN Label9.caption = "^"
IF Compteur = 2 THEN Label9.caption = ">"
IF Compteur = 3 THEN Label9.caption = "v" ""
IF Compteur = 4 THEN Label9.caption = "<"
IF Compteur = 4 THEN Compteur = 0
'WAIT 1 hPortTimer = OpenPort() ' toutes les lignes de d0 à d7 sont à 0 ' 8 voies 186 ordre vb2 ************************************* '************ DIM MesureSismoHt AS Integer ' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ''''''''''''''''''REM AB est l'adresse de base du port de communication ]
''''''''''''''''' OUT (Ab), 0 '************************************************************ ' toutes les lignes de d0 à d7 sont au niveau logique 0 EcrirePort(hPortTimer, &H378, 0) WAIT 0.001 '************************************************************ ' 8 voies 186 ordre vb2 ************************************* '************************************************************ ' n est integer ****************************************** '************************************************************ ' n compte pour huit de 0 à 7
FOR n = 0 TO 7
'************************************************************ ' 8 voies 186 ordre vb2 ************************************* '************************************************************ SelectionCanal186 = 7 - (n \ 2) - 4 * (n AND 1) '************************************************************
'************************************************************ ' 8 voies 186 ordre vb2 ************************************* '************************************************************
NiveauLogiqueAdrsCanal = 128 + 16 * SelectionCanal186 + 8 + 4 + 2 bit = 128 B = 0 FOR B = 0 TO 7 STOP IF (NiveauLogiqueAdrsCanal AND bit) = bit THEN (PilotMax = 2) ELSE (PilotMax = 0) 'END IF
'************************************************************ ' 8 voies 186 ordre vb2 ************************************* '************************************************************ 'OUT (Ab), PilotMax 'OUT (Ab), PilotMax + 4 'OUT (Ab), PilotMax 'bit = bit \ 2 '************************************************************ EcrirePort(hPortTimer, &H378, PilotMax) WAIT 0.001 EcrirePort(hPortTimer, &H378, PilotMax + 4) WAIT 0.001 EcrirePort(hPortTimer, &H378, PilotMax) WAIT 0.001 bit = bit \ 2 '*next B************************************************************** NEXT '*************************************************************** '************************************************************ ' 8 voies 186 ordre vb2 ************************************* '************************************************************ ' ************* bit = 2048 ' ************* sortie = 0 '**********************IF n = 0 THEN MesureSismoHt = U IF n = 0 THEN MesureSismoSt = U
IF n = 1 THEN MesureSismoSt = U
IF n = 2 THEN MesureSismoSx = U
IF n = 3 THEN MesureSismoCq = U
IF n = 4 THEN MesureSismoQu = U
IF n = 5 THEN MesureSismoTr = U
IF n = 6 THEN MesureSismoDe = U
IF n = 7 THEN MesureSismoUn = U
NEXT '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * bit = 2048 sortie = 0 '************************************************************ ' 8 voies 186 ordre vb2 ************************************* '************************************************************ ' ************* OUT (Ab), 4 ' ************* OUT (Ab), 0 '************************************************************ EcrirePort(hPortTimer, &H378, PilotMax + 4) WAIT 0.001 EcrirePort(hPortTimer, &H378, PilotMax) WAIT 0.001
'************************************************************ ' 8 voies 186 ordre vb2 ************************************* '************************************************************ ' ************* FOR B = 1 TO 16 '************************************************************ C = 0 FOR C = 1 TO 16 '************************************************************ ' 8 voies 186 ordre vb2 ************************************* '************************************************************ '** IF ((INP(Ab + 1) AND 32) = 32) THEN sortie = sortie + bit '************************************************************ IF ((LecturePort(hPortTimer, &H379) AND 32) = 32) THEN sortie = sortie + bit '************************************************************ ' 8 voies 186 ordre vb2 ************************************* '************************************************************ '** bit = bit \ 2 ****************************** '************************************************************ bit = bit \ 2 '************************************************************ ' 8 voies 186 ordre vb2 ************************************* '************************************************************ '** NEXT C **************************************** '************************************************************ NEXT '************************************************************ ' 8 voies 186 ordre vb2 ************************************* '************************************************************ '** IF n = 0 THEN MesureSismoHt = U '** IF n = 1 THEN MesureSismoSt = U '** IF n = 2 THEN MesureSismoSx = U '** IF n = 3 THEN MesureSismoCq = U '** IF n = 4 THEN MesureSismoQu = U '** IF n = 5 THEN MesureSismoTr = U '** IF n = 6 THEN MesureSismoDe = U '** IF n = 7 THEN MesureSismoUn = U '************************************************************
IF n = 0 THEN MesureSismoHt = U
IF n = 1 THEN MesureSismoSt = U
IF n = 2 THEN MesureSismoSx = U
IF n = 3 THEN MesureSismoCq = U
IF n = 4 THEN MesureSismoQu = U
IF n = 5 THEN MesureSismoTr = U
IF n = 6 THEN MesureSismoDe = U
IF n = 7 THEN MesureSismoUn = U
'************************************************************ ' 8 voies 186 ordre vb2 ************************************* '************************************************************ ' NEXT n ************************************* '************************************************************ 'NEXT
' affichage des datas sismiques dans huit étiquettes.
Label1.text = MesureSismoHt Label2.text = MesureSismoSt Label3.text = MesureSismoSx Label4.text = MesureSismoCq Label5.text = MesureSismoQu Label6.text = MesureSismoTr Label7.text = MesureSismoDe Label8.text = MesureSismoUn
'************************************************************************
'Lea est le groupe date heure au milieme LeA = Format$(Now, "yyyymmddhhnnssuu") 'Ouverture pour écriture du fichier toto en mode "tec" Monfichier = OPEN Tacoma FOR APPEND 'ecriture ligne par ligne du groupe date heure et du compteur PRINT #Monfichier, LeA, MesureSismoUn, MesureSismoDe, MesureSismoTr, MesureSismoQu, MesureSismoCq, MesureSismoSx, MesureSismoSt, MesureSismoHt CLOSE #Monfichier
'*****************************************************************************
ClosePort(hPortTimer) END
PUBLIC SUB Label1_MouseDown() END PUBLIC SUB Label2_MouseDown()
END
PUBLIC SUB PictureBox1_MouseDown()
END
|
C'est une tentative de modification d'un ancien code sous VB2 de chez Bill d'en face! Dans mon code , j'ai un blocage rédhibitoire à la ligne 202
1
| IF (NiveauLogiqueAdrsCanal AND bit) = bit THEN (PilotMax = 2) ELSE (PilotMax = 0)
|
De là le message d'erreur : "this expression cannot be a statement"
J'ai essayé pas mal de bidouillages, mais rien n'y fait ! La solution comme d'habitude est probablement simple , mais là je bloque ! Une fois terminé ce programme , la migration totale vers Linux prendra effectivement effet ! Je passerais toutes mes machines sous Linux ( j'ai malheureusement encore besoin pour travailler avec mes sismographes, d'un 98SE, d'un 2000 et d'un XP !) Mais comme je ne veux plus payer pour "sept" , "huit" ......9, 10 , 100 ,1000 !...... CQFD D'avance merci, Papy
|
PapyBasic | #2 Posté le 15/4/2014 à 09:13:24 |
---|
"Parfois l'obstination est une voie !" | Re bonjour, re le même , le noyau sous VB2, parlera plus à certains ?! ....
ATTENTION CODE EN VB2 de Bill d'en face ! J'ai bien écrit "de Bill" et non débile, certains pourrait se méprendre !
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
| '************************************************************************************************* ' ***** A T T E N T I O N P R O G R A M M E E N V B 2 ! ! ! ************** '************************************************************************************************* 'REM la syntaxe REM signifie que le texte qui suit cette mention n'est pas pris en compte par l'interpréteur ]
'REM pour des raisons pratiques je clos chaque ligne ayant un REM par le symbole suivant ]
'REM AB est l'adresse de base du port de communication ]
OUT (Ab), 0 'REM il faut interroger les huit canaux du max186, le zéro est actif ] rem**************************************************************************************** FOR n = 0 TO 7
SelectionCanal186 = 7 - (n \ 2) - 4 * (n AND 1)
NiveauLogiqueAdrsCanal = 128 + 16 * SelectionCanal186 + 8 + 4 + 2
bit = 128
FOR B = 0 TO 7
IF (NiveauLogiqueAdrsCanal AND bit) = bit THEN PilotMax = 2 ELSE PilotMax = 0
OUT (Ab), PilotMax
OUT (Ab), PilotMax + 4
OUT (Ab), PilotMax
bit = bit \ 2
NEXT B
bit = 2048: sortie = 0
FOR B = 1 TO 16
OUT (Ab), 4
OUT (Ab), 0
IF ((INP(Ab + 1) AND 32) = 32) THEN sortie = sortie + bit
bit = bit \ 2
NEXT B
'REM Pour l'affichage graphique sous QBasic & QuickBasic (480X640 avec SCREEN 12 ), il faut diviser la ' sortie par mille,]
'REM la valeur 4095 prend 409 ou 410 suivant que la variable sera arrondie en dessous ou au dessus ]
U = sortie / 1000
'REM la variable MesureSismoUn ,De,Tr ... est l'image numérique du signal analogique présent à l'entrée du MAX186 ]
'REM au moment où l'ordinateur interroge le canal correspondant ]
IF n = 0 THEN MesureSismoHt = U
IF n = 1 THEN MesureSismoSt = U
IF n = 2 THEN MesureSismoSx = U
IF n = 3 THEN MesureSismoCq = U
IF n = 4 THEN MesureSismoQu = U
IF n = 5 THEN MesureSismoTr = U
IF n = 6 THEN MesureSismoDe = U
IF n = 7 THEN MesureSismoUn = U
NEXT n
'***************************************************************************************************************
|
Merci à tous les courageux qui se pencheront sur ma maladie ! Cordialement Papy |
PapyBasic | #3 Posté le 15/4/2014 à 09:38:00 |
---|
"Parfois l'obstination est une voie !" | Dernier Détail, Gambas 2 et Ubuntu Lynx Lucid CPU 2.6 G RAM 1.4 G Cordialement Papy |
spheris | #4 Posté le 15/4/2014 à 09:50:18 |
---|
| PapyBasic, "this expression cannot be a statement" Je vois bien là une erreur de syntaxe. A) déjà, tu dois utiliser les retours à la ligne comme ceci :
1
2
3
4
5
6
7
| DIM Monbooleen AS BOOLEAN Monbooleen = NiveauLogiqueAdrsCanal AND bit IF Monbooleen = bit THEN PilotMax = 2 ELSE PilotMax = 0 END IF
|
res
B) Ensuite, je ne sais si cela est bien, mais j'ai pour habitude de ne pas mélanger des actions les unes imbriquées dans les autres. J'utilise donc une variable intermédiaire appelée Monbooleen.
Bon courage. |
PapyBasic | #5 Posté le 15/4/2014 à 09:57:59 |
---|
"Parfois l'obstination est une voie !" | Bonjour Sphéris et un grand merci pour ta réponse véloce ! Déjà, je suis nul en anglais ( Dans un proportion qui permet d'entrevoir la notion d'infini !). Mais ta réponse :
B) Ensuite, je ne sais si cela est bien, mais j'ai pour habitude de ne pas mélanger des actions les unes imbriquées dans les autres. J'utilise donc une variable intermédiaire appelée Monbooleen. "Mélanger les actions les unes dans les autres" ? Tu parles des boucles imbriquées ? De mon coté, c'est le brouillard ! Je vais de ce pas appliquer ta solution, et que cela fonctionne ou non, je fais un retour de résultat sur le forum. Très cordialement , Papy |
Reivillo | #6 Posté le 16/4/2014 à 02:21:18 |
---|
C' est ici, et nul part ailleurs. « Et pis c'est tout ! » | Bonjour PapyBasic.
Enlever les Parenthèses après < THEN > et < ELSE >1
| IF (NiveauLogiqueAdrsCanal AND bit) = bit THEN PilotMax = 2 ELSE PilotMax = 0
|
Avec les Parenthèses, j'ai la même erreur que toi. Sans, ça passe. Plus d'erreur.
Reivillo.
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015) LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr LÀ.Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous... sudo add-apt-repository ppa:gambas-team/gambas3sudo apt-get updatesudo apt-get install gambas3 -yGambas3.8.4-57.47 ( Mise à Jour Auto via mintupdate le 28-01-2016) Pour la Doc, c'est vers là: Documentation Gambas3 FR |
PapyBasic | #7 Posté le 16/4/2014 à 16:50:04 |
---|
"Parfois l'obstination est une voie !" | Salut Reivillo, diantre 2h21 du matin ! Ne fait pas d’insomnie pour moi ! Quand je pose le code comme tu le propose, j'ai un message : "Unexpected ELSE à la ligne 202 dans Fmain.class" Et là, je me dit "Pépère, il faut faire venir l'exorciste ! Le clavier, il a le diable au (là les enfants vous y collez ce que vous voulez ! )." Même avec la solution à Sphéris, je n'obtient rien ! Pire, j'ai eu un doute sur le matériel, je suis revenu(hélas) à ouinouin 98se sous VB2 et là misère de misère , tout fonctionne ! A s'arracher les quelques rares cheveux qui daignent pousser sur mon auguste crâne ( Auguste le clown, par l'empereur, faut pas dec.....ner non plus !). Donc coté matériel, cela fonctionne chez Bill la porte ! Je précise que je suis Root , avec Gambas2 et Ubuntu ( minimum 10.04). J’évolue sur 3 machines différentes, pour tester , une quatrième est prévue avec une distribution qui porte un nom du genre "mint" ou approchant. Mais je n'ai pas encore gravé l'image ISO. Cordialement Papy
|
PapyBasic | #8 Posté le 16/4/2014 à 16:54:50 |
---|
"Parfois l'obstination est une voie !" | Re bonjour Reivillo ! Gag, je lis à l'instant la ligne verte de ton courrier ! "LinuxMint13" ! Pour compléter mon dernier courrier ! Cordialement Papy |
Reivillo | #9 Posté le 16/4/2014 à 17:49:18 |
---|
C' est ici, et nul part ailleurs. « Et pis c'est tout ! » | Re...
Dans le Code à spheris, salut à lui; il y a peut-être ambiguïté, ligne 2.
Alors, fait ce Bloc < IF >1
2
3
4
5
| IF (NiveauLogiqueAdrsCanal AND bit) = bit THEN PilotMax = 2 ELSE PilotMax = 0 ENDIF
|
Ca passe sans Erreur chez nous.
Le IF en une seule ligne fonctionne, si l'on a qu'une seule instruction derrière le THEN, et si un ELSE suit, il doit avoir aussi qu'une seule instruction. Dans les autres cas, passer par un bloc. De toute façon un Bloc est toujours plus lisible, au premier coup d' oeil...
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015) LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr LÀ.Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous... sudo add-apt-repository ppa:gambas-team/gambas3sudo apt-get updatesudo apt-get install gambas3 -yGambas3.8.4-57.47 ( Mise à Jour Auto via mintupdate le 28-01-2016) Pour la Doc, c'est vers là: Documentation Gambas3 FR |
Reivillo | #10 Posté le 16/4/2014 à 17:56:21 |
---|
C' est ici, et nul part ailleurs. « Et pis c'est tout ! » | Au fait, on a un Portablosaure sous Ubuntu 10.04, avec GB2, et GB3, (Pas disponible actuellement)... Verrai dans la soirée.
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015) LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr LÀ.Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous... sudo add-apt-repository ppa:gambas-team/gambas3sudo apt-get updatesudo apt-get install gambas3 -yGambas3.8.4-57.47 ( Mise à Jour Auto via mintupdate le 28-01-2016) Pour la Doc, c'est vers là: Documentation Gambas3 FR |
Reivillo | #11 Posté le 16/4/2014 à 18:41:27 |
---|
C' est ici, et nul part ailleurs. « Et pis c'est tout ! » | Test exécuté avec GB2 sur Ubuntu 10.04.
Mon dernier CODE (Post #9), passe, ainsi que celui de spheris. Le IF, sur une seule ligne Passe Pas en GB2. Si tu as toujours un Bogue, poste nous ton Bloc IF, avec si possible l'Erreur retournée.
PS: Edite ton premier Message, et ajoute [GB2], devant le Titre. Les intervenants seront informés, que tu es sous Gambas2.
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015) LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr LÀ.Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous... sudo add-apt-repository ppa:gambas-team/gambas3sudo apt-get updatesudo apt-get install gambas3 -yGambas3.8.4-57.47 ( Mise à Jour Auto via mintupdate le 28-01-2016) Pour la Doc, c'est vers là: Documentation Gambas3 FR |
PapyBasic | #12 Posté le 16/4/2014 à 19:25:11 |
---|
"Parfois l'obstination est une voie !" | MERCI ! Ce mot de quelques lettres contient plein d'émotions. Voici le code qui fonctionne. Pour information, j'avais un doute sur un câble parallèle. 100% de mon informatique est du recyclage. Et parfois présente certains aléas. Donc ce soir, j'ai adopté les modifications que vous m'avez conseillées.
Dans une feuille , 10 labels et un timer. Nous sommes root et nous avons Port dans Dev.
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
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
| ' Gambas class file
'*************************************************************************** ' ' ' ' ' This program is free software; you can redistribute it and/or modify ' it under the terms of the GNU General Public License as published by ' the Free Software Foundation; either version 1, or (at your option) ' any later version. ' ' This program is free software; you can redistribute it and/or modify ' it under the terms of the GNU General Public License as published by ' the Free Software Foundation; either version 1, or (at your option) ' any later version. ' ' This program is distributed in the hope that it will be useful, ' but WITHOUT ANY WARRANTY; without even the implied warranty of ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ' GNU General Public License for more details. ' ' You should have received a copy of the GNU General Public License ' along with this program; if not, write to the Free Software ' Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ' '*************************************************************************** 'AFFECTATION DES VARIABLESMesureSismoUn
PUBLIC LeA AS STRING PUBLIC ouinon AS STRING PUBLIC Tacoma AS STRING PUBLIC LePointDat AS STRING PUBLIC chemainMaison AS STRING PUBLIC GroupeDateHeure AS STRING PUBLIC hPort AS File PUBLIC Compteur AS FLOAT PUBLIC devport AS STRING = "/dev/port"
PUBLIC SUB _new()
END
PUBLIC SUB Form_Open() DIM Monfichier AS File timer1.enabled = TRUE Timer1.Delay = 0.1 '******************************************************************* ' création du nom du fichier ou sera enregistré le signal sismique GroupeDateHeure = Format$(Now, "yyyymmddhhnnss") 'création de la chaine identifiant le chemin chemainMaison = "/home/" LePointDat = ".tec" 'Tacoma est la chaine composée du chemin et du nom du fichier Tacoma = chemainMaison & GroupeDateHeure & LePointDat '***************************************************************** ' le delay du timer demarre à 100 ms
'***************************************************************** 'vérification de la présence du fichier Tacoma ' la variable ouinon est affectée de vraie ou faux ouinon = Exist(Tacoma) 'si la variable est affectée de faux alors IF ouinon = FALSE THEN 'creation et ouverture de Tacoma Monfichier = OPEN Tacoma FOR CREATE 'fermeture du fichier
CLOSE #Monfichier 'fin de condition END IF '&H00FF8000& 'Foreground Label1.background = &H00FF8000& Label2.background = &H00FF8000& Label3.background = &H00FF8000& Label4.background = &H00FF8000& Label5.background = &H00FF8000& Label6.background = &H00FF8000& Label7.background = &H00FF8000& Label8.background = &H00FF8000&
END 'Fonction pour ouvrir un le port entrees/sorties PUBLIC FUNCTION OpenPort() AS File DIM hPortOpen AS File hPortOpen = OPEN devport FOR READ WRITE RETURN hPortOpen END 'Fonction pour lire une valeur sur le port PUBLIC FUNCTION LecturePort(hPortRead AS File, adr AS INTEGER) AS INTEGER DIM valeurLue AS INTEGER
SEEK #hPortRead, adr READ #hPortRead, valeurLue RETURN valeurLue END 'Fonction pour ecrire une valeur sur le port PUBLIC FUNCTION EcrirePort(hPortWrite AS File, adr AS INTEGER, valeur AS INTEGER) SEEK #hPortWrite, adr WRITE #hPortWrite, valeur END 'Fonction pour fermer le port PUBLIC FUNCTION ClosePort(hPortClose AS File) CLOSE #hPortClose END PUBLIC SUB Timer1_Timer()
DIM Monfichier AS File DIM hPortTimer AS File DIM n AS INTEGER DIM SelectionCanal186 AS INTEGER DIM NiveauLogiqueAdrsCanal AS INTEGER DIM bit AS INTEGER DIM B AS INTEGER DIM PilotMax AS INTEGER DIM Sortie AS INTEGER DIM U AS INTEGER DIM MesureSismoHt AS INTEGER DIM MesureSismoSt AS INTEGER DIM MesureSismoSx AS INTEGER DIM MesureSismoCq AS INTEGER DIM MesureSismoQu AS INTEGER DIM MesureSismoTr AS INTEGER DIM MesureSismoDe AS INTEGER DIM MesureSismoUn AS INTEGER DIM C AS INTEGER DIM comparateur AS INTEGER DIM Monbooleen AS BOOLEAN DIM Monboubouleen AS BOOLEAN
Compteur = Compteur + 1 IF Compteur = 1 THEN Label9.caption = "^" IF Compteur = 2 THEN Label9.caption = ">" IF Compteur = 3 THEN Label9.caption = "v" "" IF Compteur = 4 THEN Label9.caption = "<" IF Compteur = 4 THEN Compteur = 0
hPortTimer = OpenPort() EcrirePort(hPortTimer, &H378, 0)
FOR n = 0 TO 7 SelectionCanal186 = 7 - (n \ 2) - 4 * (n AND 1)
NiveauLogiqueAdrsCanal = 128 + 16 * SelectionCanal186 + 8 + 4 + 2 bit = 128
FOR B = 0 TO 7 '''' Deuze sous n Label10.caption = NiveauLogiqueAdrsCanal Label11.caption = bit 'WAIT 0.1 IF (NiveauLogiqueAdrsCanal AND bit) = bit THEN PilotMax = 2 ELSE PilotMax = 0 ENDIF 'Monbooleen = NiveauLogiqueAdrsCanal AND bit '' WAIT 0.3 'IF Monbooleen = bit THEN 'PilotMax = 2 'ELSE ' PilotMax = 0 'END IF EcrirePort(hPortTimer, &H378, PilotMax) 'WAIT 0.001 EcrirePort(hPortTimer, &H378, PilotMax + 4) 'WAIT 0.001 EcrirePort(hPortTimer, &H378, PilotMax) 'WAIT 0.001 bit = bit \ 2 NEXT ' fin deuze sous n
bit = 2048 Sortie = 0 FOR C = 1 TO 16 ''''trois sous n EcrirePort(hPortTimer, &H378, 4) ' WAIT 0.0001 EcrirePort(hPortTimer, &H378, 0) 'Monboubouleen = (LecturePort(hPortTimer, &H379) AND 32) 'IF Monbooleen = 32 THEN ' Sortie = Sortie + bit 'END IF IF (LecturePort(hPortTimer, &H379) AND 32) = 32 THEN Sortie = Sortie + bit ' IF ((LecturePort(hPortTimer, &H379) AND 32) = 32) THEN Sortie = Sortie + bit 'IF ((LecturePort(hPortTimer, &H379) AND 32) = 32) THEN STOP bit = bit \ 2 NEXT U = Sortie IF n = 0 THEN MesureSismoHt = U IF n = 1 THEN MesureSismoSt = U IF n = 2 THEN MesureSismoSx = U IF n = 3 THEN MesureSismoCq = U IF n = 4 THEN MesureSismoQu = U IF n = 5 THEN MesureSismoTr = U IF n = 6 THEN MesureSismoDe = U IF n = 7 THEN MesureSismoUn = U
Label1.text = MesureSismoHt Label2.text = MesureSismoSt Label3.text = MesureSismoSx Label4.text = MesureSismoCq Label5.text = MesureSismoQu Label6.text = MesureSismoTr Label7.text = MesureSismoDe Label8.text = MesureSismoUn
LeA = Format$(Now, "yyyymmddhhnnssuu") Monfichier = OPEN Tacoma FOR APPEND PRINT #Monfichier, LeA, MesureSismoUn, MesureSismoDe, MesureSismoTr, MesureSismoQu, MesureSismoCq, MesureSismoSx, MesureSismoSt, MesureSismoHt CLOSE #Monfichier
NEXT
ClosePort(hPortTimer) END
PUBLIC SUB Label1_MouseDown() END PUBLIC SUB Label2_MouseDown()
END
PUBLIC SUB PictureBox1_MouseDown()
END
|
Là ce soir cela fonctionne merveilleusement bien. Je vais allez boire un coup de Champomy bien frais à la santé des gambassiennes et des Gambassiens. Merci, merci, merci ......... . . . . merci Très cordialement Papy |
PapyBasic | #13 Posté le 16/4/2014 à 20:01:28 |
---|
"Parfois l'obstination est une voie !" | Je suis désolé, j'ai oublié de précisé en entrée de code qu'il est bien question de Gambas 2 ! Cela n'enlève rien à ma joie de pouvoir avancer ! Très cordialement Papy |
spheris | #14 Posté le 18/4/2014 à 10:39:25 |
---|
| Ravi de pouvoir avoir pu sortir une crevette de derrière les rochers |