' ' MR5 "Sniffer" ' ' Datenlogger 2x RS232 Rev 7 (c) Avisaro AG, 23.02.2015 ' mit Zeitstempel und mit Loggen der RTS Leitungen ' ' ------------------------------------------------ ' max filesize in MByte let size = 500 ' ------------------------------------------------ ' Every Day a new File (1= yes, 0 = no) ? let new_file = 0 ' ------------------------------------------------ inmode -3 outmode -2 let size = size * 1000000 ' 2. Serielle Schnittstelle auxopen -4, 9600, asc("N"), 1, 8, asc("N") let opt_zeit = 1 let opt_cts = 1 exec "sched 0 fix" exec "sync 1000" DIM RX1(1) DIM RX2(1) DIM B(50) ' valid ? let RX1v = 0 let RX2v = 0 let C1_last = 33 let C1v = 0 let C2_last = 33 let C2v = 0 let file = 0 ' release RS485 put -207, #0 put -212, #0 let temp = 0 let E = 0 let D = 0 let mt = millis let t = time let n$ = date$ BEGIN: put -203, #1 REM Tasten entprellen if (KEYS & 1) = 1 then goto BEGIN end if gosub Datei_erzeugen if LASTERR <> 0 then ' Fifo leer lesen so lange keine Karte INPUT A get -4, A goto BEGIN end if put -202, #1 let mt = millis let n$ = date$ do REM Daten von RS232 lesen und auf Karte schreiben get -4, RX2 if BYTESREAD > 0 then let RX2v = 1 end if input RX1 if BYTESREAD > 0 then let RX1v = 1 end if get -211, temp if temp <> C1_last then let C1v = 1 let C1_last = temp end if get -208, temp if temp <> C2_last then let C2v = 1 let C2_last = temp end if if (RX1v = 1) or (RX2v = 1) or (C1v = 1) or (C2v = 1) then gosub store_data let RX1v = 0 let RX2v = 0 let C1v = 0 let C2v = 0 end if if (t < time) then ' volle Sekunde let t = time let mt = millis put -202, #1 if n$ <> date$ then let n$ = date$ let file = 0 if new_file = 1 then close 1 goto BEGIN end if end if if lof(1) > size then file = file + 1 if file < 254 then close 1 goto BEGIN end if end if let x = lof(0) REM Beenden ? if (x < 100) or ((KEYS & 1)= 1) then close 1 goto FIN_KEY end if 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, #0 REM Warten bis Karte entnommen oder Taste gedrückt let x = lof(0) if (x < 100) or ((KEYS & 1) = 1) then goto BEGIN else goto FINISH end if store_data: put -202, #0 if opt_zeit = 1 then let T$ = date$ + "; " + time$ + "; " let temp = millis let temp = temp - mt if temp > 999 then let temp = 0 end if if temp < 10 then let T$ = T$ + " " end if if temp < 100 then let T$ = T$ + " " end if let T$ = T$ + str$(temp) let T$ = T$ + "; " else let T$ = "" end if let T$ = T$ + "RX1; " if RX1v = 1 then let T$ = T$ + hex$(RX1(0),2) let T$ = T$ + "; " if RX1(0) < 10 then let T$ = T$ + " " end if if RX1(0) < 100 then let T$ = T$ + " " end if let T$ = T$ + str$(RX1(0)) if RX1(0) > 31 then let T$ = T$ + "; " + chr$(RX1(0)) else let T$ = T$ + "; " end if else let T$ = T$ + " ; ; " end if let T$ = T$ + "; " let T$ = T$ + "RX2; " if RX2v = 1 then let T$ = T$ + hex$(RX2(0),2) let T$ = T$ + "; " if RX2(0) < 10 then let T$ = T$ + " " end if if RX2(0) < 100 then let T$ = T$ + " " end if let T$ = T$ + str$(RX2(0)) if RX2(0) > 31 then let T$ = T$ + "; " + chr$(RX2(0)) else let T$ = T$ + "; " end if else let T$ = T$ + " ; ; " end if let T$ = T$ + "; " if opt_cts = 1 then let T$ = T$ + "CTS1; " if C1v = 1 then let T$ = T$ + str$(C1_last) let T$ = T$ + "; " else let T$ = T$ + " ; " end if let T$ = T$ + "CTS2; " if C2v = 1 then let T$ = T$ + str$(C2_last) let T$ = T$ + "; " else let T$ = T$ + " ; " end if end if put 1, T$ put 1, #13 put 1, #10 return Datei_erzeugen: exec "mkdir logs" let f$ = "logs/" let f$ = f$ + mid$(date$, 3 , 2) + mid$(date$, 6 , 2) + mid$(date$, 9 , 2) let f$ = f$ + hex$(file, 2) + ".txt" sleep 1 open "AB", 1, f$ if LASTERR <> 0 then open "WB", 1, f$ if LASTERR <> 0 then return end if end if return ' +++