REM REM Datalogger with FTP upload. WD1 rev 1 (c) Avisaro AG, 02.03.2010 REM ' Insert here FTP Server Information let ip$ = "www.avisaro.com" let port = 21 let usr$ = "p35753187-public" let pass$ = "avisaro!!" DIM A(1400) let re$ = "" let er = 0 let port2 = 0 let t_up = time 'if no battery if time < 10000 then exec "time 2009 01 01 00 00 01" end if sleep 1 inmode -3 outmode -2 print "Avisaro FTP Logger (WD1) Rev 2 (c) 2009 Avisaro AG" BEGIN: put -203, #1 REM Tasten entprellen if (KEYS & 1) = 1 then goto BEGIN end if if lof(0) = 0 then sleep 100 goto BEGIN end if open "AB", 1, "logdata.txt" if LASTERR <> 0 then open "WB", 1, "logdata.txt" if LASTERR <> 0 then goto BEGIN end if end if put -202, #1 let t = time let t_up = time + 15 do ' Daten von RS232 lesen und auf Karte schreiben INPUT A if BYTESREAD > 0 then put -202, #0 put 1, A, BYTESREAD end if if lof(0) = 0 or status(1) <> 2 then put -202, #0 close 1 goto BEGIN end if let w = status(-4) if (time > t_up) and (w = 1) then ' upload file to FTP Server put -203, #0 put -202, #1 let g = resolv(ip$) connect 101, g, port, 5 sleep 500 get 101, re$ let se$ = "USER " + usr$ gosub READ_RET let se$ = "PASS " + pass$ gosub READ_RET let se$ = "PASV" gosub READ_RET gosub GET_PORT let se$ = "TYPE I" gosub READ_RET let se$ = "APPE logdata.txt" sleep 500 gosub READ_RET if port2 = 0 then let er = 2001 goto FTP_ERR end if connect 102, g, port2, 5 while status(102) <> 9 let er = er + 1 if er > 1000 then goto FTP_ERR end if sleep 10 wend close 1 open "R", 1, "logdata.txt" READ_FILE: get 1, A if BYTESREAD > 0 then REPEAT: put 102, A, BYTESREAD if LASTERR <> 0 then sleep 10 let er = er + 1 if er > 1000 then goto FTP_ERR end if goto REPEAT else if status(102) <> 9 then let er = 1000 goto FTP_ERR end if let er = 0 goto READ_FILE end if end if FTP_ERR: let temp = lof(102) while temp > 0 sleep 10 let temp = lof(102) wend sleep 500 close 1 close 102 if er < 1000 then kill "logdata.txt" end if let se$ = "QUIT" + chr$(13) + chr$(10) gosub READ_RET close 101 let er = 0 put -203, #1 goto BEGIN end if REM Beenden ? if (KEYS & 1) = 1 then close 1 goto FIN_KEY end if if t < time then let t = time put -202, #1 end if loop FIN_KEY: REM Warten bis Taste nicht gedrückt if (KEYS & 1) = 1 then goto FIN_KEY end if FINISH: put -202, #1 REM Warten bis Karte entnommen oder Taste gedrückt let x = lof(0) if (x < 500) or ((KEYS & 1) = 1) then goto BEGIN else goto FINISH end if goto BEGIN READ_RET: let se$ = se$ + chr$(13) + chr$(10) put 101, se$ let ti = millis + 500 let re$ = "" let count = 0 while ti > millis get 101, temp$ if BYTESREAD > 0 then let count = count + BYTESREAD if count > 250 then let re$ = "" else let re$ = re$ + temp$ end if end if wend return GET_PORT: let p1$ = "" let p2$ = "" for n = 1 to (len(re$) -3) let temp$ = mid$(re$, n, 1) if temp$ = "," then let p2$ = p1$ let p1$ = "" else let p1$ = p1$ + mid$(re$, n, 1) end if next n let port2 = val(p2$) * 256 + val(p1$) return REM +++