📄 su.pas
字号:
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);
strError := '命令正确';
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);
strError := '命令正确';
end;
procedure TSU.IDId;
var
strTemp:string;
begin
strTemp := #02 + '100' + #03;
strCommand := strTemp + BCC(strTemp);
strError := '命令正确';
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);
strError := '命令正确';
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);
strError := '命令正确';
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);
strError := '命令正确';
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);
strError := '命令正确';
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);
strError := '命令正确';
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);
strError := '命令正确';
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);
strError := '命令正确';
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);
strError := '命令正确';
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);
strError := '命令正确';
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);
strError := '命令正确';
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);
strError := '命令正确';
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);
strError := '命令正确';
end;
procedure TSU.StateConManagerNum;
var
strTemp:string;
begin
strTemp := #02 + '300' + #03;
strCommand := strTemp + BCC(strTemp);
strError := '命令正确';
end;
procedure TSU.StateConUNITNO(strLineNo_1:string);
var
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -