{$MODE DELPHI} Program Acht_Kanal_schreiben; uses keyboard, synaser, sysutils, crt; var z:string; kanal, temp: array [1..8] of real; i,j:integer; RT,RN,V:real; a,b,c,d:real; datei:text; datname:string; intervall:integer; Function readchannel:string; var ser:TBlockSerial; zeile:string; i,j:integer; t:boolean; begin ser:=TBlockserial.Create; ser.RaiseExcept:=false; ser.Connect('COM21'); {Hier die richtige Schnittstelle eintragen!} ser.Config(115200,8,'N',SB1,false,false); t:=ser.canwrite(-1); zeile:=''; repeat t:=ser.canwrite(1000); ser.sendstring('s9'); {Kommandostring fr 10-Bit Wandler! Bei 12-Bit-Wandler ndern in 'c9'#} sleep(100); t:=ser.canread(1000); zeile:=ser.Recvpacket(1000); until zeile<>''; readchannel:=zeile; ser.Free; end; Begin clrscr; RN:=47;{Nennwiderstand des Fhlers von Acurite oder Ikea} a:=0.003337; b:=0.000251911; c:=0.00000351094; d:=0.000000110518; write('Dateiname:');Readln(datname); {Datei wird auf D:\ gespeichert. Fr andere Laufwerke alle d:\ ersetzen} If fileexists('d:\'+ datname+'.csv') then begin datname:=datname+'_1'; Writeln ('Datei existiert, Name gendert in: ', datname); end; write('Messintervall in Sekunden:');Readln(intervall); assign(datei, 'd:\'+ datname+'.csv'); rewrite(datei); writeln (Datei,'Uhrzeit;Kanal 1;Kanal 2;Kanal 3;Kanal 4;Kanal 5;Kanal 6;Kanal 7;Kanal 8'); repeat for i:=1 to 8 do kanal[i]:=0; for i:= 1 to 5 do begin z:=readchannel; kanal[1]:=kanal[1]+ 2*(256*ord(z[1]) + ord(z[2])); kanal[2]:=kanal[2]+ 2*(256*ord(z[3]) + ord(z[4])); kanal[3]:=kanal[3]+ 2*(256*ord(z[5]) + ord(z[6])); kanal[4]:=kanal[4]+ 2*(256*ord(z[7]) + ord(z[8])); kanal[5]:=kanal[5]+ 2*(256*ord(z[9]) + ord(z[10])); kanal[6]:=kanal[6]+ 2*(256*ord(z[11]) + ord(z[12])); kanal[7]:=kanal[7]+ 2*(256*ord(z[13]) + ord(z[14])); kanal[8]:=kanal[8]+ 2*(256*ord(z[15]) + ord(z[16])); end; for i:=1 to 8 do kanal[i]:=kanal[i]/5; For j:=1 to 8 do begin RT:=(kanal[j]/(4970-kanal[j])*200);{4970mV Versorgungsspannung der Spannungsteiler. Bei externer Speisung anpassen!} v:=RT/RN; if v<>0 then temp[j]:= -273+1/(a+b*ln(v)+c*ln(v)*ln(v)+d*ln(v)*ln(v)*ln(v)) else temp[j]:=99999; end; write (datei, timetostr(now)); for j:=1 to 8 do write(datei,';',temp[j]:3:2); writeln(datei); writeln (timetostr(now),' | ', temp[8]:3:2,'C Kanal 8 | ', temp[7]:3:2,'C Kanal 7'); {Nur dass man was sieht die Kanle 7 und 8} sleep (1000*intervall); until keypressed; {Messung wird beendet, wenn eine Taste gedrckt wird} close (datei); end.