Registriert seit: 31. Mai 2005
Ort: Lohra
9 Beiträge
Delphi 7 Personal
|
Re: Fortlaufenden Graph zeichnen lassen
6. Nov 2006, 20:21
Klappt irgendwie alles nicht so wirklich, wahrscheinlich liegt dann wohl der Fehler in einem anderen Teil der Prozedur, ich poste mal das gesamte Timerereignis... wahrscheinlich hab ich da wieder was vergessen
@Gausi:
Scheinbar vergesse ich bei deiner Version jedes mal was bestimmtes einzubauen, nur was...
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
Dezimalwert: byte;
Spannung, Widerstand, Temperatur: double;
ScrollRect, ClipRect: TRect;
begin
{if rand=false then} ix:=ix+2;
//Einlesen von Daten
{try
Dezimalwert:=ADEin;
except
dezimalwert:=random(30)+1;
end;}
//Zufällige DAten
dezimalwert:=random(10)+90;
Spannung:=(DezimalWert/255)*5;
Widerstand:=Spannung/Ik;
Temperatur:=25+(sqrt(k1*k1-4*k2+4*k2*(Widerstand/2000))-k1)/(2*k2);
label5.caption:=inttostr(Dezimalwert);
label6.caption:=floattostrf(Spannung,fffixed,6,2)+' V';
label7.caption:=floattostrf(Widerstand,fffixed,6,2)+' Ohm';
label8.caption:=floattostrf(Temperatur,fffixed,6,2)+' °C';
image1.Canvas.Pen.color:=clred;
if ix=5 then begin
image1.canvas.moveto(ix-2,image1.Height);
image1.Canvas.lineto(ix,image1.Height-trunc(Temperatur*4));
end else begin
image1.Canvas.MoveTo(ix-2,ypsilon);
image1.Canvas.LineTo(ix,image1.Height-trunc(Temperatur*4));
ypsilon:=image1.Height-trunc(Temperatur*4);
end;
//Wenn am Rand angekommen
if (ix>=image1.Width-2) then begin
//Einzelne Pixel Methode
{for i:=2 to image1.Width do begin
for j:=0 to image1.Height do begin
image1.Canvas.Pen.Color:=image1.Canvas.Pixels[i+1,j];
image1.Canvas.Pixels[i-1,j]:=image1.Canvas.Pixels[i+1,j];
image1.Canvas.Pen.Color:=image1.Canvas.Pixels[i,j];
image1.Canvas.Pixels[i-2,j]:=image1.Canvas.Pixels[i,j];
end;
end;}
//Andere
ScrollRect:=image1.BoundsRect;
ClipRect:=image1.BoundsRect;
ScrollDC(image1.Canvas.Handle, -2, 0, ScrollRect, ClipRect, 0, nil);
end;
end;
Markus
|
|
Zitat
|