' ' Script: Datenlogger MR3 "Ringspeicher" ' rev.6 (c) Avisaro AG, 15.11.2010 ' ' --------------------------------- ' Enter here max file size (in Byte) let m = 1000000 ' --------------------------------- inmode -3 outmode -2 DIM A(512) let e = 0 let t = time let wd = time let delet = 0 let creat = 0 let temp = 0 print "Avisaro Logger MR3 rev.6 (c) 2010 Avisaro AG" 'if no battery if time < 10000 then exec "time 2008 01 01 00 00 01" end if BEGIN: put -203, #1 INPUT A REM Tasten entprellen if (KEYS & 1) = 1 then put -203, #0 goto BEGIN end if sleep 1000 ' calc file sizes let si = lof(0) if (si = 0) then ' Karte nicht drin goto BEGIN end if sleep 1 inmode -1 sleep 1000 exec "mkdir logs" sleep 1000 inmode -3 gosub OPEN_FILE let x = status(1) if (x = 2) then put -202, #1 goto MAIN end if sleep 100 goto BEGIN MAIN: do ' Read data and write to file INPUT A if BYTESREAD > 0 then put -202, #0 put 1, A, BYTESREAD end if ' Check file status if t < time then put -202, #1 let t = time + 1 gosub OPEN_FILE if (e <> 0) then put -202, #0 goto BEGIN end if end if REM Beenden ? if (KEYS & 1) = 1 then close 1 put -202, #0 goto FIN_KEY end if loop FIN_KEY: REM Warten bis Taste nicht gedrückt if (KEYS & 1) = 1 then sleep 100 goto FIN_KEY end if FINISH: put -202, #0 sleep 100 REM Warten bis Karte entnommen oder Taste gedrückt let x = lof(0) if (x < 50) or ((KEYS & 1) = 1) then goto BEGIN else goto FINISH end if goto BEGIN OPEN_FILE: let wd = time + 5 let e = 0 let si = lof(0) if si = 0 then ' Karte nicht drin let e = 1 return end if load 0, creat load 5, delet ' Alte Dateien löschen ? KILLFILE: if wd < time then let e = 1 return end if if (delet < 10000) or (delet > 99998) then ' range check let delet = 10000 save 5, delet end if let temp$ = str$(delet) put -100, temp$ let temp$ = str$(creat) put -101, temp$ let size = lof(0) let used = loc(0) let free = size - used let temp$ = str$(size) put -102, temp$ let temp$ = str$(used) put -103, temp$ ' neue Karte ? -> Zeiger zurücksetzen if (size > 0) and (used < 200) then let creat = 1 let delet = 1 save 0, creat save 5, delet end if if free < (m/1000) then ' too little space for new file let k$ = str$(delet) let k$ = "logs/" + k$ + ".txt" kill k$ let delet = delet + 1 save 5, delet goto KILLFILE end if ' neue Datei erzeugen ? NEWFILE: if wd < time then let e = 1 return end if if (creat < 10000) or (creat > 99998) then ' range check let creat = 10000 save 0, creat end if close 1 let f$ = str$(creat) let f$ = "logs/" + f$ + ".txt" open "A", 1, f$ if (LASTERR <> 0) then open "W", 1, f$ if LASTERR <> 0 then ' didn't work out let e = 1 return end if end if put -104, f$ let size = lof(1) if size > m then let creat = creat + 1 save 0, creat goto NEWFILE end if return ' +++