⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guofuhe.pas

📁 过负荷记录仪器分为单片机数据采集器和微机数据分析记录数据库软件两部分。 仪器具有监视变压器负荷电流(通过改变传感器也可记录最低电压)并自动记录过负荷电流出现的开始时间
💻 PAS
字号:
unit guofuhe;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, TComm1, StdCtrls, ExtCtrls, DB, DBTables,
  DBCtrls, jpeg, ComCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    Comm1: TComm;
    btchaxun: TButton;
    bttongji: TButton;
    Button4: TButton;
    DBGrid1: TDBGrid;
    Panel2: TPanel;
    Splitter1: TSplitter;
    DBGrid2: TDBGrid;
    Table1: TTable;
    DataSource1: TDataSource;
    DataSource2: TDataSource;
    Table2: TTable;
    Query1: TQuery;
    DSquery: TDataSource;
    Button6: TButton;
    Panel3: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Timer1: TTimer;
    procedure Button4Click(Sender: TObject);
    procedure Comm1ReceiveData(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure btchaxunClick(Sender: TObject);
    procedure bttongjiClick(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
   
  private
    { Private declarations }
  public
    
    { Public declarations }
  end;

var
  Form1: TForm1;
  ReceiveStr,start:string;
  bytereceive:array[0..3630] of  Byte;
  ap:TStringList;{字符串列表变量}
  ax,bx:string;
  AppPath:string;
implementation
uses chaxun,tongji,HTMLHelp_Decl;
{$R *.dfm}

procedure TForm1.Button4Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Comm1ReceiveData(Sender: TObject);
var
  xiang,startime,maxtime,endtime,temp:string;
  bufb:Byte;
  PT:PByte;
  sjjc:boolean;
  timejc:Tdatetime;
  dotpos,max,count,i:integer;
begin
if start<>'!' then
  begin
  start:=comm1.Input;
  label3.Visible :=true ;
 
  end
else begin
comm1.InputLen :=3624;
count:=comm1.ReadInputByte(PT);
//progressbar1.StepIt ;
for i:=0 to 3623 do
  begin
   bytereceive[i]:=PT^;
   Inc(PT);
  end;
for i:=0 to 150 do
 begin

    sjjc:=false;
    
    xiang:=Chr(bytereceive[i*24+0]);
    if (xiang<>'A')and (xiang<>'B') then sjjc:=true;
    startime:=inttohex(bytereceive[i*24+7],2)+ '-'
         + inttohex(bytereceive[i*24+5],2)+'-'
         + inttohex(bytereceive[i*24+6],2)+' '
         +inttohex(bytereceive[i*24+3],2)+':'
         +inttohex(bytereceive[i*24+2],2)+':'+inttohex(bytereceive[i*24+1],2);
    timejc:=strtodatetimedef(startime,0);
    if timejc=0 then sjjc:=true;
    max:=bytereceive[i*24+8]*256+bytereceive[i*24+9];
    if max>2006 then sjjc:=true;
    maxtime:=inttohex(bytereceive[i*24+16],2)+ '-'
         + inttohex(bytereceive[i*24+14],2)+'-'
         + inttohex(bytereceive[i*24+15],2)+' '
         +inttohex(bytereceive[i*24+12],2)+':'
         +inttohex(bytereceive[i*24+11],2)+':'+inttohex(bytereceive[i*24+10],2);
    timejc:=strtodatetimedef(maxtime,0);
    if timejc=0 then sjjc:=true;
    endtime:=inttohex(bytereceive[i*24+23],2)+ '-'
         + inttohex(bytereceive[i*24+21],2)+'-'
         + inttohex(bytereceive[i*24+22],2)+' '
         +inttohex(bytereceive[i*24+19],2)+':'
         +inttohex(bytereceive[i*24+18],2)+':'+inttohex(bytereceive[i*24+17],2);
    timejc:=strtodatetimedef(endtime,0);
    if timejc=0 then sjjc:=true;
    temp:=stringreplace(startime,'-','/',[rfreplaceall]);
    temp:=copy(temp,4,5)+'/'+copy(temp,1,2)+copy(temp,9,9);
    if not sjjc then
       begin
         query1.Close ;
         query1.RequestLive :=true;
         if xiang='A' then
           begin
             query1.DatabaseName :='ax';
             query1.SQL.Text := 'select * from axiang where 开始时间 ="'+ temp+'"';
             dsquery.DataSet :=table1;
           end
         else begin
             query1.DatabaseName :='bx';
             query1.SQL.Text :='select *from bxiang where 开始时间 ="'+ temp+'"';
             dsquery.DataSet :=table2;
           end;
         query1.Open;
         if query1.RecordCount <=0 then
           begin
             query1.Append;
             query1.FieldByName('开始时间').AsDateTime:=strtodatetime(startime);
             query1.FieldByName('最大值').AsFloat :=max;
             query1.FieldByName('结束时间').AsDateTime:=strtodatetime(endtime);
             query1.Post;
             table1.Refresh;
             table2.Refresh;
           end;

     end;


   end;
label3.Visible :=false;
comm1.Free;
end;
(*buf:=comm1.Input ;
//bufb:=strtoint(buf);
ReceiveStr:=receivestr+buf;
if Pos('!',ReceiveStr)<1 then exit
else
  begin
      query1.Close ;
      query1.RequestLive :=true;
      ReceiveStr:=copy(ReceiveStr,1,Length(receivestr)-1);
      dotpos:=Pos(',',ReceiveStr);
      xiang:=copy(ReceiveStr,1,dotpos-1);
      ReceiveStr:=copy(ReceiveStr,dotpos+1,length(ReceiveStr)-dotpos);
      dotpos:=Pos(',',ReceiveStr);
      startime:=copy(ReceiveStr,1,dotpos-1);
      temp:=stringreplace(startime,'-','/',[rfreplaceall]);
    //  temp:='01/01/03 00:05:00';
      temp:=copy(temp,4,5)+'/'+copy(temp,1,2)+copy(temp,9,9);
      if xiang='a' then
         begin
         query1.DatabaseName :='ax';
         query1.SQL.Text := 'select * from axiang where 开始时间 ="'+ temp+'"';
         dsquery.DataSet :=table1;
         end
      else begin
           query1.DatabaseName :='bx';
           query1.SQL.Text :='select *from bxiang where 开始时间 ="'+ temp+'"';
           dsquery.DataSet :=table2;
           end;
      query1.Open;
      if query1.RecordCount >0 then ReceiveStr:=''
      else begin
      query1.Append;
      query1.FieldByName('开始时间').AsDateTime:=strtodatetime(startime);
      ReceiveStr:=copy(ReceiveStr,dotpos+1,length(ReceiveStr)-dotpos);
      dotpos:=Pos(',',ReceiveStr);
      query1.FieldByName('最大值').AsFloat :=StrToFloat(copy(ReceiveStr,1,
                    dotpos-1));
      ReceiveStr:=copy(ReceiveStr,dotpos+1,length(ReceiveStr)-dotpos);
      dotpos:=Pos(',',ReceiveStr);
      query1.FieldByName('结束时间').AsDateTime:=strtodatetime(copy(ReceiveStr,1,
                    dotpos-1));
      query1.Post;
      ReceiveStr:='';
      table1.Refresh;
      table2.Refresh;
      end;
  end;*)
//progressbar1.Hide;
comm1.InputLen :=1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Comm1.PortOpen :=true;
comm1.DTREnabled :=true;
  comm1.DTREnabled :=true;
  comm1.DTREnabled :=true;
  comm1.DTREnabled :=true;
  comm1.DTREnabled :=false;
end;

procedure TForm1.btchaxunClick(Sender: TObject);
begin
//chaxunfrm.Create(self);
chaxunfrm.Show ;
end;

procedure TForm1.bttongjiClick(Sender: TObject);
begin
tongjifrm.Show ;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
HtmlHelp( handle, AppPath+'\001.chm::/HelpContent\index.htm',

HH_DISPLAY_TOPIC, nil);
end;



procedure TForm1.Timer1Timer(Sender: TObject);
begin
comm1.DTREnabled :=true;
comm1.DTREnabled :=false;
timer1.Enabled :=false;
end;

Initialization

begin
 AppPath := ExtractFilePath(Application.ExeName);
 ap:=TStringlist.Create;
 Session.GetAliasNames(ap);{取得别名列表}
if(ap.IndexOf('ax')=-1)then{判断别名是否存在}
begin
Session.AddStandardAlias('ax',AppPath+'axiang','PARADOX');
Session.SaveConfigFile; {BDE配置文件存盘}
end;
if(ap.IndexOf('bx')=-1)then{判断别名是否存在}
begin
Session.AddStandardAlias('bx',AppPath+'bxiang','PARADOX');
Session.SaveConfigFile; {BDE配置文件存盘}
end;
end;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -