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

📄 su.~pas

📁 使用Delphi 6.0开发用于控制空调的程序
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
unit SU;

interface

uses
  Messages, SysUtils, Variants, Classes, Dialogs, Controls,StrUtils ;

type TSU = class

protected
  strCommand:string;
  Len:Integer;
  strError:string;
public
   function  BCC(strBCC:string):string;
   function  GetCommand():string;
   function  GetErrorInfo():string;
   //procedure Create();
   procedure CutCommu;   //000 回路切断要求
   procedure ReadRAM(strRamAdd_4:string);  //0E0 RAM读出
   procedure WriteRAM(strRamAdd_4,strData_2:string); //0F0 RAM记入

   procedure IDId;       //100 接口ID确认
   procedure PassWordID(strPW_8:string); //110 PASSWORD确认

   procedure SetPassWord(strPW_8:string);   //210 pw设定
   procedure SetCenterTELNo(strTELNO_30:string);   //220 中心一tel.no
   procedure SetID(strID_16:string);  //230 接口ID
   procedure SetNowTime(strHour_2,strMinute_2:string); //240 现在时刻
   procedure SetTimingSendPaperTime(strHour_2,strMinute_2:string); // 250定时发报时刻
   procedure SetDialingNum(strDialingNum_1:string);   //280 连通为止的拨号次数
   procedure SetReDialingNum(strReDiaNum_2:string); //2A0 重拨次数
   procedure SetAutoMachine(strAutoNum_1:string); //2B0 自动备机有无
   procedure SetAutoRunTime(strAutoNum_2:string);  //2c0  自动交替运作时间
   procedure SetMinRunGuranteeNum(strMinNum_1:string); //2D0 最低运转保证台数
   procedure SetDiagling(strb_2_8:string); //根据需要对接口发报的许可/禁止设定

   procedure StateConManagerNum; //300  从接口读出各遥控器回路所连接的室内机台数  300
   procedure StateConUNITNO(strLineNo_1:string);     //310 从接口读出任意室内机的UNIT.NO    310
   procedure StateConLimitInte(strLineNo_1:string);//320 从接口读出任意回路的限制情报

   procedure CollCumulativeInte(strLineNo_1,strUnitNo_2:string);  //400  读出任意室内机的积累信息
   procedure CollTransmittersResult;   //410  从接口读出发报原因

   procedure ACDataInit;   //500  接口内部存储数据的初始化。希望从室内机的最初存储数据开始实行时发行

   procedure ACCTRun(strLineNo_1,strState_1:string); //600 对接口的任意LINE运转。停止指令
   procedure ACCTCleaning(strLineNo_1:string); //610  对接口的任意LINE发出过滤清洗重置指令
   procedure ACCTRunModel(strLineNo_1,strModel_1:string); //620 改变接口任意line的运转模式
   procedure ACCTSetTemp(strLineNo_1,strColdSetTemp_3,strHotSetTemp_3:string);//630 改变接口任意line的设定温度
   procedure ACCTVAV(strLineAndVAV_5:string); // 640 改变接口任意Line的风量

   procedure IDReadCenterTELNO; //   720 读出同接口相连的上位机的TEL.NO
   procedure IDReadID;    //730 读出接口设定的ID
   procedure IDReadNowTime; //740 读出接口累计的现在时刻
   procedure IDReadTimingSendPaperTime; //750 读出接口设定的定时发表时刻
   procedure IDReadDialingNum;  //780 读出接口设定的连通为止的响应次数
   procedure IDReadReDialingNum;  //7A0 读出接口设定的连通为止的重拨为止
   procedure IDReadAutoMachine;  //7B0 读出接口设定的自动备机功能有无
   procedure IDReadAutoRunTime;  //7C0 读出接口设定的自动交替运转时间
   procedure IDReadMinRunGurNum;  //7DO 读出接口设定的最低运转保证台数
   procedure IDReadDiagling;    //7E0 读出接口设定的各种情况下的发报有无

end;

implementation

{ TSU }

function TSU.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;

function  TSU.GetErrorInfo():string;
begin
  Result := strError;
end;  

//procedure TSU.Create;
//begin
//  strError := '通信成功';
//end;
procedure TSU.CutCommu;
var
  strTemp:string;
begin
    strTemp := #02 + '000' + #03;
    strCommand := strTemp + BCC(strTemp);
end;

procedure TSU.ReadRAM(strRamAdd_4: string);
var
  strTemp:string;
begin
    if Length(strRamAdd_4) <> 4 then
    begin
      strError := 'RAM地址错误,应该为4位,而非:' + IntToStr(Length(strRamAdd_4)) + '为';
      Exit ;
    end;
    strTemp := #02 + '0E0' + strRamAdd_4 + #03;
    strCommand := strTemp + BCC(strTemp);
end;

procedure TSU.IDId;
var
  strTemp:string;
begin
    strTemp := #02 + '100' + #03;
    strCommand := strTemp + BCC(strTemp);
end;

procedure TSU.PassWordID(strPW_8: string);
var
  strTemp:string;
begin
    if Length(strPW_8) <> 8 then
    begin
      strError := 'PassWordID错误,应该为8位,而非:' + IntToStr(Length(strPW_8)) + '为';
      Exit ;
    end;
    strTemp := #02 + '110' + strPW_8 + #03;
    strCommand := strTemp + BCC(strTemp);

end;

procedure TSU.SetPassWord(strPW_8: string);
var
  strTemp:string;
begin
    if Length(strPW_8) <> 8 then
    begin
      strError := 'SetPassWord错误,应该为8位,而非:' + IntToStr(Length(strPW_8)) + '位';
      Exit ;
    end;
    strTemp := #02 + '210' + strPW_8 + #03;
    strCommand := strTemp + BCC(strTemp);

