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

📄 main.~pas

📁 串口监控程序,可与UPS进行通信,适合初学者使用
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
   RzEdit28.Text := inputv;
   RzEdit6.Text  :=mininputv;
   RzEdit8.Text  :=outputv;
   RzEdit30.Text :=outputv;
   RzEdit17.Text  := loadper;
   RzEdit31.Text :=  loadper;
   RzEdit29.Text :=  loadper;
   RzEdit13.Text  := inputfre;
   RzEdit16.Text  :=batteryv;
   RzEdit21.Text := temperature;

   setflash;



  end
  else
  IF (S='#') and (length(str)=22) and (s<>'V')   THEN
  begin

   aa[0]:=str;
    Result_Array1(AA);
    rav:=aa[0];
    raa:=aa[1];
    rabatteryv:=aa[2];
    raload:=aa[3];
   RzEdit6.Text  :=rav;
   RzEdit33.Text :=rav;
   RzEdit9.Text  :=raa;
   RzEdit34.Text :=raa;
   RzEdit15.Text  :=rabatteryv;
   RzEdit35.Text  :=rabatteryv;
   RzEdit12.Text  :=raload;
   RzEdit36.Text  :=raload;
  end
 else
 // if  (length(str)<>22) and ((s='V') or (S='#'))   THEN
  begin

   Memo2.Text := Memo2.Text + Str;
  Memo2.SelStart := Length(Memo1.Text);
  Memo2.SelLength:= 0;
  Memo2.Perform(EM_SCROLLCARET,0,0);
    aa[0]:=memo2.Text ;
   Result_Array2(AA);
    company:=aa[0];
    spec:=aa[1];
    ver:=aa[2];
   label27.Caption:=company;

   label39.Caption:=spec;
   label40.Caption :=ver;

end;



end;


function Tfmain.Result_Array(var   Try_Array:array   of   string) : string   ;
var
  i:integer;
  Astr,astr1:String;

  begin
  if Try_Array[0]='' then exit;

 I:=pos('(',try_array[0]);
  Astr:=copy(Try_Array[0],i+1,length(Try_Array[0])-i);
  Try_Array[0]:=COPY(Try_Array[0],i+1,5);

   Astr1:=copy(Astr,7,length(Astr)-5);
    Try_Array[1]:=copy(Astr1,1,5);

    Astr:='';
    Astr:=copy(Astr1,7,length(Astr1)-5);
  Try_Array[2]:=copy(Astr,1,5);

    Astr1:='';
    Astr1:=copy(Astr,7,length(Astr)-5);
    Try_Array[3]:=copy(Astr1,1,3);

    Astr:='';
    Astr:=copy(Astr1,5,length(Astr1)-4);
    Try_Array[4]:=copy(Astr,1,4);

    Astr1:='';
    Astr1:=copy(Astr,6,length(Astr)-5);
    Try_Array[5]:=copy(Astr1,1,4);

    Astr:='';
    Astr:=copy(Astr1,6,length(Astr1)-5);
    Try_Array[6]:=copy(Astr,1,4);

    Astr1:='';
    Astr1:=copy(Astr,6,length(Astr)-5);
    Try_Array[7]:=copy(Astr1,1,8);

    Try_Array[8]:=copy(Try_Array[7], 1,1);
    Try_Array[9]:=copy(Try_Array[7], 2,1);
    Try_Array[10]:=copy(Try_Array[7], 3,1);
    Try_Array[11]:=copy(Try_Array[7], 4,1);
    Try_Array[12]:=copy(Try_Array[7], 5,1);
    Try_Array[13]:=copy(Try_Array[7], 6,1);
    Try_Array[14]:=copy(Try_Array[7], 7,1);
    Try_Array[15]:=copy(Try_Array[7], 8,1);



  end;




function Tfmain.Result_Array1(var   Try_Array1:array   of   string) : string   ;
var
  i:integer;
  Astr,astr1:String;

  begin
  if Try_Array1[0]='' then exit;

 I:=pos('#',try_array1[0]);
   Astr:=copy(Try_Array1[0],i+1,length(Try_Array1[0])-i);
  Try_Array1[0]:=COPY(Try_Array1[0],i+1,5);

   Astr1:=copy(Astr,7,length(Astr)-6);
    Try_Array1[1]:=copy(Astr1,1,3);

    Astr:='';
    Astr:=copy(Astr1,5,length(Astr1)-4);
  Try_Array1[2]:=copy(Astr,1,5);

    Astr1:='';
    Astr1:=copy(Astr,7,length(Astr)-6);
    Try_Array1[3]:=copy(Astr1,1,4);


  end;



function Tfmain.Result_Array2(var   Try_Array2:array   of   string) : string   ;
var
  i:integer;
  Astr,astr1:String;

  begin
  if Try_Array2[0]='' then exit;

 I:=pos('#',try_array2[0]);
  Astr:=copy(Try_Array2[0],i+1,length(Try_Array2[0])-i);
  Try_Array2[0]:=COPY(Try_Array2[0],i+1,15);

   Astr1:=copy(Astr,17,length(Astr)-16);
    Try_Array2[1]:=copy(Astr1,1,10);

    Astr:='';
    Astr:=copy(Astr1,12,length(Astr1)-11);
  Try_Array2[2]:=copy(Astr,1,10);


  end;



  function getsystypes:boolean;
     var
      ver:tosversioninfo;
      begin
       result:=false;
       ver.dwOSVersionInfoSize :=sizeof(tosversioninfo);
       if getversionex(ver) then
        if ver.dwPlatformId =VER_PLATFORM_WIN32_WINDOWS THEN
         result:=true
        else
         result:=false;
        end;




    function setprivilege(sprivilegename: ansistring; benable: boolean): boolean;
    var
    TPPrev,TP:  ttokenprivileges;
    token:  thandle;
    dwretlen : dword;
    begin
    result:=false;
    openprocesstoken(getcurrentprocess, TOKEN_ADJUST_PRIVILEGES or
    TOKEN_QUERY, TOKEN);
    TP.PrivilegeCount :=1;
    IF lookupprivilegevalue(nil,pansichar(sprivilegename),TP.Privileges[0].LUID) then
    begin
    if benable then
    tp.Privileges[0].Attributes :=SE_PRIVILEGE_ENABLED
    ELSE
    TP.Privileges[0].Attributes :=0;
    dwretlen:=0;
    result:=  adjusttokenprivileges(token,false,  tp, sizeof(tpprev), tpprev, dwretlen);
    end;
    closehandle(token);
    end;

procedure Tfmain.Timer2Timer(Sender: TObject);
begin
button2.Click ;
end;

procedure Tfmain.Timer3Timer(Sender: TObject);
begin
 button3.Click ;
end;

procedure Tfmain.Timer4Timer(Sender: TObject);
begin
button4.Click;
end;

procedure Tfmain.Button5Click(Sender: TObject);
begin
edit10.Text :=comopen;

end;



 Procedure setflash ;
 begin
    if upstype='0'then
   fmain.RzEdit27.Text :='ON_LINE'
   ELSE
   fmain.RzEdit27.Text :='STANDY';

    ///    与UPS通讯
   if upsfail='1' then
   begin
   fmain.BitBtn1.Visible :=true;
   fmain.Edit1.Enabled :=true;
   fmain.BitBtn7.Visible :=false;
   end
   else
   begin
    fmain.BitBtn1.Visible :=true;
    fmain.Edit1.Enabled :=false;
   fmain.BitBtn7.Visible :=false;
   end;

   ////电池故障
     if upsfail='1' then
   begin
   fmain.BitBtn2.Visible :=true;
   fmain.Edit2.Enabled :=true;
   fmain.BitBtn8.Visible :=false;
   end
   else
   begin
    fmain.BitBtn2.Visible :=true;
    fmain.Edit2.Enabled :=false;
   fmain.BitBtn8.Visible :=false;
   end;

