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

📄 rsu.pas

📁 使用Delphi 6.0开发用于控制空调的程序
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -