#include "RuntimeData.h" #include "DevStartStop.h" #define cmDeviceSetTempeSensType 211 #define cmDeviceReadTempeSensType 212 #define cmDeviceSetSignalInOutType 199 #define cmDeviceQuerySignalInOutType 200 #define cmDeviceDisplayPadMute 203 #define cmDeviceDisplayPadDescpSet 204 #define cmDeviceRuntimeDataStart 207 #define cmDeviceRuntimeDataStop 208 #define cmDeviceLinkagePowerSuplyMute 209 static const unsigned char stHexNum[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; void TDevStartStop::SendStartStopCmd(unsigned int IsStart) { unsigned char tCmd; unsigned char cVal; unsigned int i; unsigned int Len; int iVal; unsigned char aP0, aP1; if(IsSelfCtl){ if(IsStart){ tCmd = cmAutoStart; }else{ tCmd = cmAutoStop; } for(i=0; i<8; i++){ CommData[i] = 0; } CommData[0] = 0; CommData[1] = CtlNum; CommData[2] = Path0; CommData[3] = Path1; CommData[4] = 0; CommData[5] = dType; aP0 = Path0 -1; aP1 = Path1 -1; if( (Port[aP0].StateTable[aP1] & dEpStateBitMask) == 0){ InnerCan.OBufFastInsert(1, tCmd, CommData, 6); }else{ } }else{ if(MainCtl.fData.Split.NetworkMode == 1){ if(pNumFound){ ProtoC2C.MasterDoDevRemoteStart(CtlNum, Path0, Path1, IsStart); }else{ } }else{ } } } void TDevStartStop::SendSmokeCmdRead() { TCanHeaderID aIde; unsigned char cVal; unsigned int i; unsigned int Len; int iVal; unsigned char aPx; ProcessingRt.DevType = 0; //点型烟感 ProcessingRt.DataType = 1; //烟感灵敏度 Len =4; for(i=0; i<8; i++){ CommData[i] = 0; } CommData[0] = 3; CommData[1] = Path0; ProcessingRt.P0 = Path0; CommData[2] = Path1; ProcessingRt.P1 = Path1; CommData[3] = ProcessingRt.DataType; aIde.BitF.Cmd = cmQuerySens; aIde.BitF.Pri = 1; aIde.BitF.sLvl = 1; aIde.BitF.dLvl = 7; aIde.BitF.sAddr = 0; aIde.BitF.dAddr = 127; InnerCan.Buf4GuiSend.Insert(aIde, CommData, Len); } void TDevStartStop::SendTempeCmdRead() { TCanHeaderID aIde; unsigned char cVal; unsigned int i; unsigned int Len; int iVal; unsigned char aPx; Len =8; for(i=0; i<8; i++){ CommData[i] = 0; } CommData[0] = 0; CommData[1] = MainCtl.fData.Split.MyNum; CommData[2] = Path0; ProcessingRt.P0 = Path0; CommData[3] = Path1; ProcessingRt.P1 = Path1; ProcessingRt.DataType = 0x06; CommData[4] = ProcessingRt.DataType; aIde.BitF.Cmd = cmQueryStaticData; aIde.BitF.Pri = 1; aIde.BitF.sLvl = 1; aIde.BitF.dLvl = 7; aIde.BitF.sAddr = 0; aIde.BitF.dAddr = 127; InnerCan.Buf4GuiSend.Insert(aIde, CommData, Len); } void TDevStartStop::SendModuleSignalInOutTypeRead() { TCanHeaderID aIde; unsigned char cVal; unsigned int i; unsigned int Len; int iVal; unsigned char aPx; ProcessingRt.DevType = 0; //点型烟感 ProcessingRt.DataType = 1; //烟感灵敏度 Len =4; for(i=0; i<8; i++){ CommData[i] = 0; } CommData[0] = 3; CommData[1] = Path0; ProcessingRt.P0 = Path0; CommData[2] = Path1; ProcessingRt.P1 = Path1; CommData[3] = ProcessingRt.DataType; aIde.BitF.Cmd = cmDeviceQuerySignalInOutType; aIde.BitF.Pri = 1; aIde.BitF.sLvl = 1; aIde.BitF.dLvl = 7; aIde.BitF.sAddr = 0; aIde.BitF.dAddr = 127; InnerCan.Buf4GuiSend.Insert(aIde, CommData, Len); } void TDevStartStop::SendVaSettingRead() { TCanHeaderID aIde; unsigned char cVal; unsigned int i; unsigned int Len; int iVal; unsigned char aPx; ProcessingRt.DevType = 0; //点型烟感 ProcessingRt.DataType = 1; //烟感灵敏度 Len =4; for(i=0; i<8; i++){ CommData[i] = 0; } CommData[0] = 3; CommData[1] = MainCtl.fData.Split.MyNum; CommData[2] = Path0; ProcessingRt.P0 = Path0; CommData[3] = Path1; ProcessingRt.P1 = Path1; CommData[4] = 0; aIde.BitF.Cmd = cmQueryStaticData; aIde.BitF.Pri = 1; aIde.BitF.sLvl = 1; aIde.BitF.dLvl = 7; aIde.BitF.sAddr = 0; aIde.BitF.dAddr = 127; InnerCan.Buf4GuiSend.Insert(aIde, CommData, Len); } void TDevStartStop::RealTimeSendCmd(const int StartStop) { TCanHeaderID aIde; unsigned int i; unsigned int Len; for(i=0; i<8; i++){ CommData[i] = 0; } CommData[2] = Path0; CommData[3] = Path1; if(StartStop != 0){ aIde.BitF.Cmd = cmQueryRuntimeData; }else{ aIde.BitF.Cmd = cmQueryAbout; } Len = 4; aIde.BitF.Pri = 1; aIde.BitF.sLvl = 1; aIde.BitF.dLvl = 7; aIde.BitF.sAddr = 0; aIde.BitF.dAddr = 127; InnerCan.Buf4GuiSend.Insert(aIde, CommData, Len); } void TDevStartStop::RealTimeSendCmdAbort() { TCanHeaderID aIde; unsigned char cVal; unsigned int i; unsigned int Len; int iVal; unsigned char aP0,aP1; for(i=0; i<8; i++){ CommData[i] = 0; } aIde.BitF.Cmd = cmQueryAbout; Len = 4; //Prm CommData[0] = 0; CommData[1] = 0; CommData[2] = Path0; CommData[3] = Path1; aIde.BitF.Pri = 1; aIde.BitF.sLvl = 1; aIde.BitF.dLvl = 7; aIde.BitF.sAddr = 0; aIde.BitF.dAddr = 127; InnerCan.Buf4GuiSend.Insert(aIde, CommData, Len); } void TDevStartStop::RunTimeSendCmd(const int StartStop) { TCanHeaderID aIde; unsigned int i; unsigned int Len; for(i=0; i<8; i++){ CommData[i] = 0; } CommData[2] = Path0; CommData[3] = Path1; if(StartStop != 0){ aIde.BitF.Cmd = cmDeviceRuntimeDataStart; }else{ aIde.BitF.Cmd = cmDeviceRuntimeDataStop; } Len = 4; aIde.BitF.Pri = 1; aIde.BitF.sLvl = 1; aIde.BitF.dLvl = 7; aIde.BitF.sAddr = 0; aIde.BitF.dAddr = 127; InnerCan.Buf4GuiSend.Insert(aIde, CommData, Len); } void TDevStartStop::PermissionCmdGO() { int aVal; switch(PermissionCmd){ case TDevProperty::pcStart: SendStartStopCmd(1); break; case TDevProperty::pcStop: SendStartStopCmd(0); break; } } void TDevStartStop::ClearReqDataState() { SmokerRt.IsWait4ReadSens = 0; SmokerRt.IsWait4WriteSens = 0; TempeRt.IsWait4ReadSensType =0; ModuleInRt.IsWait4ReadSignalType =0; ModuleInRt.IsWait4WriteSignalType =0; ModuleInOutRt.IsWait4ReadSignalType =0; ModuleInOutRt.IsWait4WriteSignalType =0; ModuleOutRt.IsWait4ReadSignalType =0; ModuleOutRt.IsWait4WriteSignalType =0; VaRt.IsWait4ReadVaSetting =0; VaRt.IsWait4WriteVaSetting =0; DisplayPadRt.IsMute =0; DisplayPadRt.IsDownloadDescp =0; } void TDevStartStop::UpdataOnlineData() { if(dType == dgTYPE_SMOKE_DETECTOR){ if(IsSelfCtl){ SmokerRt.IsWait4ReadSens = 1; SmokerRt.IsWait4WriteSens = 0; SmokerRt.RecRdy = 0; SmokerRt.RecCmd = 0; SmokerRt.WaitTick = 0; SendSmokeCmdRead(); if(EdittingDescp == 0)TextRender_string24(IList->Edit[0].Bound.Right + 6, IList->Edit[0].Bound.Top + 4, clNearWhite, ItemColor, "获取中 "); }else{ if(EdittingDescp == 0)TextRender_string24(IList->Edit[0].Bound.Right + 6, IList->Edit[0].Bound.Top + 4, clNearWhite, ItemColor, "--------"); } }else if(dType == dgTYPE_TEMPE_DETECTOR){ if(IsSelfCtl){ TempeRt.IsWait4ReadSensType = 1; TempeRt.RecRdy = 0; TempeRt.RecCmd = 0; TempeRt.WaitTick = 0; SendTempeCmdRead(); if(EdittingDescp == 0)TextRender_string24(IList->Edit[0].Bound.Right + 6, IList->Edit[0].Bound.Top + 4, clNearWhite, ItemColor, "获取中 "); }else{ if(EdittingDescp == 0)TextRender_string24(IList->Edit[0].Bound.Right + 6, IList->Edit[0].Bound.Top + 4, clNearWhite, ItemColor, "--------"); } }else if(dType == dgTYPE_HAND_REPORT){ }else if(dType == dgTYPE_FIRE_HydrantKp){ }else if(dType == dgTYPE_IN_MODULE){ }else if(dType == dgTYPE_OUT_MODULE){ }else if(dType == dgTYPE_INOUT_MODULE_NonSource){ }else if(dType == dgType_VAALRAM){ }else if(dType == dgTYPE_DISPLAY_PAD){ }else if(dType == dgTYPE_LINKAGE_POWERSUPLY){ } } void TDevStartStop::PushOneRealDataReport(u8 aP0, u8 aP1, u8 aInx, u8 D0, u8 D1, u8 D2, u8 D3) { unsigned int aAddr, i, Num, Num10, Pst; unsigned char Da[4]; int x,y; const int MaxLen=41; if(IsShow == 0)return; if(aP0 != Path0)return; if(aP1 != Path1)return; Da[0] = D0; Da[1] = D1; Da[2] = D2; Da[3] = D3; if(PanelDrawData.TextDrawLine >7){ PanelDrawData.Reset(); } if(aInx == 0){ RuntimeData.voltage = Da[1]; PanelDrawData.TextDrawLine++; if(PanelDrawData.TextDrawLine >7){ PanelDrawData.Reset(); } if(PanelDrawData.TextDrawLine == 0){ for(int z=0; z<8; z++){ for(int g=0; g<80; g++){ IList->TextOut[z][g] = '\0'; } } if( (EdittingDescp == 0) && (IsPermission == 0) ){ if( PanelIsUsingText && (IsSelfChecking == 0) && (PmsIntervene.IsShow == 0) ){ RectFillRender(Lv.Panel.Left, Lv.Panel.Top, Lv.Panel.Right, Lv.Panel.Bottom, PanelColor); } } } y = Lv.Panel.Top + 1; y = y + PanelDrawData.TextDrawLine * 27; x = Lv.Panel.Left + 2; TMyString::sClear(TextTmp); PanelDrawData.UsingTextHex = PanelDrawData.DesertTextHex; if(PanelDrawData.IsHexList[PanelDrawData.TextDrawLine] == dtNone){ if(PanelDrawData.UsingTextHex)PanelDrawData.IsHexList[PanelDrawData.TextDrawLine] =dtHex; else PanelDrawData.IsHexList[PanelDrawData.TextDrawLine] =dtDec; } if(PanelDrawData.IsHexList[PanelDrawData.TextDrawLine] == dtHex){ for(i=0; i<4; i++){ Pst= 0 + i*3; Num = Da[i] % 16; Num10 = Da[i] / 16 % 16; IList->TextOut[PanelDrawData.TextDrawLine][Pst+0] = stHexNum[Num10]; IList->TextOut[PanelDrawData.TextDrawLine][Pst+1] = stHexNum[Num]; if(i<3)IList->TextOut[PanelDrawData.TextDrawLine][Pst+2] = ' '; else IList->TextOut[PanelDrawData.TextDrawLine][Pst+2] = ','; } if( (EdittingDescp == 0) && (IsPermission == 0) ){ if( PanelIsUsingText && (IsSelfChecking == 0) && (PmsIntervene.IsShow == 0) ) TextRender_string24(x,y,clNearBlack, PanelColor, IList->TextOut[PanelDrawData.TextDrawLine]); } }else if(PanelDrawData.IsHexList[PanelDrawData.TextDrawLine] == dtDec){ for(i=0; i<4; i++){ Pst= 0 + i*4; Num = Da[i] / 100; IList->TextOut[PanelDrawData.TextDrawLine][Pst+0] = Num + '0'; Num = Da[i] % 100 / 10; IList->TextOut[PanelDrawData.TextDrawLine][Pst+1] = Num + '0'; Num = Da[i] % 10; IList->TextOut[PanelDrawData.TextDrawLine][Pst+2] = Num + '0'; if(i<3)IList->TextOut[PanelDrawData.TextDrawLine][Pst+3] = ' '; else IList->TextOut[PanelDrawData.TextDrawLine][Pst+3] = ','; } if( (EdittingDescp == 0) && (IsPermission == 0) ){ if( PanelIsUsingText && (IsSelfChecking == 0) && (PmsIntervene.IsShow == 0) ) TextRender_string24(x,y,clNearBlack, PanelColor, IList->TextOut[PanelDrawData.TextDrawLine]); } } }else if(aInx < 4){ if(aInx == 2){ /*if(dType == dgTYPE_TEMPE_DETECTOR){ Data.GotTempeSensType[0] = 0xF1; Data.GotTempeSensType[1] = Path0; Data.GotTempeSensType[2] = Path1; Data.GotTempeSensType[3] = D1; }*/ } y = Lv.Panel.Top + 1; y = y + PanelDrawData.TextDrawLine * 27; x = Lv.Panel.Left + 2; TMyString::sClear(TextTmp); if(PanelDrawData.IsHexList[PanelDrawData.TextDrawLine] == dtHex){ for(i=0; i<4; i++){ Pst= aInx*12 + i*3; if(Pst > (MaxLen-1-2))break; Num = Da[i] % 16; Num10 = Da[i] / 16 % 16; IList->TextOut[PanelDrawData.TextDrawLine][Pst+0] = stHexNum[Num10]; IList->TextOut[PanelDrawData.TextDrawLine][Pst+1] = stHexNum[Num]; if((Pst+2)<=(MaxLen-1)){ if(i<3)IList->TextOut[PanelDrawData.TextDrawLine][Pst+2] = ' '; else IList->TextOut[PanelDrawData.TextDrawLine][Pst+2] = ','; } } if( (EdittingDescp == 0) && (IsPermission == 0) ){ if( PanelIsUsingText && (IsSelfChecking == 0) && (PmsIntervene.IsShow == 0) /*&& (aInx == 3)*/ ) TextRender_string24(x,y,clNearBlack, PanelColor, IList->TextOut[PanelDrawData.TextDrawLine]); } }else if(PanelDrawData.IsHexList[PanelDrawData.TextDrawLine] == dtDec){ for(i=0; i<4; i++){ Pst= aInx*16 + i*4; if(Pst > (MaxLen-1-3))break; Num = Da[i] / 100; IList->TextOut[PanelDrawData.TextDrawLine][Pst+0] = Num + '0'; Num = Da[i] % 100 / 10; IList->TextOut[PanelDrawData.TextDrawLine][Pst+1] = Num + '0'; Num = Da[i] % 10; IList->TextOut[PanelDrawData.TextDrawLine][Pst+2] = Num + '0'; if((Pst+3)<=(MaxLen-1)){ if(i<3)IList->TextOut[PanelDrawData.TextDrawLine][Pst+3] = ' '; else IList->TextOut[PanelDrawData.TextDrawLine][Pst+3] = ','; } } if( (EdittingDescp == 0) && (IsPermission == 0) ){ if( PanelIsUsingText && (IsSelfChecking == 0) && (PmsIntervene.IsShow == 0) /*&& (aInx == 3)*/ ) TextRender_string24(x,y,clNearBlack, PanelColor, IList->TextOut[PanelDrawData.TextDrawLine]); } } } } void TDevStartStop::PushInnerCanData(unsigned char aCmd, unsigned char *pData) { int i; switch(HwDevType){ case TDevProperty::htNoType: break; case TDevProperty::htSmoker: if(aCmd == cmQuerySens){ for(i=0; i<8; i++)RecData[i] = pData[i]; if( (ProcessingRt.P0 == RecData[1]) && (ProcessingRt.P1 == RecData[2]) && (ProcessingRt.DataType == RecData[3]) ){ ProcessingRt.dValGot[0] = RecData[4]; ProcessingRt.dValGot[1] = RecData[5]; ProcessingRt.dValGot[2] = RecData[6]; ProcessingRt.dValGot[3] = RecData[7]; SmokerRt.RecRdy =1; SmokerRt.RecCmd =aCmd; } } break; case TDevProperty::htTempe: if(aCmd == cmQueryStaticData){ for(i=0; i<8; i++)RecData[i] = pData[i]; if( (ProcessingRt.P0 == RecData[1]) && (ProcessingRt.P1 == RecData[2]) ){ if( RecData[3] == 0 ){ Data.TempeSenType = RecData[5]; TempeRt.RecRdy =1; TempeRt.RecCmd =aCmd; } } } break; case TDevProperty::htHandPad: break; case TDevProperty::htHydrantPad: break; case TDevProperty::htModuleIn: if(aCmd == cmDeviceQuerySignalInOutType){ for(i=0; i<8; i++)RecData[i] = pData[i]; if( (ProcessingRt.P0 == RecData[1]) && (ProcessingRt.P1 == RecData[2]) && (ProcessingRt.DataType == RecData[3]) ){ ProcessingRt.dValGot[0] = RecData[4]; ModuleInRt.RecRdy =1; ModuleInRt.RecCmd =aCmd; } } break; case TDevProperty::htModuleInOut: if(aCmd == cmDeviceQuerySignalInOutType){ for(i=0; i<8; i++)RecData[i] = pData[i]; if( (ProcessingRt.P0 == RecData[1]) && (ProcessingRt.P1 == RecData[2]) && (ProcessingRt.DataType == RecData[3]) ){ ProcessingRt.dValGot[0] = RecData[4]; ModuleInOutRt.RecRdy =1; ModuleInOutRt.RecCmd =aCmd; } } break; case TDevProperty::htModuleOut: if(aCmd == cmDeviceQuerySignalInOutType){ for(i=0; i<8; i++)RecData[i] = pData[i]; if( (ProcessingRt.P0 == RecData[1]) && (ProcessingRt.P1 == RecData[2]) && (ProcessingRt.DataType == RecData[3]) ){ ProcessingRt.dValGot[0] = RecData[4]; ModuleOutRt.RecRdy =1; ModuleOutRt.RecCmd =aCmd; } } break; case TDevProperty::htVa: if(aCmd == cmQueryStaticData){ for(i=0; i<8; i++)RecData[i] = pData[i]; if( (ProcessingRt.P0 == RecData[1]) && (ProcessingRt.P1 == RecData[2]) && ( 0 == RecData[3]) ){ Data.VaSoundType = RecData[4]; Data.VaVisionType = RecData[5]; Data.VaIs4Linkage = RecData[6]; VaRt.RecRdy =1; VaRt.RecCmd =aCmd; } } break; case TDevProperty::htDisplayPad: break; case TDevProperty::htLinkagePowerSuply: break; default : break; } }