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

📄 accshow.~pas

📁 使用Delphi 6.0开发用于控制空调的程序
💻 ~PAS
字号:
unit ACCShow;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls;

type
  TfrmACCShow = class(TForm)
    grpMangerNum: TGroupBox;
    lbl1: TLabel;
    lbl2: TLabel;
    lbl3: TLabel;
    lbl4: TLabel;
    edtLine0Num: TEdit;
    edtLine1Num: TEdit;
    edtLine2Num: TEdit;
    btnConMangerNum: TButton;
    grpUNITNO: TGroupBox;
    lbl5: TLabel;
    cbbLINENO: TComboBox;
    lbl6: TLabel;
    edtUnitNo: TEdit;
    btnUnitNo: TButton;
    grpLimit: TGroupBox;
    lbl7: TLabel;
    cbbLimitLineNo: TComboBox;
    btnLimit: TButton;
    lbl8: TLabel;
    lbl9: TLabel;
    lbl10: TLabel;
    lbl11: TLabel;
    edtColdTempLit: TEdit;
    edtColdTempCol: TEdit;
    edtHotTempLit: TEdit;
    edtHotTempCol: TEdit;
    lbl12: TLabel;
    lbl13: TLabel;
    edtS320F1Cxs: TEdit;
    edtS320F2Cxs: TEdit;
    lbl14: TLabel;
    lbl15: TLabel;
    lbl16: TLabel;
    lbl17: TLabel;
    lbl18: TLabel;
    lbl19: TLabel;
    lbl20: TLabel;
    lbl21: TLabel;
    lbl22: TLabel;
    edtS320FAuto: TEdit;
    edtS320HotSet: TEdit;
    edtS320ColdSet: TEdit;
    edtS320SendWind: TEdit;
    edtS320F2: TEdit;
    edtS320F1: TEdit;
    edtS320TempSet: TEdit;
    edtS320ChuShi: TEdit;
    lbl23: TLabel;
    lbl24: TLabel;
    lbl25: TLabel;
    lbl26: TLabel;
    lbl27: TLabel;
    lbl28: TLabel;
    edtS320RunStateAutoSet: TEdit;
    edtS320Ambient: TEdit;
    edtS320AllHot: TEdit;
    edtS20NEAllHotLink: TEdit;
    edtS20NEAmbient: TEdit;
    edtS20NEAllHot: TEdit;
    edtS320RCC: TEdit;
    grpComulative: TGroupBox;
    lbl29: TLabel;
    lbl30: TLabel;
    cbbComuLineNo: TComboBox;
    edtComuUnitNo: TEdit;
    btnComulative: TButton;
    lbl31: TLabel;
    lbl32: TLabel;
    lbl33: TLabel;
    lbl34: TLabel;
    lbl35: TLabel;
    lbl36: TLabel;
    lbl37: TLabel;
    lbl38: TLabel;
    edtSetTemp: TEdit;
    edtReturnTemp: TEdit;
    edtF1VavNum1: TEdit;
    edtF2VavNum: TEdit;
    lbl39: TLabel;
    lbl40: TLabel;
    lbl41: TLabel;
    lbl42: TLabel;
    lbl43: TLabel;
    lbl44: TLabel;
    lbl45: TLabel;
    edtRunModel: TEdit;
    edtSB400Code: TEdit;
    edtSB400ContextCode: TEdit;
    lbl46: TLabel;
    edtSB400Attention: TEdit;
    edtSB400Warmers: TEdit;
    edtSB400Heating: TEdit;
    edtSB400Compresspor: TEdit;
    edtSB400Filte: TEdit;
    edtSB400Fans: TEdit;
    edtSB400RunState: TEdit;
    edtSB400Waring: TEdit;
    edtSB400Abnormal: TEdit;
    grpResult: TGroupBox;
    btnResult: TButton;
    shpS410RS485: TShape;
    shpS410RunModul: TShape;
    shpS410HouJieAbal: TShape;
    lbl47: TLabel;
    lbl48: TLabel;
    lbl49: TLabel;
    lbl50: TLabel;
    lbl51: TLabel;
    lbl52: TLabel;
    lbl53: TLabel;
    lbl54: TLabel;
    lbl55: TLabel;
    lbl56: TLabel;
    lbl57: TLabel;
    lbl58: TLabel;
    lbl59: TLabel;
    shpS410TimerAbal: TShape;
    shpS410CommuAbal: TShape;
    shpS410FilterAbal: TShape;
    shpS410Abnormal: TShape;
    shpS410Line2Abal: TShape;
    shpS410Line1Abal: TShape;
    shpS410Line0Abal: TShape;
    shpS410Line2HJAbal: TShape;
    shpS410Line1HJAbal: TShape;
    shpS410Line0HJAbal: TShape;
    statACCShow: TStatusBar;
    btn1: TButton;
    btn2: TButton;
    procedure btnConMangerNumClick(Sender: TObject);
    procedure btnUnitNoClick(Sender: TObject);
    procedure btnLimitClick(Sender: TObject);
    procedure btnComulativeClick(Sender: TObject);
    procedure btnResultClick(Sender: TObject);
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmACCShow: TfrmACCShow;

implementation

{$R *.dfm}

uses
  Main,SU;

function hex(c:char):Integer;
var
   x:integer;
begin
    if c='' then
       x:=0
    else if(Ord(c)>=ord('0'))and (Ord(c)<=ord('9')) then
        x:=Ord(c)-Ord('0')
    else if(Ord(c)>=ord('a'))and (Ord(c)<=ord('f')) then
        x:=Ord(c)-Ord('a')+10
    else if(Ord(c)>=ord('A'))and (Ord(c)<=ord('F')) then
        x:=Ord(c)-Ord('A')+10
    else
     x:=-1;
    Result:=x;
end;
//该函数结束1~2个字符,转换成功,输出对应十六进制的值,转换失败,输出-1
function HexToInt(S:String):Integer;
var
  tmpInt1,tmpInt2:integer;
begin
    if Length(S)=1 then
    begin
       Result:=hex(S[1]);
    end
    else if Length(S)=2 then
    begin
      tmpInt1:=hex(S[1]);
      tmpInt2:=hex(S[2]);
      if(tmpInt1=-1) or (tmpInt2=-1) then
        Result:=-1
      else
        Result:=tmpInt1*16+tmpInt2;
        ShowMessage(IntToStr(tmpInt1*16+tmpInt2));
    end
    else
    Result:=-1;
end;

function mod_num(n1,n2:integer):integer;//取余数
begin
   result:=n1-n1 div n2*n2
end;
function reverse(s:String):String;//取反串
Var
i,num:Integer;
st:String;
begin
   num:=Length(s);
   st:='';
   For i:=num DownTo 1 do
   Begin
     st:=st+s[i];
   End;
   Result:=st;
end;

Function DecTobin(Value :Integer) : string;//十进制转化二进制
Var
  ST,
  strBin:String;
  N:Integer;

Begin
   ST:='';
   N:=value;
   While N >= 2 Do
   Begin
     st:=st+IntToStr(mod_num(n,2));
     N := N div 2;
   End;
   ST:=ST + IntToStr(n);
   ST:=reverse(ST);
   ShowMessage('二进制:'+ST);
   if Length(ST) <> 8 then
   begin
     case Length(ST) of
       7: strBin :='0'+st;
       6: strBin :='00' + st;
       5: strBin :='000' + st;
       4: strBin :='0000' + st;
       3: strBin :='00000' + st;
       2: strBin :='000000' + st;
       1: strBin :='0000000' + st;
       0: strBin :='00000000';
     end;
     Result := strBin;
   end
   else
      Result :=ST;
End;

function StrToBin(ss:string):string;
begin
  Result := DecTobin(HexToInt(ss));
end;
procedure TfrmACCShow.btnConMangerNumClick(Sender: TObject);
var
  //strTemp:string;
  strSendComm:string;
  SUSend:TSU;
begin
   SUSend := TSU.Create;
   try
        SUSend.StateConManagerNum ;
        if SUSend.GetErrorInfo <> '命令正确' then
        begin
            statACCShow.SimpleText := SUSend.GetErrorInfo;
            Exit;
        end;
        strSendComm := SUSend.GetCOmmand;
        try
            if not main.frmain.Spcomm1.PortOpen  then
            begin
               main.frmain.Spcomm1.StartComm;
            end;
          main.frmain.Spcomm1.WriteCommData( PChar(strSendComm),Length(strSendComm));
        except
          ShowMessage('命令发送失败!');
        end;
   finally
        SUSend.Free;
   end;

end;

procedure TfrmACCShow.btnUnitNoClick(Sender: TObject);
var
  strTemp:string;
  strSendComm:string;
  SUSend:TSU;
begin
   strTemp := cbbLINENO.Text ;
   SUSend := TSU.Create;
   try
        SUSend.StateConUNITNO(strTemp);
        if SUSend.GetErrorInfo <> '命令正确' then
        begin
            statACCShow.SimpleText := SUSend.GetErrorInfo;
            Exit;
        end;
        strSendComm := SUSend.GetCOmmand;
         //ShowMessage(SUSend.GetErrorInfo);
        try
          if not main.frmain.Spcomm1.PortOpen  then
              main.frmain.Spcomm1.StartComm;
          main.frmain.Spcomm1.WriteCommData( PChar(strSendComm),Length(strSendComm));
        except
          ShowMessage('命令发送失败!');
        end;
   finally
        SUSend.Free;
   end;

end;

