Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Datenauswertung von der Seriellen Schnittstelle (https://www.delphipraxis.net/6897-datenauswertung-von-der-seriellen-schnittstelle.html)

thorstenf01 26. Jul 2003 17:05


Datenauswertung von der Seriellen Schnittstelle
 
Hallo,
ich habe folgendes Problem:
Mein Programm fragt nach dem Start der Schaltuhr die Serielle Schnittstelle ab und liest permanent Spannungswerte ein, die ich
"irgendwie" protokollieren muß. Wie mache ich das, bzw. welche
"einfachen" Möglichkeiten gibt es?
Gruß
Thorsten

Daniel B 27. Jul 2003 01:49

Re: Datenauswertung von der Seriellen Schnittstelle
 
Hallo,

sag uns doch wie Du überhaup´t einliest, mit welcher Komponente machst Du das?

Um die ganzen Werte zu speichern könntest Du z.B. eine StringList nehmen, oder auch ein einfaches TextFile.

Grüsse, Daniel :hi:

thorstenf01 27. Jul 2003 11:26

Re: Datenauswertung von der Seriellen Schnittstelle
 
Hy!
Der Code zum Einlesen lautet:
Code:
procedure TForm3.FormCreate2(Sender: TObject);
var text: string ;
begin
 OpenCom(pchar('com2:9600,N,8,1'));
 Timer2.Interval := 1000;
 Timer2.Enabled := true;
 Label15.Caption:= TimeToStr (Time);
end;

procedure TForm3.Timer2Timer(Sender: TObject);
var Hour, Min, Sec, mSec: Word;
begin
 if Opencom(Pchar('COM2:9600,N,8,1')) = 0 then
 ShowMessage ('COM2 belegt');
 Label15.Caption:= TimeToStr (Time);
 DecodeTime(time, Hour, Min, Sec, mSec);
 RealTime (true);
 DTR (1);
 DTR (0);
 RealTime (false);

 if (Time > StrToTime (Edit2.Text)) and (Time < StrToTime (Edit3.Text)) then DTR (1);
 if (Time > StrToTime (Edit3.Text)) then DTR (0);
end;

function Zaehler: Double;
var Zeit : Double;
begin
  RealTime (true);
  DTR (1);
  TimeInitus;
  While(( CTS=1) and (TimeReadus < 50000)) do;
  Zeit:=TimeReadus;
  DTR (0);
  RealTime (false);
  Zaehler := Zeit;
end;

procedure Nullpunkt;
begin
  delay (500);
  Nullp := -(Zaehler/ln(1-Neg/(Pos+Neg)));
  Delay (500);
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
  OpenCom(pchar('com2:9600,N,8,1'));
  DTR(0);
  RTS (1);
  TXD (0);
  Timer1.Enabled := false;
  delay (500);
  Nullp := -(Zaehler/ln(1-Neg/(Pos+Neg)));
  Delay (500);
  Timer1.Enabled := false;
  Nullpunkt;
  Timer1.Enabled := true;
  Timer2.Interval := 1000;
  Timer2.Enabled := true;
  Label15.Caption:= TimeToStr (Time);
end;

procedure TForm3.Timer1Timer(Sender: TObject);
var Ausgabe:String;
    Zeit: Double;
    Spannung:Real;
begin
  Zeit := Zaehler;
  (*Spannung := (neg+Pos)*(1-exp(-Zeit/Nullp))-Neg;
  Spannung := round(Spannung*100)/100; *)
  Edit1.Text := floattostr(Spannung) + ' V';
end;

procedure TForm3.Button9Click(Sender: TObject);
begin
  Timer1.Enabled := false;
  Nullpunkt;
  Timer1.Enabled := true;
end;
Erläuterung: Durch eine Schaltuhr wird die Schnittstellenabfrage
gestartet und gestoppt und es werden von einer Platine (Analog/Digital
Umsetzeung) Spannungswerte eingelesen, die ich protokollieren muß.
Wie sieht denn das z.B mit StringList aus?
Gruß
Thorsten

Duffy 27. Jul 2003 11:34

Re: Datenauswertung von der Seriellen Schnittstelle
 
Hallo thorstenf01,
kleiner Tip am Rande
Async Professional
bye


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz