Experimente mit ELEXS und Palmtop
VDiagram
Die 'Krönung' meiner RS232-Entwicklungen. Hiermit ist es nun tatsächlich möglich einen Spannungsverlauf aufzuzeichnen. Das Programm versteht 3 Kommandozeilenparameter:
Der erste gibt die Aufzeichnungsdauer an. Die Einheit ist Stunden. Der zweite gibt die Anzahl der darzustellenden Abschnitte an und der dritte, nach wie vielen Abschnitten ein dicker Strich gezeichnet werden soll.
Weniger als 10 Minuten sollte man nicht wählen, da sonst der Palmtop zu langsam ist.
Beispiele:
10 Minuten aufzeichnen: vdiagram 0.167 60 10
1 Stunde aufzeichnen: vdiagram 1 60 10
3 Tage aufzeichnen: vdiagram 72 72 24
1 Jahr aufzeichnen: vdiagram 8760 52 4
Code
program VDiagram;
uses RS232, Graph, Dos, CRT;
var
LeftBorder : Integer;
BottomBorder : Integer;
GrRangeWidth : Integer;
GrRangeHeight : Integer;
DMultiplicator : Real;
Raster : Integer;
RasterPart : Integer;
TimeRange : Real;
Hour : Word;
Minute : Word;
Second : Word;
Sec100 : Word;
TextStr : String;
GraficStr : String;
KeyChar : Char;
ErrorCode : Integer;
procedure Diagramm;
var
GraphDriver, Graphmode, i, j : Integer;
DelaySeconds : Real;
CheckHour : Word;
CheckMinute : Word;
CheckSecond : Word;
CheckSec100 : Word;
StartTimeSeconds : LongInt;
CheckTimeSeconds : LongInt;
begin
DelaySeconds := (TimeRange*3600)/GrRangeWidth;
StartTimeSeconds := Hour*3600 + Minute*60 + Second;
GraphDriver := Detect;
InitGraph (GraphDriver, GraphMode, '');
ClearDevice;
SetLineStyle (1, 0, 1);
Line (LeftBorder, 200 - BottomBorder - GrRangeHeight, LeftBorder + GrRangeWidth, 200 - BottomBorder - GrRangeHeight);
Line (LeftBorder + GrRangeWidth, 200 - BottomBorder, LeftBorder + GrRangeWidth, 200 - BottomBorder - GrRangeHeight);
SetLineStyle (0, 0, 3);
Line (LeftBorder, 200 - BottomBorder, LeftBorder + GrRangeWidth, 200 - BottomBorder);
Line (LeftBorder, 200 - BottomBorder, LeftBorder, 200 - BottomBorder - GrRangeHeight);
SetLineStyle (1, 0, 1);
for i := 1 to Raster - 1 do begin
if i mod RasterPart = 0 then begin
SetLineStyle (0, 0, 1);
end else begin
SetLineStyle (1, 0, 1);
end;
Line (LeftBorder + round (GrRangeWidth/Raster*i),
200 - BottomBorder,
LeftBorder + round (GrRangeWidth/Raster*i),
200 - BottomBorder - GrRangeHeight);
end;
SetLineStyle (1, 0, 1);
for i := 1 to 6 do begin
Line (LeftBorder,
200 - BottomBorder - round (GrRangeHeight/7*i),
LeftBorder + GrRangeWidth,
200 - BottomBorder - round (GrRangeHeight/7*i));
end;
SetTextJustify (1,2);
for i := 1 to 7 do begin
Str (i:1,TextStr);
OutTextXY (LeftBorder - 12, 200 - BottomBorder - round (GrRangeHeight/7*i), TextStr + 'V');
end;
Str (Hour, TextStr);
if length (TextStr) < 2 then TextStr := '0' + TextStr;
GraficStr := 'Startzeit: ' + TextStr;
Str (Minute, TextStr);
if length (TextStr) < 2 then TextStr := '0' + TextStr;
GraficStr := GraficStr + ':' + TextStr;
Str (Second, TextStr);
if length (TextStr) < 2 then TextStr := '0' + TextStr;
GraficStr := GraficStr + ':' + TextStr;
Str (TimeRange:5:2, TextStr);
GraficStr := GraficStr + ', Bereich: ' + TextStr + ' h';
SetTextJustify (1,2);
OutTextXY (170, 187, GraficStr);
SetLineStyle (0, 0, 1);
moveto (LeftBorder, 200 - BottomBorder - round (Steps*DMultiplicator));
i := 1;
repeat begin
Lineto (LeftBorder + i, 200 - BottomBorder - round (Steps*DMultiplicator));
inc (i);
repeat begin
GetTime (CheckHour, CheckMinute, CheckSecond, CheckSec100);
CheckTimeSeconds := CheckHour*3600 + CheckMinute*60 + CheckSecond;
end; until (CheckTimeSeconds >= (StartTimeSeconds + i*DelaySeconds)) or KeyPressed;
end; until (i = GrRangeWidth) or KeyPressed;
repeat until KeyPressed;
if KeyPressed then KeyChar := ReadKey;
CloseGraph;
end;
begin
LeftBorder := 20; (* 20 *)
BottomBorder := 20; (* 20 *)
GrRangeWidth := 619; (* 619 *)
GrRangeHeight := 180; (* 180 *)
DMultiplicator := GrRangeHeight/Cnts;
Val (paramstr (1), TimeRange, ErrorCode);
Val (paramstr (2), Raster, ErrorCode);
if Raster = 0 then Raster := 20;
Val (paramstr (3), RasterPart, ErrorCode);
if RasterPart = 0 then RasterPart := 5;
GetTime (Hour, Minute, Second, Sec100);
ClrScr;
Diagramm;
end.
Diese Seite wurde mit BrainStorm
generiert
Copyright ©
1991 - 2013 by Thomas Ell
|