end;

procedure TSU.SetCenterTELNo(strTELNO_30: string);
var
  strTemp:string;
begin
    if Length(strTELNO_30) <> 30 then
    begin
      strError := 'SetCenterTELNo错误,应该为30位,而非:' + IntToStr(Length(strTELNO_30)) + '位';
      Exit ;
    end;
    strTemp := #02 + '220' + strTELNO_30 + #03;
    strCommand := strTemp + BCC(strTemp);

end;

procedure TSU.SetID(strID_16: string);
var
  strTemp:string;
begin
    if Length(strID_16) <> 16 then
    begin
      strError := 'SetID错误,应该为16位,而非:' + IntToStr(Length(strID_16)) + '位';
      Exit ;
    end;
    strTemp := #02 + '230' + strID_16 + #03;
    strCommand := strTemp + BCC(strTemp);

end;

procedure TSU.SetNowTime(strHour_2, strMinute_2: string);
var
  strTemp:string;
begin
    if Length(strHour_2) <> 2 then
    begin
      strError := 'SetNowTime地址错误,应该为2位,而非:' + IntToStr(Length(strHour_2)) + '位';
      Exit ;
    end
    else
    if Length(strMinute_2) <> 2 then
    begin
      strError := 'SetNowTime记入数据错误,应该为2位,而非:' + IntToStr(Length(strMinute_2)) + '位';
      Exit ;
    end;
    strTemp := #02 + '240' + strHour_2 + strMinute_2 + #03;
    strCommand := strTemp + BCC(strTemp);

end;

procedure TSU.SetTimingSendPaperTime(strHour_2, strMinute_2: string);
var
  strTemp:string;
begin
    if Length(strHour_2) <> 2 then
    begin
      strError := 'SetTimingSendPaperTime小时错误,应该为2位,而非:' + IntToStr(Length(strHour_2)) + '位';
      Exit ;
    end
    else
    if Length(strMinute_2) <> 2 then
    begin
      strError := 'SetTimingSendPaperTime分钟错误,应该为2位,而非:' + IntToStr(Length(strMinute_2)) + '位';
      Exit ;
    end ;
    strTemp := #02 + '250' + strHour_2 + strMinute_2 + #03;
    strCommand := strTemp + BCC(strTemp);

end;

procedure TSU.SetDialingNum(strDialingNum_1: string);
var
  strTemp:string;
begin
    if Length(strDialingNum_1) <> 1 then
    begin
      strError := 'SetDialingNum错误,应该为1位,而非:' + IntToStr(Length(strDialingNum_1)) + '位';
      Exit ;
    end;
    strTemp := #02 + '280' + strDialingNum_1 + #03;
    strCommand := strTemp + BCC(strTemp);

end;

procedure TSU.SetReDialingNum(strReDiaNum_2:string); //2A0 重拨次数
var
  strTemp:string;
begin
    if Length(strReDiaNum_2) <> 2 then
    begin
      strError := 'SetReDialingNum错误,应该为2位,而非:' + IntToStr(Length(strReDiaNum_2)) + '位';
      Exit ;
    end;
    strTemp := #02 + '2A0' + strReDiaNum_2 + #03;
    strCommand := strTemp + BCC(strTemp);
end;

procedure TSU.SetAutoMachine(strAutoNum_1: string);
var
  strTemp:string;
begin
    if Length(strAutoNum_1) <> 1 then
    begin
      strError := 'SetAutoMachine错误,应该为1位,而非:' + IntToStr(Length(strAutoNum_1)) + '位';
      Exit ;
    end;
    strTemp := #02 + '2B0' + strAutoNum_1 + #03;
    strCommand := strTemp + BCC(strTemp);
end;

procedure TSU.SetAutoRunTime(strAutoNum_2: string);
var
  strTemp:string;
begin
    if Length(strAutoNum_2) <> 2 then
    begin
      strError := 'SetAutoRunTime错误,应该为1位,而非:' + IntToStr(Length(strAutoNum_2)) + '位';
      Exit ;
    end;
    strTemp := #02 + '2C0' + strAutoNum_2 + #03;
    strCommand := strTemp + BCC(strTemp);

end;

procedure TSU.SetMinRunGuranteeNum(strMinNum_1: string);
var
  strTemp:string;
begin
    if Length(strMinNum_1) <> 1 then
    begin
      strError := 'SetMinRunGuranteeNum错误,应该为1位,而非:' + IntToStr(Length(strMinNum_1)) + '位';
      Exit ;
    end;
    
//    if (strMinNum_1 <> '1') or (strMinNum_1 <> '2') then
//    begin
//       strError := 'SetMinRunGuranteeNum错误,应该为1、2,而非:' + strMinNum_1;
//      Exit ;
//    end;
    strTemp := #02 + '2D0' + strMinNum_1 + #03;
    strCommand := strTemp + BCC(strTemp);

end;

procedure TSU.SetDiagling(strb_2_8: string);
var
  strTemp:string;
begin
    if Length(strb_2_8) <> 2 then
    begin
      strError := 'SetDiagling错误,应该为2位,而非:' + IntToStr(Length(strb_2_8)) + '位';
      Exit ;
    end;
    strTemp := #02 + '2E0' + strb_2_8 + #03;
    strCommand := strTemp + BCC(strTemp);
end;

procedure TSU.StateConManagerNum;
var
  strTemp:string;
begin
    strTemp := #02 + '300' + #03;
    strCommand := strTemp + BCC(strTemp);
end;

⌨️ 快捷键说明

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