procedure TfrmACCShow.btnLimitClick(Sender: TObject);
var
  strTemp:string;
  strSendComm:string;
  SUSend:TSU;
begin
   strTemp := cbbLimitLineNo.Text ;
   SUSend := TSU.Create;
   try
        SUSend.StateConLimitInte(strTemp);
        if SUSend.GetErrorInfo <> '命令正确' then
        begin
            statACCShow.SimpleText := SUSend.GetErrorInfo;
            Exit;
        end;
        strSendComm := SUSend.GetCOmmand;
         //ShowMessage(SUSend.GetErrorInfo);
        try
          if not main.frmain.Spcomm1.PortOpen  then
              main.frmain.Spcomm1.StartComm;
          main.frmain.Spcomm1.WriteCommData( PChar(strSendComm),Length(strSendComm));
        except
          ShowMessage('命令发送失败!');
        end;
   finally
        SUSend.Free;
   end;
end;

procedure TfrmACCShow.btnComulativeClick(Sender: TObject);
var
  strTemp,
  strTemp1:string;
  strSendComm:string;
  SUSend:TSU;
begin
   strTemp := cbbLINENO.Text ;
   strTemp1 := edtComuUnitNo.Text;
   if strTemp1 = '' then
   begin
     ShowMessage('请输入正确地Unit No');
     Exit;
   end;  
   SUSend := TSU.Create;
   try
        SUSend.CollCumulativeInte(strTemp,strTemp1);
        if SUSend.GetErrorInfo <> '命令正确' then
        begin
            statACCShow.SimpleText := SUSend.GetErrorInfo;
            Exit;
        end;
        strSendComm := SUSend.GetCOmmand;
         //ShowMessage(SUSend.GetErrorInfo);
        try
          if not main.frmain.Spcomm1.PortOpen  then
              main.frmain.Spcomm1.StartComm;
          main.frmain.Spcomm1.WriteCommData( PChar(strSendComm),Length(strSendComm));
        except
          ShowMessage('命令发送失败!');
        end;
   finally
        SUSend.Free;
   end;

end;

procedure TfrmACCShow.btnResultClick(Sender: TObject);
var
  strSendComm:string;
  SUSend:TSU;
begin
   SUSend := TSU.Create;
   try
        SUSend.CollTransmittersResult ;
        if SUSend.GetErrorInfo <> '命令正确' then
        begin
            statACCShow.SimpleText := SUSend.GetErrorInfo;
            Exit;
        end;
        strSendComm := SUSend.GetCOmmand;
        try
          if not main.frmain.Spcomm1.PortOpen  then
              main.frmain.Spcomm1.StartComm;
          main.frmain.Spcomm1.WriteCommData( PChar(strSendComm),Length(strSendComm));
        except
          ShowMessage('命令发送失败!');
        end;
   finally
        SUSend.Free;
   end;  
end;
function BCC(strBCC: string): string;
var
  i,strSum:Integer;
  strResult:string;
begin
   strSum := 0;
   for i := 1 to Length(strBCC) do
   begin
     strSum := strSum + Ord(strBCC[i]);
   end;
   strResult := IntToHex((strSum and $0F),1);
   Result := strResult;
end;
procedure TfrmACCShow.btn1Click(Sender: TObject);
var
  strTemp:string;
begin
   if not Main.frmain.Spcomm1.PortOpen  then
      Main.frmain.Spcomm1.StartComm;
   strTemp := #02 + '300' + '010101' +#03;  //300
   strTemp := strTemp + BCC(strTemp);
    Main.frmain.Spcomm1.WriteCommData( PChar(strTemp),Length(strTemp));

   strTemp := #02 + '310' + 'FF' +#03;  //310
   strTemp := strTemp + BCC(strTemp);
    Main.frmain.Spcomm1.WriteCommData( PChar(strTemp),Length(strTemp));

   strTemp := #02 + '410' + '0811' +#03;   //410
   strTemp := strTemp + BCC(strTemp);
    Main.frmain.Spcomm1.WriteCommData( PChar(strTemp),Length(strTemp));

   strTemp := #02 + '320' + '2'+'B780'+'27'+'01'+'99'+'20'+'20' +#03;  //320
   strTemp := strTemp + BCC(strTemp);
    Main.frmain.Spcomm1.WriteCommData( PChar(strTemp),Length(strTemp));
    
   strTemp := #02 + '400' + '639'+'334'+'000000000000'+'032'+'023'+'15'+#03;  //400
   strTemp := strTemp + BCC(strTemp);
    Main.frmain.Spcomm1.WriteCommData( PChar(strTemp),Length(strTemp));
end;

procedure TfrmACCShow.btn2Click(Sender: TObject);
begin
    ShowMessage(StrToBin('B7'));
end;

end.

⌨️ 快捷键说明

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