// beeperon,shutdown,upstype
   ////交流正常
     if utility='1' then
   begin
   fmain.BitBtn2.Visible :=true;
   fmain.Edit3.Enabled :=true;
   fmain.BitBtn8.Visible :=false;
   end
   else
   begin
    fmain.BitBtn2.Visible :=true;
    fmain.Edit3.Enabled :=false;
   fmain.BitBtn8.Visible :=false;
   end;

   ////旁路
     if bypass='1' then
   begin
   fmain.BitBtn4.Visible :=true;
   fmain.Edit4.Enabled :=true;
   fmain.BitBtn10.Visible :=false;
   end
   else
   begin
    fmain.BitBtn4.Visible :=true;
    fmain.Edit4.Enabled :=false;
   fmain.BitBtn10.Visible :=false;
   end;



   ////电池电压
     if batterylow='1' then
   begin
   fmain.BitBtn5.Visible :=true;
   fmain.Edit5.Enabled :=true;
   fmain.BitBtn11.Visible :=false;
   end
   else
   begin
    fmain.BitBtn5.Visible :=true;
    fmain.Edit5.Enabled :=false;
   fmain.BitBtn11.Visible :=false;
   end;



   ////UPS自我检测
     if testin='1' then
   begin
   fmain.BitBtn6.Visible :=true;
   fmain.Edit6.Enabled :=true;
   fmain.BitBtn12.Visible :=false;
   end
   else
   begin
    fmain.BitBtn6.Visible :=true;
    fmain.Edit6.Enabled :=false;
   fmain.BitBtn12.Visible :=false;
   end;




 end;

procedure Tfmain.RzEdit5Change(Sender: TObject);
begin
  if RzEdit6.Text ='' then
  RzEdit6.Text:=RzEdit5.Text
  else
   if strtoint(RzEdit6.Text)>strtoint(RzEdit5.Text) then
     RzEdit6.Text:= RzEdit5.Text;

  if RzEdit7.Text='' then
  RzEdit7.Text:=RzEdit5.Text
  else
   if strtoint(RzEdit7.Text)<strtoint(RzEdit5.Text) then
     RzEdit7.Text:= RzEdit5.Text;

end;

procedure Tfmain.RzEdit8Change(Sender: TObject);
begin
   if RzEdit9.Text ='' then
  RzEdit9.Text:=RzEdit8.Text
  else
   if strtoint(RzEdit9.Text)>strtoint(RzEdit8.Text) then
     RzEdit9.Text:= RzEdit8.Text;

  if RzEdit10.Text='' then
  RzEdit10.Text:=RzEdit8.Text
  else
   if strtoint(RzEdit10.Text)<strtoint(RzEdit8.Text) then
     RzEdit10.Text:= RzEdit8.Text;
end;

procedure Tfmain.RzEdit13Change(Sender: TObject);
begin
   if RzEdit12.Text ='' then
  RzEdit12.Text:=RzEdit13.Text
  else
   if strtoint(RzEdit12.Text)>strtoint(RzEdit13.Text) then
     RzEdit12.Text:= RzEdit13.Text;

  if RzEdit11.Text='' then
  RzEdit11.Text:=RzEdit13.Text
  else
   if strtoint(RzEdit11.Text)<strtoint(RzEdit13.Text) then
     RzEdit11.Text:= RzEdit13.Text;
end;

procedure Tfmain.RzEdit16Change(Sender: TObject);
begin
   if RzEdit15.Text ='' then
  RzEdit15.Text:=RzEdit16.Text
  else
   if strtoint(RzEdit15.Text)>strtoint(RzEdit16.Text) then
     RzEdit15.Text:= RzEdit16.Text;

  if RzEdit14.Text='' then
  RzEdit14.Text:=RzEdit16.Text
  else
   if strtoint(RzEdit14.Text)<strtoint(RzEdit16.Text) then
     RzEdit14.Text:= RzEdit16.Text;

