Ciao a tutti,
sto scrivendo un piccolo programma di acquisizione dati che dovrà girare su un vecchio 486 e quindi in dos.
L'unico linguaggio che conosco (e anche poco) è il Qbasic.
Il programma legge i dati da una scheda di acquisizione dati collegata alla seriale.
Una volta che ha letto i dati li rappresenda a video e salva in un file solamente il valore di un solo canale analogico mettendo pure la data e l'ora.
Il tutto viene ripetuto ogni secondo in LOOP temporizzando con il comando SLEEP 1.
Noto purtroppo, anche dal file, che a volte il loop si ferma per un secondo di troppo e non capisco dove ho sbagliato..
Incollo di seguito il breve listato del programma e un pezzettino di file log generato.
Ciao, Alberto
OPEN "COM1:9600,N,8,1,rs,cs0,ds0" FOR RANDOM AS #10 ' apro la porta seriale
nomefile$ = "log.txt" 'assegno il nome al file .txt
OPEN nomefile$ FOR APPEND AS #20 'apro il file in scrittura progressiva
DO
i$ = INKEY$
IF i$ = CHR$(27) THEN END ' se viene premuto "ESC" termina il programma
CLS
PRINT "Press ESC to exit..."
a$ = "255"
PRINT #10, "**" + CHR$(VAL(a$)) + "#"; 'invio i dati sulla seriale
digital$ = INPUT$(1, #10) 'leggo gli ingressi digitali
ad1$ = INPUT$(1, #10) 'leggo l'ingresso analogico 1
ad2$ = INPUT$(1, #10) 'leggo l'ingresso analogico 2
PRINT "Ingressi ="; ASC(digital$) 'mostro il valore
PRINT "Convertitore A/D 1 ="; ASC(ad1$) 'mostro il valore
valore = (ASC(ad1$))
PRINT "Il valore nella variabile valore Š="; valore
valvolt = valore * 5 / 255
PRINT "Il risultato in Volt quindi Š di "; valvolt
valkw = valvolt * 400
PRINT "I volt letti x la costante che Š 400 = "; valkw
PRINT "Convertitore A/D 2 ="; ASC(ad2$)
PRINT TIME$
PRINT #20, DATE$, TIME$, valkw 'scrivo sul file i dati
SLEEP 1 'temporizzo l'intero ciclo ogni secondo
LOOP WHILE i$ = ""
CLOSE #10
CLOSE #20
END
log.txt
02-23-2009 21:30:38 39.21569
02-23-2009 21:30:39 39.21569
02-23-2009 21:30:41 39.21569
02-23-2009 21:30:42 39.21569
....
02-23-2009 21:34:36 86.27451
02-23-2009 21:34:37 94.11765
02-23-2009 21:34:39 78.43137