Gambas France BETA


Pas de compte ? Incription

this expression cannot be a statement [GB2]

Ce sujet est résolu.

1
AuteurMessages
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 :santa:

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 ! :affraid:
J'ai bien écrit "de Bill" et non débile, certains pourrait se méprendre ! :P
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 :santa:
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 :santa:
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 .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.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 :santa:

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 .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.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 .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.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 .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.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. :sunny:
Je vais allez boire un coup de Champomy bien frais à la santé des gambassiennes et des Gambassiens.
Merci, merci, merci ......... . . . . merci :cheers:
Très cordialement Papy :santa:
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 ;)
1