end;

procedure Tfmain.RzEdit17Change(Sender: TObject);
begin
   if RzEdit18.Text ='' then
  RzEdit18.Text:=RzEdit17.Text
  else
   if strtoint(RzEdit18.Text)>strtoint(RzEdit17.Text) then
     RzEdit18.Text:= RzEdit17.Text;

  if RzEdit19.Text='' then
  RzEdit19.Text:=RzEdit17.Text
  else
   if strtoint(RzEdit19.Text)<strtoint(RzEdit17.Text) then
     RzEdit19.Text:= RzEdit17.Text;
end;

procedure Tfmain.RzEdit21Change(Sender: TObject);
begin
   if RzEdit22.Text ='' then
  RzEdit22.Text:=RzEdit21.Text
  else
   if strtoint(RzEdit22.Text)>strtoint(RzEdit21.Text) then
     RzEdit22.Text:= RzEdit21.Text;

  if RzEdit23.Text='' then
  RzEdit23.Text:=RzEdit21.Text
  else
   if strtoint(RzEdit23.Text)<strtoint(RzEdit21.Text) then
     RzEdit23.Text:= RzEdit21.Text;
end;

procedure Tfmain.recordtimerTimer(Sender: TObject);
var
 qrytemp:tadoquery;
 begin
  qrytemp:=tadoquery.Create(self);
  qrytemp.Connection :=fmain.dbcon ;
  qrytemp.SQL.Clear ;
 qrytemp.SQL.Text :='insert into data(daydata,timedata,inputv,mininputv,outputv,loadper,' +
  'inputfre,batteryv,temperature,state,rav,raa,rabatteryv,raload,company,'+
  'spec,ver,beeperon,shutdown,testin,upstype,upsfail,bypass,batterylow,utility)'+
  ' values(:daydata,:timedata,:inputv,:mininputv,:outputv,:loadper,'+
  ':inputfre,:batteryv,:temperature,:state,:rav,:raa,:rabatteryv,:raload,:company,'+
  ' :spec,:ver,:beeperon,:shutdown,:testin,:upstype,:upsfail,:bypass,:batterylow,:utility)';

    QryTemp.Parameters.Items[0].Value:=date();
    QryTemp.Parameters.Items[1].Value:=time() ;
    QryTemp.Parameters.Items[2].Value:=inputv ;
   QryTemp.Parameters.Items[3].Value:=mininputv ;
    QryTemp.Parameters.Items[4].Value:=outputv;
    QryTemp.Parameters.Items[5].Value:=loadper ;
     QryTemp.Parameters.Items[6].Value:=inputfre ;
    QryTemp.Parameters.Items[7].Value:=batteryv ;
   QryTemp.Parameters.Items[8].Value:=temperature;

       QryTemp.Parameters.Items[9].Value:=state ;
   QryTemp.Parameters.Items[10].Value:=rav ;
    QryTemp.Parameters.Items[11].Value:=raa;
    QryTemp.Parameters.Items[12].Value:=rabatteryv ;

    QryTemp.Parameters.Items[13].Value:=raload ;
   QryTemp.Parameters.Items[14].Value:=company;
       QryTemp.Parameters.Items[15].Value:=spec ;
   QryTemp.Parameters.Items[16].Value:=ver ;
    QryTemp.Parameters.Items[17].Value:=beeperon;
    QryTemp.Parameters.Items[18].Value:=shutdown ;

    QryTemp.Parameters.Items[19].Value:=testin ;
   QryTemp.Parameters.Items[20].Value:=upstype;
       QryTemp.Parameters.Items[21].Value:=upsfail ;
   QryTemp.Parameters.Items[22].Value:=bypass ;
    QryTemp.Parameters.Items[23].Value:=batterylow;
    QryTemp.Parameters.Items[24].Value:=utility ;


  qrytemp.ExecSQL ;
  qrytemp.Close;
  qrytemp.Free ;
     
end;



end.

⌨️ 快捷键说明

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