📄 rsu.pas
字号:
var
strBin,strTemp:string;
strBin2,strTemp2:string;
bb:Boolean ;
begin
if Len <> 21 then
begin
strError := '数据长度不正确!收到的是:'+ IntToStr(Len)+'位, 应该是:21位!';
Exit;
end;
bb := ChkData(strReBuffer);
if bb then
begin
strBin :='';
strBin2 := '';
strTemp :='';
strTemp2 :='';
LineInfoR.S320RCC := Copy(strReBuffer ,5,1);
strTemp := Copy(strReBuffer,6,2);
ShowMessage(strTemp);
strBin := StrToBin(strTemp);
ShowMessage(strBin);
LineInfoR.S320FAuto := BinToHave(strBin[1]);
LineInfoR.S320HotSet := BinToHave(strBin[2]);
LineInfoR.S320ColdSet := BinToHave(strBin[3]);
LineInfoR.S320SendWind := BinToHave(strBin[4]);
LineInfoR.S320F2 := BinToHave(strBin[5]);
LineInfoR.S320F1 := BinToHave(strBin[6]);
LineInfoR.S320TempSet := BinToHave(strBin[7]);
LineInfoR.S320ChuShi := BinToHave(strBin[8]);
strTemp2 := Copy(strReBuffer ,8,2);
strBin2 := StrToBin(strTemp2);
LineInfoR.S320RunStateAutoSet := BinToHave(strBin2[1]);
LineInfoR.S320Ambient := BinToHave(strBin2[2]);
LineInfoR.S320AllHot := BinToHave(strBin2[3]);
LineInfoR.S20NEAllHotLink := BinToHave(strBin2[4]);
LineInfoR.S20NEAmbient := BinToHave(strBin2[5]);
LineInfoR.S20NEAllHot := BinToHave(strBin2[6]);
LineInfoR.SetColdTempLt := StrToInt( Copy(strReBuffer ,10,2) );
LineInfoR.SetColdTempCo := StrToInt( Copy(strReBuffer ,12,2) );
LineInfoR.SetHotTempLt := StrToInt( Copy(strReBuffer ,14,2) );
LineInfoR.SetHotTempCo := StrToInt( Copy(strReBuffer ,16,2) );
LineInfoR.S320F1Cxs := strReBuffer[18];
LineInfoR.S320F2Cxs := strReBuffer[19];
strInfo := '从接口读出限制情报——成功!';
end;
end;
function RunModelReturn(ss:string):string;
var
i:Integer;
begin
i := StrToInt(ss);
case i of
0:Result :='送风';
1:Result :='制热';
2:Result :='制冷';
3:Result :='自动';
4:Result :='换气';
7:Result :='除湿';
end;
end;
function ONOFF(ss:string):string;
begin
if ss[1] = '1' then
Result := 'ON'
else Result := 'OFF';
end;
function FUGUIHappen(ss:string):string;
begin
if ss[1] = '1' then
Result := '发生'
else Result := '复归';
end;
procedure TRSU.CollCumulativeInte; //400
var
strBin,strTemp:string;
strBin2,strTemp2:string;
bb:Boolean ;
begin
if Len <> 32 then
begin
strError := '数据长度不正确!收到的是:'+ IntToStr(Len)+'位, 应该是:32位!';
Exit;
end;
bb := ChkData(strReBuffer);
if bb then
begin
strTemp := Copy(strReBuffer,5,2);
strBin := StrToBin(strTemp);
LineInfoR.SB400Warmers := ONOFF(strBin[2]);
LineInfoR.SB400Heating := ONOFF(strBin[3]);
LineInfoR.SB400Fans := ONOFF(strBin[4]);
LineInfoR.SB400Compresspor :=ONOFF(strBin[7]);
LineInfoR.SB400RunState := ONOFF(strBin[8]);
strTemp2 := Copy(strReBuffer,7,1);
strBin2 := StrToBin(strTemp2);
LineInfoR.SB400Filter := ONOFF(strBin[5]);
LineInfoR.SB400Attention := FUGUIHappen(strBin2[6]);
LineInfoR.SB400Waring := FUGUIHappen(strBin2[7]);
LineInfoR.SB400Abnormal := FUGUIHappen(strBin2[8]);
LineInfoR.RunModel := RunModelReturn(strReBuffer[8]);
LineInfoR.SB400Code := strReBuffer[9];
LineInfoR.SB400ContextCode := strReBuffer[10];
LineInfoR.SetTemp := StrToInt( Copy(strReBuffer,23,3) );
LineInfoR.ReturnTemp := StrToInt( Copy(strReBuffer,26,3) );
LineInfoR.F1VavNum := strReBuffer[29];
LineInfoR.F2VavNum := strReBuffer[30];
strInfo :='读出室内机的的积累信息——成功!';
end;
end;
procedure TRSU.CollTransmittersResult; //410
var
strBin,strTemp:string;
strBin2,strTemp2:string;
bb:Boolean ;
begin
if Len <> 10then
begin
strError := '数据长度不正确!收到的是:'+ IntToStr(Len)+'位, 应该是:10位!';
Exit;
end;
bb := ChkData(strReBuffer);
if bb then
begin
strTemp := Copy(strReBuffer,5,2);
strBin := StrToBin(strTemp);
IDInfoR.SRS485 := strBin[2];
IDInfoR.SRunModul := strBin[3];
IDInfoR.SHouJieAbal := strBin[4];
IDInfoR.SCommuAbal := strBin[5];
IDInfoR.SFilterAbal := strBin[6];
IDInfoR.SAbnormal := strBin[7];
IDInfoR.STimerAbal := strBin[8];
strTemp2 := Copy(strReBuffer,7,2);
strBin2 := StrToBin(strTemp2);
IDInfoR.SLine2Abal := strBin2[2];
IDInfoR.SLine1Abal := strBin2[3];
IDInfoR.SLine0Abal := strBin2[4];
IDInfoR.SLine2HJAbal := strBin2[6];
IDInfoR.SLine1HJAbal := strBin2[7];
IDInfoR.SLine0HJAbal := strBin2[8];
strInfo := '从接口读出发报原因——成功!';
end;
end;
procedure TRSU.ACDataInit;
var
bb:Boolean ;
begin
bb := ChkData(strReBuffer);
if bb then
strInfo :='接口内部存储数据初始化——成功!';
end;
procedure TRSU.ACCTRun;
var
bb:Boolean ;
begin
bb := ChkData(strReBuffer);
if bb then
strInfo :='对空调的运转、停止、顺序启动运转指令执行——成功!';
end;
procedure TRSU.ACCTCleaning;
var
bb:Boolean ;
begin
bb := ChkData(strReBuffer);
if bb then
strInfo :='对空调的过滤清洗重置指令执行——成功!';
end;
procedure TRSU.ACCTRunModel;
var
bb:Boolean ;
begin
bb := ChkData(strReBuffer);
if bb then
strInfo :='对空调的运转模式指令执行——成功!';
end;
procedure TRSU.ACCTSetTemp;
var
bb:Boolean ;
begin
bb := ChkData(strReBuffer);
if bb then
strInfo :='对空调的设定温度指令执行——成功!';
end;
procedure TRSU.ACCTVAV;
var
bb:Boolean ;
begin
bb := ChkData(strReBuffer);
if bb then
strInfo :='对空调的风量设定指令执行——成功!';
end;
procedure TRSU.IDReadCenterTELNO;
var
bb:Boolean ;
begin
if Len <> 36 then
begin
strError := '数据长度不正确!收到的是:'+ IntToStr(Len)+'位,应该是:36位!';
Exit;
end;
bb := ChkData(strReBuffer);
if bb then
begin
IDFR.TELNO := Copy(strReBuffer ,5,30);
strInfo := '读出同接口相连的上位机的TEL NO——成功!';
end;
end;
procedure TRSU.IDReadID;
var
bb:Boolean ;
begin
if Len <> 22 then
begin
strError := '数据长度不正确!收到的是:'+ IntToStr(Len)+'位, 应该是:22位!';
Exit;
end;
bb := ChkData(strReBuffer);
if bb then
begin
IDFR.ID := Copy(strReBuffer ,5,16);
IDInfoR.ID := IDFR.ID;
strInfo := '读出接口设定的ID——成功!';
end;
end;
procedure TRSU.IDReadNowTime;
var
bb:Boolean ;
begin
if Len <> 10 then
begin
strError := '数据长度不正确!收到的是:'+ IntToStr(Len)+'位, 应该是:10位!';
Exit;
end;
bb := ChkData(strReBuffer);
if bb then
begin
IDInfoR.NowHour := StrToInt(Copy(strReBuffer ,5,2));
IDInfoR.NowMint := StrToInt(Copy(strReBuffer ,7,2));
strInfo := '读出接口累计的现在时刻——成功!';
end;
end;
procedure TRSU.IDReadTimingSendPaperTime;
var
bb:Boolean ;
begin
if Len <> 10 then
begin
strError := '数据长度不正确!收到的是:'+ IntToStr(Len)+'位, 应该是:10位!';
Exit;
end;
bb := ChkData(strReBuffer);
if bb then
begin
IDInfoR.SendPaperHour := StrToInt(Copy(strReBuffer ,5,2));
IDInfoR.SendPaperMint := StrToInt(Copy(strReBuffer ,7,2));
strInfo := '读出接口设定的定时发报时刻——成功!';
end;
end;
procedure TRSU.IDReadDialingNum;
var
bb:Boolean ;
begin
if Len <> 7 then
begin
strError := '数据长度不正确!收到的是:'+ IntToStr(Len)+'位, 应该是:7位!';
Exit;
end;
bb := ChkData(strReBuffer);
if bb then
begin
IDInfoR.DialNum := HexToInt(Copy(strReBuffer ,5,1));
strInfo := '读出接口设定的连通为止的响应次数——成功!';
end;
end;
procedure TRSU.IDReadReDialingNum;
var
bb:Boolean ;
begin
if Len <> 8 then
begin
strError := '数据长度不正确!收到的是:'+ IntToStr(Len)+'位, 应该是:8位!';
Exit;
end;
bb := ChkData(strReBuffer);
if bb then
begin
IDInfoR.ReDialNum := HexToInt(Copy(strReBuffer ,5,2));
strInfo := '读出接口设定的连通为止的重拨次数——成功!';
end;
end;
procedure TRSU.IDReadAutoMachine;
var
bb:Boolean ;
begin
if Len <> 7 then
begin
strError := '数据长度不正确!收到的是:'+ IntToStr(Len)+'位, 应该是:7位!';
Exit;
end;
if (strReBuffer[5] <> '0') and (strReBuffer[5] <>'1') then
begin
strError := '收到的数据格式不正确,不是0,1,收到的数据是:'+ strReBuffer[5];
Exit;
end;
bb := ChkData(strReBuffer);
if bb then
begin
IDInfoR.AutoReMachine := BinToHave(Copy(strReBuffer ,5,1)) ;
strInfo := '读出接口设定的自动备机功能有无——成功!';
end;
end;
procedure TRSU.IDReadAutoRunTime;
var
bb:Boolean ;
begin
if Len <> 8 then
begin
strError := '数据长度不正确!收到的是:'+ IntToStr(Len)+'位, 应该是:8位!';
Exit;
end;
bb := ChkData(strReBuffer);
if not bb then
begin
IDInfoR.AutoRunTime := IntToStr( HexToInt(Copy (strReBuffer ,5,2)));
strInfo := '读出接口设定的自动交替运转时间——成功!';
end;
end;
function ZeroAndOneToStr(ss:string):string;
begin
if ss[1] = '0' then
Result :='禁止'
else
if ss[1] = '1' then
Result :='许可';
end;
procedure TRSU.IDReadDiagling; //7E0
var
bb:Boolean ;
strTemp,strBin:string;
begin
if Len <> 8 then
begin
strError := '数据长度不正确!收到的是:'+ IntToStr(Len)+'位, 应该是:8位!';
Exit;
end;
bb := ChkData(strReBuffer);
if bb then
begin
strTemp :=Copy(strReBuffer,5,2);
strBin := StrToBin(strTemp);
IDInfoR.SRunModul := strBin[3];
IDInfoR.SHouJieAbal := strBin[4];
IDInfoR.SCommuAbal := strBin[5];
IDInfoR.SFilterAbal := strBin[6];
IDInfoR.SAbnormal := strBin[7];
IDInfoR.STimerAbal := strBin[8];
// IDInfoR.SRunModul := ZeroAndOneToStr(strBin[3]);
// IDInfoR.SHouJieAbal := ZeroAndOneToStr(strBin[4]);
// IDInfoR.SCommuAbal := ZeroAndOneToStr(strBin[5]);
// IDInfoR.SFilterAbal := ZeroAndOneToStr(strBin[6]);
// IDInfoR.SAbnormal := ZeroAndOneToStr(strBin[7]);
// IDInfoR.STimerAbal := ZeroAndOneToStr(strBin[8]);
strInfo := '读出接口设定的各种情况下的发报有无——成功!';
end;
end;
procedure TRSU.IDReadMinRunGurNum;
var
bb:Boolean ;
begin
if Len <> 7 then
begin
strError := '数据长度不正确!收到的是:'+ IntToStr(Len)+'位, 应该是:7位!';
Exit;
end;
if (strReBuffer[5] <> '1') AND (strReBuffer[5] <> '2') and (strReBuffer[5] <> '0') then
begin
strError := '接收到的数据不正确,本应该为:1,2.而现在收到的是:' + strReBuffer[5];
Exit;
end;
bb := ChkData(strReBuffer);
if bb then
begin
IDInfoR.MinRunGrtNum := Copy(strReBuffer ,5,1);
strInfo := '读出接口设定的最低运转保证台数——成功!';
end;
end;
procedure TRSU.ReadRAM;
begin
end;
procedure TRSU.WriteRAM;
begin
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -