Пример #1
0
        public static void SaveAllGroupCommandsFrmDatabase()
        {
            string str = string.Format("delete * from dbGrpRemark");

            DataModule.ExecuteSQLDatabase(str);

            str = string.Format("delete * from dbGrpCMD");
            DataModule.ExecuteSQLDatabase(str);

            if (CsConst.myTemplates == null)
            {
                return;
            }

            ////read keys commands to buffer
            foreach (ControlTemplates oTmp in CsConst.myTemplates)
            {
                if (oTmp.GpCMD != null)
                {
                    string strsql = string.Format("Insert into dbGrpRemark(GrpID,Remark,bytType,bytGpID) values ({0},'{1}',{2},{3})", oTmp.ID, oTmp.Name, oTmp.bytType, oTmp.bytGpID);
                    DataModule.ExecuteSQLDatabase(strsql);
                    for (int i = 0; i < oTmp.GpCMD.Count; i++)
                    {
                        UVCMD.ControlTargets TmpCmds = oTmp.GpCMD[i];
                        ///// insert into all commands to database
                        strsql = string.Format("Insert into dbGrpCMD(GrpID,objID,KeyFunType,SubNetID,DeviceID,FirstParameter,"
                                               + "SecondParameter,RunTimeMinute,RunTimeSecond,strHint,Default1) values ({0},{1},{2},{3},{4},{5},{6},{7},{8},'{9}',{10})",
                                               oTmp.ID, TmpCmds.ID, TmpCmds.Type, TmpCmds.SubnetID, TmpCmds.DeviceID, TmpCmds.Param1,
                                               TmpCmds.Param2, TmpCmds.Param3, TmpCmds.Param4, TmpCmds.Hint, oTmp.bytType);
                        DataModule.ExecuteSQLDatabase(strsql);
                    }
                }
            }
        }
Пример #2
0
        public static ControlTemplates AddNewTemplateToPublicGroup(String TemplateName, List <UVCMD.ControlTargets> TemplatesCMD)
        {
            if (CsConst.myTemplates == null)
            {
                CsConst.myTemplates = new List <ControlTemplates>();
            }

            //添加到结构体
            #region
            ControlTemplates oTmp = new ControlTemplates();
            oTmp.ID      = GetNewIDForGroup();
            oTmp.Name    = TemplateName;
            oTmp.bytType = 1;
            oTmp.bytGpID = 0;
            oTmp.GpCMD   = new List <UVCMD.ControlTargets>();

            for (int i = 0; i < TemplatesCMD.Count; i++)
            {
                UVCMD.ControlTargets oCtrls = (UVCMD.ControlTargets)TemplatesCMD[i].Clone();
                oTmp.GpCMD.Add(oCtrls);
            }
            CsConst.myTemplates.Add(oTmp);
            #endregion
            return(oTmp);
        }
Пример #3
0
 public UVCMD.ControlTargets GetCommandFrmBasicInformation(Byte bChannelId)
 {
     UVCMD.ControlTargets tmp = new UVCMD.ControlTargets();
     try
     {
         tmp.SubnetID = subnetID;
         tmp.DeviceID = deviceID;
         tmp.Param1   = bChannelId;
         switch (bigType)
         {
         case 1:
             if (smallType == 0 || smallType == 1)
             {
                 if (this is HdlSimpleLights)
                 {
                     HdlSimpleLights oTmp = (HdlSimpleLights)(this);
                     tmp.Type   = 89;
                     tmp.Param2 = oTmp.sumLightChns[bChannelId - 1].curStatus[0];
                 }
             }
             break;
         }
     }
     catch
     {
         return(tmp);
     }
     return(tmp);
 }
Пример #4
0
 public void ReadFloorheatingAdvancedCommandsGroup(Byte SubNetID, Byte DeviceID, int DeviceType)
 {
     // read advance commands when playing
     AdvancedCommands = new UVCMD.ControlTargets[16];
     Byte[] ArayTmp = new byte[1];
     if (CsConst.isRestore)
     {
         for (byte bytI = 0; bytI <= 15; bytI++)
         {
             ArayTmp[0] = (Byte)(100 + bytI);
             if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x195A, SubNetID, DeviceID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
             {
                 AdvancedCommands[bytI]          = new UVCMD.ControlTargets();
                 AdvancedCommands[bytI].ID       = CsConst.myRevBuf[26];
                 AdvancedCommands[bytI].Type     = CsConst.myRevBuf[27];
                 AdvancedCommands[bytI].SubnetID = CsConst.myRevBuf[28];
                 AdvancedCommands[bytI].DeviceID = CsConst.myRevBuf[29];
                 AdvancedCommands[bytI].Param1   = CsConst.myRevBuf[30];
                 AdvancedCommands[bytI].Param2   = CsConst.myRevBuf[31];
                 AdvancedCommands[bytI].Param3   = CsConst.myRevBuf[32];
                 AdvancedCommands[bytI].Param4   = CsConst.myRevBuf[33];
                 CsConst.myRevBuf = new byte[1200];
                 HDLUDP.TimeBetwnNext(10);
             }
             else
             {
                 return;
             }
         }
     }
 }
Пример #5
0
        /// <summary>
        /// 单独下载某个表格的目标
        /// </summary>
        /// <param name="bytSubID"></param>
        /// <param name="bytDevID"></param>
        /// <param name="bytLogicBlock"></param>
        /// <param name="bytTableID"></param>
        public void DownLoadLogicBlockOneTableCommandsGroup(Byte bytSubID, Byte bytDevID, Byte bytLogicBlock, Byte bytTableID, Byte bStartCmd, Byte bToCmd)
        {
            Byte bytI = 0;

            for (Byte TmpTableID = 1; TmpTableID <= MyDesign[bytLogicBlock].TableIDs[0]; TmpTableID++)
            {
                if (bytTableID == MyDesign[bytLogicBlock].TableIDs[TmpTableID])
                {
                    bytI = (Byte)(TmpTableID);
                    break;
                }
            }
            #region
            if (bStartCmd == 0 && bToCmd == 0)
            {
                bStartCmd = 1;
                bToCmd    = 20;
            }
            MyDesign[bytLogicBlock].ArmCmds[bytI - 1] = new List <UVCMD.ControlTargets>();

            for (byte bytJ = 1; bytJ <= 20; bytJ++)
            {
                if (bytJ >= bStartCmd && bytJ <= bToCmd)
                {
                    Byte[] ArayTmp = new byte[] { 0, (Byte)(bytLogicBlock * 12 + bytTableID), bytJ };

                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xDA1C, bytSubID, bytDevID, false, true, true, false) == true)
                    {
                        UVCMD.ControlTargets oCMD = new UVCMD.ControlTargets();
                        oCMD.ID   = CsConst.myRevBuf[28];
                        oCMD.Type = CsConst.myRevBuf[29];  //转换为正确的类型

                        oCMD.SubnetID = CsConst.myRevBuf[30];
                        oCMD.DeviceID = CsConst.myRevBuf[31];
                        oCMD.Param1   = CsConst.myRevBuf[32];
                        oCMD.Param2   = CsConst.myRevBuf[33];
                        oCMD.Param3   = CsConst.myRevBuf[34];
                        oCMD.Param4   = CsConst.myRevBuf[35];
                        //oCMD.Hint = HDLSysPF.GetHintForCMD(oCMD.SubnetID, oCMD.DeviceID, oCMD.Param1, oCMD.Param2, oCMD.Type);
                        CsConst.myRevBuf = new byte[1200];
                        MyDesign[bytLogicBlock].ArmCmds[bytI - 1].Add(oCMD);
                    }
                    else
                    {
                        return;
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(5 + bytI + (bytLogicBlock - 1) * 8);
                    }
                }
            }
            #endregion
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(8 * bytLogicBlock);
            }
        }
Пример #6
0
        public void DownloadLogicFalseCommandsFromDevice(Byte SubNetID, Byte DeviceID, int DeviceType, Byte bStartCmd, Byte bToCmd)
        {
            try
            {
                Byte  sumLogicCommandsInEveryBlock = 20;
                Byte  sumLogibBlockInModule        = 24;
                Int32 operationCode = 0x1612;
                if (Eightin1DeviceTypeList.HDL8in1DeviceType.Contains(DeviceType))
                {
                    operationCode                = 0x1654;
                    sumLogibBlockInModule        = Eightin1DeviceTypeList.TotalLogic;
                    sumLogicCommandsInEveryBlock = Eightin1DeviceTypeList.sumCommandsInEveryBlock;
                }

                if (bStartCmd == 0 && bToCmd == 0)
                {
                    bStartCmd = 1;
                    bToCmd    = sumLogicCommandsInEveryBlock;
                }

                //不成立的触发目标
                #region
                NoSetUp = new List <UVCMD.ControlTargets>();
                for (Byte bytJ = 1; bytJ <= sumLogicCommandsInEveryBlock; bytJ++)
                {
                    if (bytJ >= bStartCmd && bytJ <= bToCmd)
                    {
                        Byte[] ArayTmp = new byte[2] {
                            (Byte)(ID + sumLogibBlockInModule), bytJ
                        };
                        if (CsConst.mySends.AddBufToSndList(ArayTmp, operationCode, SubNetID, DeviceID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                        {
                            UVCMD.ControlTargets oCMD = new UVCMD.ControlTargets();
                            oCMD.ID   = CsConst.myRevBuf[27];
                            oCMD.Type = CsConst.myRevBuf[28];  //转换为正确的类型

                            oCMD.SubnetID    = CsConst.myRevBuf[29];
                            oCMD.DeviceID    = CsConst.myRevBuf[30];
                            oCMD.Param1      = CsConst.myRevBuf[31];
                            oCMD.Param2      = CsConst.myRevBuf[32];
                            oCMD.Param3      = CsConst.myRevBuf[33];
                            oCMD.Param4      = CsConst.myRevBuf[34];
                            CsConst.myRevBuf = new byte[1200];
                            NoSetUp.Add(oCMD);
                            CsConst.myRevBuf = new byte[1200];
                            HDLUDP.TimeBetwnNext(1);
                        }
                        else
                        {
                            return;
                        }
                    }
                }
                #endregion
            }
            catch { }
        }
Пример #7
0
        public static void ReadAllGroupCommandsFrmDatabase()
        {
            CsConst.myTemplates = new List <ControlTemplates>();

            ////read keys commands to buffer
            string          str       = string.Format("select * from dbGrpRemark order by GrpID");
            OleDbDataReader drKeyCmds = DataModule.SearchAResultSQLDB(str);

            if (drKeyCmds != null)
            {
                while (drKeyCmds.Read())
                {
                    ControlTemplates oTmpGrp = new ControlTemplates();
                    oTmpGrp.ID      = drKeyCmds.GetInt16(0);
                    oTmpGrp.Name    = drKeyCmds.GetString(1);
                    oTmpGrp.bytType = drKeyCmds.GetByte(2);
                    oTmpGrp.bytGpID = drKeyCmds.GetByte(3);
                    oTmpGrp.GpCMD   = new List <UVCMD.ControlTargets>();

                    str = string.Format("select * from dbGrpCMD where GrpID = {0} order by objID", oTmpGrp.ID);

                    OleDbDataReader drKeyCmds1 = DataModule.SearchAResultSQLDB(str);

                    if (drKeyCmds1 != null)
                    {
                        while (drKeyCmds1.Read())
                        {
                            UVCMD.ControlTargets TmpCmd = new UVCMD.ControlTargets();
                            TmpCmd.ID       = drKeyCmds1.GetByte(1);
                            TmpCmd.Type     = drKeyCmds1.GetByte(2);
                            TmpCmd.SubnetID = drKeyCmds1.GetByte(3);
                            TmpCmd.DeviceID = drKeyCmds1.GetByte(4);
                            TmpCmd.Param1   = drKeyCmds1.GetByte(5);
                            TmpCmd.Param2   = drKeyCmds1.GetByte(6);
                            TmpCmd.Param3   = drKeyCmds1.GetByte(7);
                            TmpCmd.Param4   = drKeyCmds1.GetByte(8);

                            oTmpGrp.GpCMD.Add(TmpCmd);
                        }
                        drKeyCmds1.Close();
                    }
                    CsConst.myTemplates.Add(oTmpGrp);
                }
                drKeyCmds.Close();
            }
        }
Пример #8
0
 public Boolean ReadMusicAdvancedCommandsGroup(Byte SubNetID, Byte DeviceID, int DeviceType)
 {
     try
     {
         // read advance commands when playing
         Targets = new UVCMD.ControlTargets[14];
         Byte[] ArayTmp = new byte[2];
         if (CsConst.isRestore)
         {
             for (byte bytI = 0; bytI <= 13; bytI++)
             {
                 ArayTmp = new Byte[] { (Byte)(bytI), ID };
                 if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x195A, SubNetID, DeviceID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                 {
                     Targets[bytI]          = new UVCMD.ControlTargets();
                     Targets[bytI].ID       = CsConst.myRevBuf[26];
                     Targets[bytI].Type     = CsConst.myRevBuf[27];
                     Targets[bytI].SubnetID = CsConst.myRevBuf[28];
                     Targets[bytI].DeviceID = CsConst.myRevBuf[29];
                     Targets[bytI].Param1   = CsConst.myRevBuf[30];
                     Targets[bytI].Param2   = CsConst.myRevBuf[31];
                     Targets[bytI].Param3   = CsConst.myRevBuf[32];
                     Targets[bytI].Param4   = CsConst.myRevBuf[33];
                     CsConst.myRevBuf       = new byte[1200];
                     HDLUDP.TimeBetwnNext(10);
                 }
                 else
                 {
                     return(false);
                 }
             }
         }
     }
     catch
     {
         return(false);
     }
     return(true);
 }
Пример #9
0
        /// <summary>
        ///下载设置
        /// </summary>
        public bool DownloadSensorInfosToDevice(string DevName, int intActivePage, int wdDeviceType, int num1, int num2) // 0 mean all, else that tab only
        {
            string strMainRemark = DevName.Split('\\')[1].Trim();

            DevName = DevName.Split('\\')[0].Trim();

            //保存basic informations网络信息
            byte bytSubID = byte.Parse(DevName.Split('-')[0].ToString());
            byte bytDevID = byte.Parse(DevName.Split('-')[1].ToString());

            byte[] ArayTmp = null;
            if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x000E, bytSubID, bytDevID, false, true, true, false) == true)
            {
                byte[] arayRemark = new byte[20];
                for (int intI = 0; intI < 20; intI++)
                {
                    arayRemark[intI] = CsConst.myRevBuf[25 + intI];
                }
                Devname = bytSubID.ToString() + "-" + bytDevID.ToString() + "\\" + HDLPF.Byte2String(arayRemark);

                HDLUDP.TimeBetwnNext(1);
            }
            else
            {
                return(false);
            }


            //传感器设置
            if (intActivePage == 0 || intActivePage == 1 || intActivePage == 2)
            {
                #region
                if (intActivePage == 0 || intActivePage == 1)
                {
                    // read led灯使能位
                    #region
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xDB3E, bytSubID, bytDevID, false, true, true, false) == true)
                    {
                        Array.Copy(CsConst.myRevBuf, 27, ONLEDs, 0, CsConst.myRevBuf[26]);

                        HDLUDP.TimeBetwnNext(1);
                    }
                    else
                    {
                        return(false);
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(1);
                    }
                    #endregion
                }
                if (intActivePage == 0 || intActivePage == 1 || intActivePage == 2)
                {
                    //读取使能位
                    #region
                    ArayTmp = null;
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x161C, bytSubID, bytDevID, false, true, true, false) == true)
                    {
                        Array.Copy(CsConst.myRevBuf, 26, EnableSensors, 0, 12);

                        HDLUDP.TimeBetwnNext(1);
                    }
                    else
                    {
                        return(false);
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(2);
                    }
                    #endregion
                }
                if (intActivePage == 0 || intActivePage == 1)
                {
                    //读取补偿值 十二合一额外命令读写
                    #region
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1600, bytSubID, bytDevID, false, true, true, false) == true)
                    {
                        Array.Copy(CsConst.myRevBuf, 26, ParamSensors, 0, 14);

                        HDLUDP.TimeBetwnNext(1);
                    }
                    else
                    {
                        return(false);
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(3);
                    }
                    #endregion

                    //恒照度读取
                    #region
                    if (wdDeviceType == 328)
                    {
                        EnableBroads = new byte[15];
                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x16A9, bytSubID, bytDevID, false, true, true, false) == true)
                        {
                            Array.Copy(CsConst.myRevBuf, 26, EnableBroads, 0, 9);

                            HDLUDP.TimeBetwnNext(1);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(5);
                    }
                    #endregion
                }
                #endregion
                MyRead2UpFlags[0] = true;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(10);
            }
            //逻辑块功能设置
            if (intActivePage == 0 || intActivePage == 2)
            {
                #region
                // 读取24个逻辑的使能位
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1618, bytSubID, bytDevID, false, true, true, false) == true)
                {
                    logic = new List <Logic>();
                    byte[] ArayTmpMode = new byte[24];
                    Array.Copy(CsConst.myRevBuf, 26, ArayTmpMode, 0, 24);

                    HDLUDP.TimeBetwnNext(1);
                    for (int intI = 1; intI <= 24; intI++)
                    {
                        Logic oTmp = new Logic();
                        oTmp.ID      = (byte)intI;
                        oTmp.Enabled = ArayTmpMode[intI - 1];
                        oTmp.UV1     = new UVSet();
                        oTmp.UV2     = new UVSet();
                        //读取备注
                        #region
                        ArayTmp    = new byte[1];
                        ArayTmp[0] = Convert.ToByte(intI);
                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1606, bytSubID, bytDevID, false, true, true, false) == true)
                        {
                            byte[] arayRemark = new byte[20];
                            for (int intJ = 0; intJ < 20; intJ++)
                            {
                                arayRemark[intJ] = CsConst.myRevBuf[27 + intJ];
                            }
                            oTmp.Remarklogic = HDLPF.Byte2String(arayRemark);

                            HDLUDP.TimeBetwnNext(1);
                        }
                        else
                        {
                            return(false);
                        }
                        #endregion
                        //读取设置
                        #region
                        if (CsConst.isRestore)
                        {
                            if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x160E, bytSubID, bytDevID, false, true, true, false) == true)
                            {
                                oTmp.bytRelation   = CsConst.myRevBuf[27];
                                oTmp.EnableSensors = new byte[15];
                                oTmp.Paramters     = new byte[20];
                                int intTmp = CsConst.myRevBuf[28] * 256 + CsConst.myRevBuf[29];
                                if (intTmp == 65535)
                                {
                                    intTmp = 0;
                                }
                                //oTmp.EnableSensors
                                for (byte bytI = 0; bytI <= 10; bytI++)
                                {
                                    oTmp.EnableSensors[bytI] = Convert.ToByte((intTmp & (1 << bytI)) == (1 << bytI));
                                }
                                oTmp.DelayTimeT = CsConst.myRevBuf[30] * 256 + CsConst.myRevBuf[31];
                                oTmp.DelayTimeF = CsConst.myRevBuf[32] * 256 + CsConst.myRevBuf[33];
                                if (oTmp.DelayTimeT == 65535)
                                {
                                    oTmp.DelayTimeT = 0;
                                }
                                if (oTmp.DelayTimeF == 65535)
                                {
                                    oTmp.DelayTimeF = 0;
                                }
                                Array.Copy(CsConst.myRevBuf, 34, oTmp.Paramters, 0, 15);
                                oTmp.UV1             = new UVSet();
                                oTmp.UV1.UvNum       = Convert.ToByte(HDLPF.IsNumStringMode(CsConst.myRevBuf[49].ToString(), 201, 248));
                                oTmp.UV1.UVCondition = CsConst.myRevBuf[50];

                                oTmp.UV2       = new UVSet();
                                oTmp.UV2.UvNum = Convert.ToByte(HDLPF.IsNumStringMode(CsConst.myRevBuf[51].ToString(), 201, 248));
                                if (oTmp.UV2.UvNum == oTmp.UV1.UvNum)
                                {
                                    oTmp.UV2.UvNum = Convert.ToByte(oTmp.UV1.UvNum + 1);
                                }
                                oTmp.UV2.UVCondition = CsConst.myRevBuf[52];
                                oTmp.Paramters[15]   = CsConst.myRevBuf[53];
                                oTmp.Paramters[16]   = CsConst.myRevBuf[54];

                                HDLUDP.TimeBetwnNext(1);
                                if (CsConst.isRestore)
                                {
                                    ArayTmp    = new byte[1];
                                    ArayTmp[0] = oTmp.UV1.UvNum;
                                    if ((CsConst.mySends.AddBufToSndList(ArayTmp, 0x160A, bytSubID, bytDevID, false, false, true, false) == true))
                                    {
                                        byte[] arayRemark = new byte[20];
                                        Array.Copy(CsConst.myRevBuf, 27, arayRemark, 0, arayRemark.Length);
                                        oTmp.UV1.UvRemark = HDLPF.Byte2String(arayRemark);
                                        oTmp.UV1.AutoOff  = (CsConst.myRevBuf[47] == 1);
                                        if (CsConst.myRevBuf[48] * 256 + CsConst.myRevBuf[49] > 3600)
                                        {
                                            oTmp.UV1.OffTime = 1;
                                        }
                                        else
                                        {
                                            oTmp.UV1.OffTime = CsConst.myRevBuf[48] * 256 + CsConst.myRevBuf[49];
                                        }

                                        HDLUDP.TimeBetwnNext(1);
                                    }

                                    ArayTmp[0] = oTmp.UV2.UvNum;
                                    if ((CsConst.mySends.AddBufToSndList(ArayTmp, 0x160A, bytSubID, bytDevID, false, false, true, false) == true))
                                    {
                                        byte[] arayRemark = new byte[20];
                                        Array.Copy(CsConst.myRevBuf, 27, arayRemark, 0, arayRemark.Length);
                                        oTmp.UV2.UvRemark = HDLPF.Byte2String(arayRemark);
                                        oTmp.UV2.AutoOff  = (CsConst.myRevBuf[47] == 1);
                                        if (CsConst.myRevBuf[48] * 256 + CsConst.myRevBuf[49] > 3600)
                                        {
                                            oTmp.UV2.OffTime = 1;
                                        }
                                        else
                                        {
                                            oTmp.UV2.OffTime = CsConst.myRevBuf[48] * 256 + CsConst.myRevBuf[49];
                                        }

                                        HDLUDP.TimeBetwnNext(1);
                                    }
                                }
                            }
                            else
                            {
                                return(false);
                            }
                        }
                        #endregion
                        //成立的触发目标
                        #region
                        oTmp.SetUp = new List <UVCMD.ControlTargets>();
                        if (CsConst.isRestore)
                        {
                            for (byte bytJ = 0; bytJ < 20; bytJ++)
                            {
                                ArayTmp    = new byte[2];
                                ArayTmp[0] = (byte)(intI);
                                ArayTmp[1] = (byte)(bytJ + 1);
                                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1612, bytSubID, bytDevID, false, true, true, false) == true)
                                {
                                    UVCMD.ControlTargets oCMD = new UVCMD.ControlTargets();
                                    oCMD.ID       = CsConst.myRevBuf[27];
                                    oCMD.Type     = CsConst.myRevBuf[28]; //转换为正确的类型
                                    oCMD.SubnetID = CsConst.myRevBuf[29];
                                    oCMD.DeviceID = CsConst.myRevBuf[30];
                                    oCMD.Param1   = CsConst.myRevBuf[31];
                                    oCMD.Param2   = CsConst.myRevBuf[32];
                                    oCMD.Param3   = CsConst.myRevBuf[33];
                                    oCMD.Param4   = CsConst.myRevBuf[34];

                                    oTmp.SetUp.Add(oCMD);

                                    HDLUDP.TimeBetwnNext(1);
                                }
                                else
                                {
                                    return(false);
                                }
                            }
                        }
                        #endregion
                        //不成立的触发目标
                        #region
                        oTmp.NoSetUp = new List <UVCMD.ControlTargets>();
                        if (CsConst.isRestore)
                        {
                            for (byte bytJ = 0; bytJ < 20; bytJ++)
                            {
                                ArayTmp    = new byte[2];
                                ArayTmp[0] = (byte)(intI + 24);
                                ArayTmp[1] = (byte)(bytJ + 1);

                                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1612, bytSubID, bytDevID, false, true, true, false) == true)
                                {
                                    UVCMD.ControlTargets oCMD = new UVCMD.ControlTargets();
                                    oCMD.ID       = CsConst.myRevBuf[27];
                                    oCMD.Type     = CsConst.myRevBuf[28];
                                    oCMD.SubnetID = CsConst.myRevBuf[29];
                                    oCMD.DeviceID = CsConst.myRevBuf[30];
                                    oCMD.Param1   = CsConst.myRevBuf[31];
                                    oCMD.Param2   = CsConst.myRevBuf[32];
                                    oCMD.Param3   = CsConst.myRevBuf[33];
                                    oCMD.Param4   = CsConst.myRevBuf[34];

                                    oTmp.NoSetUp.Add(oCMD);

                                    HDLUDP.TimeBetwnNext(1);
                                }
                                else
                                {
                                    return(false);
                                }
                            }
                        }
                        #endregion
                        logic.Add(oTmp);
                        if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                        {
                            CsConst.calculationWorker.ReportProgress(10 + intI * 10 / 24);
                        }
                    }
                }
                else
                {
                    return(false);
                }
                #endregion
                MyRead2UpFlags[1] = true;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(20);
            }
            if (intActivePage == 0 || intActivePage == 3)
            {
                //安防设置
                #region
                fireset = new List <UVCMD.SecurityInfo>();
                ArayTmp = new byte[1];
                for (byte intI = 1; intI <= 3; intI++)
                {
                    ArayTmp[0] = intI;
                    //读取备注
                    #region
                    UVCMD.SecurityInfo oTmp = new UVCMD.SecurityInfo();
                    oTmp.bytSeuID = intI;

                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1624, bytSubID, bytDevID, false, true, true, false) == true)
                    {
                        byte[] arayRemark = new byte[20];
                        for (int intJ = 0; intJ < 20; intJ++)
                        {
                            arayRemark[intJ] = CsConst.myRevBuf[27 + intJ];
                        }
                        oTmp.strRemark = HDLPF.Byte2String(arayRemark);

                        HDLUDP.TimeBetwnNext(1);
                    }
                    else
                    {
                        return(false);
                    }

                    #endregion
                    //读取设置
                    #region
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1628, bytSubID, bytDevID, false, true, true, false) == true)
                    {
                        oTmp.bytTerms = CsConst.myRevBuf[27];
                        oTmp.bytSubID = CsConst.myRevBuf[28];
                        oTmp.bytDevID = CsConst.myRevBuf[29];
                        oTmp.bytArea  = CsConst.myRevBuf[30];

                        HDLUDP.TimeBetwnNext(1);
                    }
                    else
                    {
                        return(false);
                    }
                    fireset.Add(oTmp);
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(20 + (10 * intI / 3));
                    }
                    #endregion
                }
                #endregion
                MyRead2UpFlags[2] = true;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(30);
            }
            if (intActivePage == 0 || intActivePage == 4)
            {
                //模拟信息
                #region
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1620, bytSubID, bytDevID, false, true, true, false) == true)
                {
                    SimulateEnable    = new byte[15];
                    SimulateEnable[0] = CsConst.myRevBuf[26];
                    SimulateEnable[1] = CsConst.myRevBuf[27];
                    SimulateEnable[2] = CsConst.myRevBuf[28];
                    SimulateEnable[3] = CsConst.myRevBuf[32];
                    ParamSimulate     = new byte[15];
                    ParamSimulate[0]  = CsConst.myRevBuf[33];
                    ParamSimulate[1]  = CsConst.myRevBuf[34];
                    ParamSimulate[2]  = CsConst.myRevBuf[35];
                    ParamSimulate[3]  = CsConst.myRevBuf[39];

                    HDLUDP.TimeBetwnNext(1);
                }
                else
                {
                    return(false);
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(31);
                }
                #endregion
                MyRead2UpFlags[3] = true;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(40);
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100);
            }
            return(true);
        }
Пример #10
0
        /// <summary>
        /// download all information from hardware
        /// </summary>
        /// <param name="DevName"></param>
        public void DownloadSMSFrmDeviceToBuf(string DevName, int wdDeviceType, int intActivePage, int num1, int num2)// 0 mean all, else that tab only
        {
            string strMainRemark = DevName.Split('\\')[1].Trim();

            DevName = DevName.Split('\\')[0].Trim();

            //保存basic informations网络信息
            byte bytSubID = byte.Parse(DevName.Split('-')[0].ToString());
            byte bytDevID = byte.Parse(DevName.Split('-')[1].ToString());

            // read basic paramters
            byte[] ArayTmp = null;

            if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x000E, bytSubID, bytDevID, false, true, true, false) == true)
            {
                byte[] arayRemark = new byte[20];
                for (int intI = 0; intI < 20; intI++)
                {
                    arayRemark[intI] = CsConst.myRevBuf[25 + intI];
                }
                Devname = bytSubID.ToString() + "-" + bytDevID.ToString() + "\\" + HDLPF.Byte2String(arayRemark);
            }
            else
            {
                return;
            }

            ArayTmp    = new byte[3];
            ArayTmp[0] = 0;
            ArayTmp[1] = 1;
            if (intActivePage == 0 || intActivePage == 1)
            {
                if (CsConst.isRestore)
                {
                    num1 = 0;
                    num2 = 99;
                    if (wdDeviceType == 4001)
                    {
                        num2 = 90;
                    }
                }
                MyControls = new List <SMSControls>();
                #region
                for (byte bytI = (byte)num1; bytI < num2; bytI++)
                {
                    ArayTmp[2] = bytI;
                    SMSControls oTmpSMS = new SMSControls();
                    oTmpSMS.ID        = bytI;
                    oTmpSMS.MyVerify  = new List <PhoneInF>();
                    oTmpSMS.MyTargets = new List <UVCMD.ControlTargets>();

                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xC017, bytSubID, bytDevID, true, true, true, false) == true)
                    {
                        // 20 bytes remark
                        byte[] arayRemark = new byte[20];
                        for (int intI = 0; intI < 20; intI++)
                        {
                            arayRemark[intI] = CsConst.myRevBuf[28 + intI];
                        }
                        oTmpSMS.strRemark = HDLPF.Byte2String(arayRemark);

                        // 30 bytes sms content unicode
                        arayRemark = new byte[32];
                        for (int intI = 0; intI < 32; intI++)
                        {
                            arayRemark[intI] = CsConst.myRevBuf[48 + intI];
                        }
                        oTmpSMS.strSMSContent = HDLPF.Byte22String(arayRemark, true);

                        // 判断是否验证手机号码
                        #region
                        oTmpSMS.blnIsVerify = (CsConst.myRevBuf[896] == 0x11);
                        oTmpSMS.blnReply    = (CsConst.myRevBuf[897] == 0x11);

                        for (int intJ = 0; intJ < 12; intJ++)
                        {
                            PhoneInF oPhone = new PhoneInF();
                            arayRemark = new byte[20];
                            for (int intI = 0; intI < 20; intI++)
                            {
                                arayRemark[intI] = CsConst.myRevBuf[80 + intJ * 36 + intI];
                            }
                            oPhone.Remark = HDLPF.Byte2String(arayRemark);

                            arayRemark = new byte[16];
                            for (int intI = 0; intI < 16; intI++)
                            {
                                if (CsConst.myRevBuf[100 + intJ * 36 + intI] != 0x45)
                                {
                                    arayRemark[intI] = CsConst.myRevBuf[100 + intJ * 36 + intI];
                                }
                                else
                                {
                                    arayRemark[intI] = 0;
                                }
                            }
                            oPhone.PhoneNum = HDLPF.Byte2String(arayRemark);
                            oTmpSMS.MyVerify.Add(oPhone);
                        }

                        #endregion

                        // 判断是否存在控制目标
                        #region
                        int intTmpST = 512;
                        for (int intI = 0; intI < 48; intI++)
                        {
                            //if (CsConst.myRevBuf[intTmpST + intI * 8 + 7] == 0xAA) //只保留有效
                            //{
                            UVCMD.ControlTargets oCMD = new UVCMD.ControlTargets();

                            oCMD.SubnetID = CsConst.myRevBuf[intTmpST + intI * 8];
                            oCMD.DeviceID = CsConst.myRevBuf[intTmpST + intI * 8 + 1];
                            oCMD.Type     = CsConst.myRevBuf[intTmpST + intI * 8 + 2];
                            //oCMD.Type = HDLSysPF.GetIDAccordinglyRightControlTypeSMS(CsConst.myRevBuf[intTmpST + intI * 8 + 2]);  //转换为正确的类型
                            oCMD.Param1  = CsConst.myRevBuf[intTmpST + intI * 8 + 3];
                            oCMD.Param2  = CsConst.myRevBuf[intTmpST + intI * 8 + 4];
                            oCMD.Param3  = CsConst.myRevBuf[intTmpST + intI * 8 + 5];
                            oCMD.Param4  = CsConst.myRevBuf[intTmpST + intI * 8 + 6];
                            oCMD.IsValid = (CsConst.myRevBuf[intTmpST + intI * 8 + 7] == 0xAA);
                            oTmpSMS.MyTargets.Add(oCMD);
                            //}
                        }
                        #endregion
                        MyControls.Add(oTmpSMS);
                    }
                    else
                    {
                        return;
                    }

                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(bytI / 2, null);
                    }
                    HDLUDP.TimeBetwnNext(20);
                }
                #endregion
                MyRead2UpFlags[0] = true;
            }

            if (intActivePage == 0 || intActivePage == 2)
            {
                // send message when needs
                #region
                ArayTmp    = new byte[4];
                ArayTmp[0] = 0;
                ArayTmp[1] = 2;

                MySendSMS = new List <SendSMS>();
                if (CsConst.isRestore)
                {
                    num1 = 0;
                    num2 = 20;
                    if (wdDeviceType == 4001)
                    {
                        num2 = 90;
                    }
                }
                for (byte bytI = (byte)num1; bytI < num2; bytI++)
                {
                    ArayTmp[2] = bytI;
                    byte[] TmpSMS = new byte[1794];

                    SendSMS oTmpSMS = new SendSMS();
                    oTmpSMS.ID       = bytI;
                    oTmpSMS.MyGuests = new List <PhoneInF>();

                    if (wdDeviceType == 4001)
                    {
                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xC060, bytSubID, bytDevID, true, true, true, false) == true)
                        {
                            Array.Copy(CsConst.myRevBuf, 29, TmpSMS, 0, 598);

                            HDLUDP.TimeBetwnNext(20);
                        }
                        else
                        {
                            return;
                        }
                    }
                    else
                    {
                        for (int intI = 0; intI < 3; intI++) //分三次读取数据
                        {
                            ArayTmp[3] = Convert.ToByte(intI);
                            if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xC060, bytSubID, bytDevID, true, true, true, false) == true)
                            {
                                Array.Copy(CsConst.myRevBuf, 29, TmpSMS, intI * 598, 598);

                                HDLUDP.TimeBetwnNext(20);
                            }
                            else
                            {
                                return;
                            }
                        }
                    }
                    // 20 bytes remark
                    byte[] arayRemark = new byte[20];
                    for (int intI = 0; intI < 20; intI++)
                    {
                        arayRemark[intI] = TmpSMS[intI];
                    }
                    oTmpSMS.strRemark = HDLPF.Byte2String(arayRemark);

                    // 判断接收的手机号码
                    #region
                    int num = 10;
                    if (wdDeviceType == 4001)
                    {
                        num = 3;
                    }
                    for (int intJ = 0; intJ < num; intJ++)
                    {
                        PhoneInF oPhone = new PhoneInF();
                        if (TmpSMS[200 + intJ * 177] == 0xAA)
                        {
                            oPhone.Valid = true;
                        }
                        else
                        {
                            oPhone.Valid = false;
                        }
                        oPhone.ID  = Convert.ToByte(intJ);
                        arayRemark = new byte[20];
                        for (int intI = 0; intI < 20; intI++)
                        {
                            arayRemark[intI] = TmpSMS[24 + intJ * 177 + intI];
                        }
                        oPhone.Remark = HDLPF.Byte2String(arayRemark);

                        arayRemark = new byte[16];
                        for (int intI = 0; intI < 16; intI++)
                        {
                            if (TmpSMS[44 + intJ * 177 + intI] != 0x45)
                            {
                                arayRemark[intI] = TmpSMS[44 + intJ * 177 + intI];
                            }
                            else
                            {
                                arayRemark[intI] = 0;
                            }
                        }
                        oPhone.PhoneNum = HDLPF.Byte2String(arayRemark);

                        arayRemark = new byte[140];
                        for (int intI = 0; intI < 140; intI++)
                        {
                            arayRemark[intI] = TmpSMS[60 + intJ * 177 + intI];
                        }
                        oPhone.strSMS = HDLPF.Byte22String(arayRemark, true);
                        oTmpSMS.MyGuests.Add(oPhone);
                    }
                    #endregion

                    MySendSMS.Add(oTmpSMS);
                    if (CsConst.calculationWorker != null)
                    {
                        CsConst.calculationWorker.ReportProgress(50 + bytI / 2, null);
                    }
                }
                #endregion
                MyRead2UpFlags[1] = true;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100, null);
            }
        }
Пример #11
0
        ///<summary>
        ///保存数据库面板设置,将所有数据保存
        ///</summary>
        public void SaveSensorInfoToDB()
        {
            //delete GPRS Info
            #region
            string strsql = string.Format("delete * from dbGPRSbasic where DIndex={0}", DIndex);
            DataModule.ExecuteSQLDatabase(strsql);

            //delete GPRS Control Info
            strsql = string.Format("delete * from dbGPRSControls where DIndex ={0}", DIndex);
            DataModule.ExecuteSQLDatabase(strsql);

            strsql = string.Format("delete * from dbGPRSVerify where DIndex={0}", DIndex);
            DataModule.ExecuteSQLDatabase(strsql);

            strsql = string.Format("delete * from dbGPRSTargets where DIndex={0}", DIndex);
            DataModule.ExecuteSQLDatabase(strsql);

            strsql = string.Format("delete * form dbGPRSSendSMS where DIndex={0}", DIndex);
            DataModule.ExecuteSQLDatabase(strsql);

            strsql = string.Format("delete * from dbGPRSSendSMSInfo where DIndex={0}", DIndex);
            DataModule.ExecuteSQLDatabase(strsql);
            #endregion

            //save GPRS Info
            #region
            strsql = string.Format("insert into dbGPRSbasic(DIndex,strIP,strRouterIP,strMAC,strSevCentre,strCode,strIMEI,blnTo485)values({0},'{1}','{2}','{3}','{4}','{5}','{6}',{7})",
                                   DIndex, strIP, strRouterIP, strMAC, strSevCentre, strCode, strIMEI, blnTo485);
            DataModule.ExecuteSQLDatabase(strsql);
            #endregion

            //save GPRS SMS Control Info
            #region
            if (MyControls != null)
            {
                foreach (SMSControls temp in MyControls)
                {
                    strsql = string.Format("insert into dbGPRSControls(DIndex,SenNum,strRemark,strSMSContent,blnIsVerify,blnReply)values({0},{1},'{2}',"
                                           + "'{3}',{4},{5})", DIndex, temp.ID, temp.strRemark, temp.strSMSContent, temp.blnIsVerify, temp.blnReply);
                    DataModule.ExecuteSQLDatabase(strsql);
                    if (temp.MyVerify != null)
                    {
                        for (int i = 0; i < temp.MyVerify.Count; i++)
                        {
                            PhoneInF tmp = temp.MyVerify[i];
                            strsql = string.Format("insert into dbGPRSVerify(DIndex,SenNum,VerifyNum,Remark,PhoneNum)values({0},{1},{2},'{3}','{4}')", DIndex, temp.ID, i,
                                                   tmp.Remark, tmp.PhoneNum);
                            DataModule.ExecuteSQLDatabase(strsql);
                        }
                    }
                    if (temp.MyTargets != null)
                    {
                        for (int i = 0; i < temp.MyTargets.Count; i++)
                        {
                            UVCMD.ControlTargets TmpCmds = temp.MyTargets[i];
                            strsql = string.Format("Insert into dbKeyTargets(DIndex,KeyIndex,objID,KeyFunType,SubNetID,DeviceID,FirstParameter,"
                                                   + "SecondParameter,RunTimeMinute,RunTimeSecond,Ms04State) values ({0},{1},'{2}',{3},{4},{5},{6},{7},{8},{9},{10})",
                                                   DIndex, temp.ID, TmpCmds.ID, TmpCmds.Type, TmpCmds.SubnetID, TmpCmds.DeviceID, TmpCmds.Param1,
                                                   TmpCmds.Param2, TmpCmds.Param3, TmpCmds.Param4, 0);
                            DataModule.ExecuteSQLDatabase(strsql);
                        }
                    }
                }
            }
            #endregion

            //save GPRS SMS Send Info
            #region
            if (MySendSMS != null)
            {
                foreach (SendSMS temp in MySendSMS)
                {
                    strsql = string.Format("insert into dbGPRSSendSMS(DIndex,SenNum,Remark)values({0},{1},'{2}')", DIndex, temp.ID, temp.strRemark);
                    DataModule.ExecuteSQLDatabase(strsql);
                    if (temp.MyGuests != null)
                    {
                        for (int i = 0; i < temp.MyGuests.Count; i++)
                        {
                            PhoneInF tmp = temp.MyGuests[i];
                            strsql = string.Format("insert into dbGPRSSendSMSInfo(DIndex,SenNum,TargetNum,Remark,PhoneNum,SMS)values({0},{1},{2},'{3}','{4}','{5}')", DIndex,
                                                   temp.ID, i + 1, tmp.Remark, tmp.PhoneNum, tmp.strSMS);
                            DataModule.ExecuteSQLDatabase(strsql);
                        }
                    }
                }
            }
            #endregion
        }
Пример #12
0
        //<summary>
        //读取数据信息
        //</summary>
        public void ReadDataFrmDBTobuf(int DIndex)
        {
            try
            {
                #region
                string          strsql = string.Format("select * from dbBasicInfo where DIndex={0}", DIndex);
                OleDbDataReader dr     = DataModule.SearchAResultSQLDB(strsql, CsConst.mstrCurPath);
                if (dr != null)
                {
                    while (dr.Read())
                    {
                        string str = dr.GetValue(1).ToString();
                        DeviceName = DeviceName.Split('\\')[0].ToString() + "\\"
                                     + str.Split('\\')[1].ToString();
                    }
                    dr.Close();
                }
                #endregion

                #region
                strsql = string.Format("select * from dbClassInfomation where DIndex={0} and ClassID=0 order by SenNum", DIndex);
                dr     = DataModule.SearchAResultSQLDB(strsql, CsConst.mstrCurPath);
                if (dr != null)
                {
                    while (dr.Read())
                    {
                        string str = dr.GetValue(5).ToString();
                        Backlight             = Convert.ToByte(str.Split('-')[0].ToString());
                        Ledlight              = Convert.ToByte(str.Split('-')[1].ToString());
                        arayButtonColor       = (byte[])dr[6];
                        arayButtonBalance     = (byte[])dr[7];
                        arayButtonSensitiVity = (byte[])dr[8];
                        arayHotel             = (byte[])dr[9];
                    }
                    dr.Close();
                }
                #endregion

                #region
                strsql       = string.Format("select * from dbClassInfomation where DIndex={0} and ClassID={1} order by SenNum", DIndex, 1);
                dr           = DataModule.SearchAResultSQLDB(strsql, CsConst.mstrCurPath);
                myKeySetting = new List <Key>();
                if (dr != null)
                {
                    while (dr.Read())
                    {
                        Key    temp = new Key();
                        string str  = dr.GetValue(5).ToString();
                        temp.ID     = Convert.ToByte(str.Split('-')[0].ToString());
                        temp.Mode   = Convert.ToByte(str.Split('-')[1].ToString());
                        temp.Delay  = Convert.ToByte(str.Split('-')[2].ToString());
                        temp.Remark = dr.GetValue(4).ToString();
                        str         = string.Format("select * from dbKeyTargets where DIndex ={0} and KeyIndex = {1} and Ms04State = {2}", DIndex, temp.ID, 0);
                        OleDbDataReader drKeyCmds = DataModule.SearchAResultSQLDB(str, CsConst.mstrCurPath);
                        temp.KeyTargets = new List <UVCMD.ControlTargets>();
                        while (drKeyCmds.Read())
                        {
                            UVCMD.ControlTargets TmpCmd = new UVCMD.ControlTargets();
                            TmpCmd.ID       = drKeyCmds.GetByte(2);
                            TmpCmd.Type     = drKeyCmds.GetByte(3);
                            TmpCmd.SubnetID = drKeyCmds.GetByte(4);
                            TmpCmd.DeviceID = drKeyCmds.GetByte(5);
                            TmpCmd.Param1   = drKeyCmds.GetByte(6);
                            TmpCmd.Param2   = drKeyCmds.GetByte(7);
                            TmpCmd.Param3   = drKeyCmds.GetByte(8);
                            TmpCmd.Param4   = drKeyCmds.GetByte(9);
                            temp.KeyTargets.Add(TmpCmd);
                        }
                        drKeyCmds.Close();
                        myKeySetting.Add(temp);
                    }
                    dr.Close();
                }
                #endregion
            }
            catch
            {
            }
        }
Пример #13
0
        public Byte[] curStatus; //当前状态

        public Boolean ReadButtonRemarkAndCMDFromDevice(Byte SubNetID, Byte DeviceID, int DeviceType, int RemoteAddress, Byte ReadOnlyRemarkorCMD, Boolean blnIsSupportE474,
                                                        Byte bStartCmd, Byte bToCmd)
        {
            try
            {
                Byte bTmpStartRead = 0;
                if (ReadOnlyRemarkorCMD == 0 || ReadOnlyRemarkorCMD == 255)
                {
                    Remark = ReadButtonRemark(SubNetID, DeviceID, DeviceType, RemoteAddress);
                }

                if (Mode == 0)
                {
                    return(true);
                }

                if (ReadOnlyRemarkorCMD == 1 || ReadOnlyRemarkorCMD == 255)
                {
                    //读取目标
                    byte bytTotalCMD = 1;
                    switch (Mode)
                    {
                    case 1:
                    case 2:
                    case 3:
                    case 6:
                    case 10: bytTotalCMD = 1; break;

                    case 4:
                    case 5:
                    case 7:
                    case 13: bytTotalCMD = 15; break;

                    case 11: bytTotalCMD = 15; break;

                    case 16:
                    case 17: bytTotalCMD = 15; break;

                    case 14: bytTotalCMD = 49; break;
                    }

                    if (bStartCmd == 0 && bToCmd == 0)
                    {
                        bStartCmd = 1; bToCmd = bytTotalCMD;
                    }
                    String strEnable = "";

                    Byte   ExtraLength = 0;
                    Byte[] ArayTmp     = new Byte[1 + ExtraLength];
                    if (IPmoduleDeviceTypeList.RFIpModuleV2.Contains(DeviceType))
                    {
                        ExtraLength          = 1;
                        ArayTmp              = new Byte[1 + ExtraLength];
                        ArayTmp[0]           = ID;
                        ArayTmp[ExtraLength] = (Byte)RemoteAddress;
                    }
                    else if (EnviroNewDeviceTypeList.EnviroNewPanelDeviceTypeList.Contains(DeviceType)) // 新版彩屏面板
                    {
                        ExtraLength = 3;
                        ArayTmp     = new Byte[1 + ExtraLength];
                        ArayTmp[0]  = ID;
                        ArayTmp[1]  = 4;
                        ArayTmp[2]  = 0;
                        ArayTmp[3]  = 36;
                    }
                    else if (EnviroDLPPanelDeviceTypeList.HDLEnviroDLPPanelDeviceTypeList.Contains(DeviceType)) // 旧版彩屏面板
                    {
                        ExtraLength = 3;
                        ArayTmp     = new Byte[1 + ExtraLength];
                        ArayTmp[0]  = ID;
                        ArayTmp[1]  = 4;
                        ArayTmp[2]  = 0;
                        ArayTmp[3]  = 36;
                    }

                    //读取目标有效与否
                    #region
                    if (blnIsSupportE474 == true)
                    {
                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xE474, SubNetID, DeviceID, false, false, true, false) == true)
                        {
                            int count1 = CsConst.myRevBuf[26];
                            int count2 = count1 / 8;
                            if (count1 % 8 != 0)
                            {
                                count2 = count2 + 1;
                            }
                            byte[] arayEnable = new byte[count2];
                            Array.Copy(CsConst.myRevBuf, 27, arayEnable, 0, count2);

                            for (int i = 0; i < count2; i++)
                            {
                                string strTmp = GlobalClass.AddLeftZero(Convert.ToString(arayEnable[i], 2), 8);
                                for (int j = 7; j >= 0; j--)
                                {
                                    string str = strTmp.Substring(j, 1);
                                    strEnable = strEnable + str;
                                }
                            }
                            CsConst.myRevBuf = new byte[1200];
                        }
                    }
                    #endregion

                    if (MS04DeviceTypeList.MS04DryContactWithE000PublicCMD.Contains(DeviceType)) // 干节点统一处理
                    {
                        if (Mode == 9 || Mode == 0)                                              // 组合开关分开放置目标  或者机械开关
                        {
                            bytTotalCMD = 199;
                        }
                    }
                    else
                    {
                        Byte[] oTMpModeList = new Byte[] { 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 21 };
                        if (oTMpModeList.Contains(Mode) && bStartCmd >= 50) // j机械开关或者其他类别请添加在此处
                        {
                            bTmpStartRead = 49;                             // 不初始化整个目标组合
                        }
                        else
                        {
                            KeyTargets = new List <UVCMD.ControlTargets>();
                        }
                    }
                    for (int byt = 1 + bTmpStartRead; byt <= bytTotalCMD + bTmpStartRead; byt++)
                    {
                        if (byt >= bStartCmd && byt <= bToCmd)
                        {
                            #region
                            bool isRead = true;
                            if (strEnable != "")
                            {
                                if (strEnable.Length >= byt)
                                {
                                    if (strEnable.Substring(byt - 1, 1) == "0")
                                    {
                                        isRead = false;
                                    }
                                }
                            }
                            if (isRead)
                            {
                                byte[] arayTmp = new byte[2 + ExtraLength];
                                arayTmp[0] = ID;
                                arayTmp[1] = (Byte)byt;
                                if (ExtraLength != 0)
                                {
                                    if (ExtraLength == 3)
                                    {
                                        arayTmp[2] = 4;
                                        arayTmp[3] = 0;
                                        arayTmp[4] = 36;
                                    }
                                    else
                                    {
                                        arayTmp[2] = (Byte)RemoteAddress;
                                    }
                                }

                                if (CsConst.mySends.AddBufToSndList(arayTmp, 0xE000, SubNetID, DeviceID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                                {
                                    UVCMD.ControlTargets oCMD = new UVCMD.ControlTargets();
                                    oCMD.ID       = Convert.ToByte(CsConst.myRevBuf[26]);
                                    oCMD.Type     = CsConst.myRevBuf[27]; //转换为正确的类型
                                    oCMD.SubnetID = CsConst.myRevBuf[28];
                                    oCMD.DeviceID = CsConst.myRevBuf[29];
                                    oCMD.Param1   = CsConst.myRevBuf[30];
                                    oCMD.Param2   = CsConst.myRevBuf[31];
                                    oCMD.Param3   = CsConst.myRevBuf[32];
                                    oCMD.Param4   = CsConst.myRevBuf[33];
                                    if (KeyTargets.Count < oCMD.ID)
                                    {
                                        KeyTargets.Add(oCMD);
                                    }
                                    else
                                    {
                                        KeyTargets[oCMD.ID - 1] = oCMD;
                                    }
                                    CsConst.myRevBuf = new byte[1200];
                                }
                                else
                                {
                                    return(false);
                                }
                            }
                            #endregion
                        }
                    }
                }
            }
            catch
            {
                return(false);
            }
            return(true);
        }
Пример #14
0
        private void tmiCopy_Click(object sender, EventArgs e)
        {
            if (tabControl1.SelectedIndex == 0) // 第一个页面
            {
                #region
                if (tvArm.Nodes == null)
                {
                    return;
                }
                if (mySecurity == null)
                {
                    return;
                }
                if (tvArm.SelectedNode == null)
                {
                    return;
                }
                if (tvArm.SelectedNode.Level == 2)
                {
                    return;
                }
                if (tvArm.SelectedNode.Level == 1 && tvArm.SelectedNode.Index == 0)
                {
                    return;
                }
                if (mySecurity.myReadyThings8[0].LeaveCmds == null)
                {
                    return;
                }

                CsConst.MyPublicCtrls = new List <UVCMD.ControlTargets>();

                TreeNode oNode  = tvArm.SelectedNode;
                byte     bytAll = 0;  //表示选择的目标个数
                if (oNode.Level == 1) // 表示单个选中的是目标
                {
                    bytAll = 1;
                }
                else                                     //表示总共选中的目标
                {
                    bytAll = Convert.ToByte((oNode.Nodes.Count).ToString());
                }

                //2.  根据分类进行复制
                if (bytAll == 1)
                {
                    UVCMD.ControlTargets oCtrls = (UVCMD.ControlTargets)mySecurity.myReadyThings8[0].LeaveCmds[oNode.Parent.Index][oNode.Index].Clone();
                    CsConst.MyPublicCtrls.Add(oCtrls);
                }
                else
                {
                    string strTmp    = oNode.Name;
                    byte   bytKeyID  = byte.Parse(strTmp.Split('-')[0].ToString());
                    byte   bytStatus = byte.Parse(strTmp.Split('-')[1].ToString());

                    for (byte bytI = 0; bytI < bytAll; bytI++)
                    {
                        UVCMD.ControlTargets oCtrls = (UVCMD.ControlTargets)mySecurity.myReadyThings8[0].LeaveCmds[oNode.Index][bytI].Clone();
                        CsConst.MyPublicCtrls.Add(oCtrls);
                    }
                }
                #endregion
            }
            else if (tabControl1.SelectedIndex == 1) //第二个页面
            {
                #region
                if (tvBypass.Nodes == null)
                {
                    return;
                }
                if (mySecurity == null)
                {
                    return;
                }
                if (tvBypass.SelectedNode == null)
                {
                    return;
                }
                if (tvBypass.SelectedNode.Level == 2)
                {
                    return;
                }
                if (tvBypass.SelectedNode.Level == 1 && tvBypass.SelectedNode.Index == 0)
                {
                    return;
                }
                if (mySecurity.myReadyThings8[0].DoorWarns == null)
                {
                    return;
                }

                CsConst.MyPublicCtrls = new List <UVCMD.ControlTargets>();

                TreeNode oNode  = tvBypass.SelectedNode;
                byte     bytAll = 0;  //表示选择的目标个数
                if (oNode.Level == 1) // 表示单个选中的是目标
                {
                    bytAll = 1;
                }
                else                                     //表示总共选中的目标
                {
                    bytAll = Convert.ToByte((oNode.Nodes.Count).ToString());
                }

                //2.  根据分类进行复制
                if (bytAll == 1)
                {
                    UVCMD.ControlTargets oCtrls = (UVCMD.ControlTargets)mySecurity.myReadyThings8[0].DoorWarns[oNode.Parent.Index][oNode.Index].Clone();
                    CsConst.MyPublicCtrls.Add(oCtrls);
                }
                else
                {
                    string strTmp    = oNode.Name;
                    byte   bytKeyID  = byte.Parse(strTmp.Split('-')[0].ToString());
                    byte   bytStatus = byte.Parse(strTmp.Split('-')[1].ToString());

                    for (byte bytI = 0; bytI < bytAll; bytI++)
                    {
                        UVCMD.ControlTargets oCtrls = (UVCMD.ControlTargets)mySecurity.myReadyThings8[0].DoorWarns[oNode.Index][bytI].Clone();
                        CsConst.MyPublicCtrls.Add(oCtrls);
                    }
                }
                #endregion
            }
            else if (tabControl1.SelectedIndex == 2) // 第三个页面
            {
                #region
                if (tvArm1.Nodes == null)
                {
                    return;
                }
                if (mySecurity == null)
                {
                    return;
                }
                if (tvArm1.SelectedNode == null)
                {
                    return;
                }
                if (tvArm1.SelectedNode.Level == 2)
                {
                    return;
                }
                if (tvArm1.SelectedNode.Level == 1 && tvArm1.SelectedNode.Index == 0)
                {
                    return;
                }
                if (mySecurity.myArms8[0].ArmCmds == null)
                {
                    return;
                }

                CsConst.MyPublicCtrls = new List <UVCMD.ControlTargets>();

                TreeNode oNode  = tvArm1.SelectedNode;
                byte     bytAll = 0;  //表示选择的目标个数
                if (oNode.Level == 1) // 表示单个选中的是目标
                {
                    bytAll = 1;
                }
                else                                     //表示总共选中的目标
                {
                    bytAll = Convert.ToByte((oNode.Nodes.Count).ToString());
                }

                //2.  根据分类进行复制
                if (bytAll == 1)
                {
                    UVCMD.ControlTargets oCtrls = (UVCMD.ControlTargets)mySecurity.myArms8[0].ArmCmds[oNode.Parent.Index][oNode.Index].Clone();
                    CsConst.MyPublicCtrls.Add(oCtrls);
                }
                else
                {
                    string strTmp    = oNode.Name;
                    byte   bytKeyID  = byte.Parse(strTmp.Split('-')[0].ToString());
                    byte   bytStatus = byte.Parse(strTmp.Split('-')[1].ToString());

                    for (byte bytI = 0; bytI < bytAll; bytI++)
                    {
                        UVCMD.ControlTargets oCtrls = (UVCMD.ControlTargets)mySecurity.myArms8[0].ArmCmds[oNode.Index][bytI].Clone();
                        CsConst.MyPublicCtrls.Add(oCtrls);
                    }
                }
                #endregion
            }
            else if (tabControl1.SelectedIndex == 4) // 第五个页面
            {
                #region
                if (tvAlarm.Nodes == null)
                {
                    return;
                }
                if (mySecurity == null)
                {
                    return;
                }
                if (tvAlarm.SelectedNode == null)
                {
                    return;
                }
                if (tvAlarm.SelectedNode.Level == 2)
                {
                    return;
                }
                if (tvAlarm.SelectedNode.Level == 1 && tvAlarm.SelectedNode.Index == 0)
                {
                    return;
                }
                if (mySecurity.myAlarms8[0].AlarmCmds == null)
                {
                    return;
                }

                CsConst.MyPublicCtrls = new List <UVCMD.ControlTargets>();

                TreeNode oNode  = tvAlarm.SelectedNode;
                byte     bytAll = 0;  //表示选择的目标个数
                if (oNode.Level == 1) // 表示单个选中的是目标
                {
                    bytAll = 1;
                }
                else                                     //表示总共选中的目标
                {
                    bytAll = Convert.ToByte((oNode.Nodes.Count).ToString());
                }

                //2.  根据分类进行复制
                if (bytAll == 1)
                {
                    UVCMD.ControlTargets oCtrls = (UVCMD.ControlTargets)mySecurity.myAlarms8[0].AlarmCmds[oNode.Parent.Index][oNode.Index].Clone();
                    CsConst.MyPublicCtrls.Add(oCtrls);
                }
                else
                {
                    string strTmp    = oNode.Name;
                    byte   bytKeyID  = byte.Parse(strTmp.Split('-')[0].ToString());
                    byte   bytStatus = byte.Parse(strTmp.Split('-')[1].ToString());

                    for (byte bytI = 0; bytI < bytAll; bytI++)
                    {
                        UVCMD.ControlTargets oCtrls = (UVCMD.ControlTargets)mySecurity.myAlarms8[0].AlarmCmds[oNode.Index][bytI].Clone();
                        CsConst.MyPublicCtrls.Add(oCtrls);
                    }
                }
                #endregion
            }
            else if (tabControl1.SelectedIndex == 5) // 第六个页面
            {
                #region
                if (tvVac.Nodes == null)
                {
                    return;
                }
                if (mySecurity == null)
                {
                    return;
                }
                if (tvVac.SelectedNode == null)
                {
                    return;
                }
                if (tvVac.SelectedNode.Level == 2)
                {
                    return;
                }
                if (tvVac.SelectedNode.Level == 1 && tvVac.SelectedNode.Index == 0)
                {
                    return;
                }
                if (mySecurity.myVacs8[0].VacationCmds == null)
                {
                    return;
                }

                CsConst.MyPublicCtrls = new List <UVCMD.ControlTargets>();

                TreeNode oNode  = tvVac.SelectedNode;
                byte     bytAll = 0;  //表示选择的目标个数
                if (oNode.Level == 1) // 表示单个选中的是目标
                {
                    bytAll = 1;
                }
                else                                     //表示总共选中的目标
                {
                    bytAll = Convert.ToByte((oNode.Nodes.Count).ToString());
                }

                //2.  根据分类进行复制
                if (bytAll == 1)
                {
                    UVCMD.ControlTargets oCtrls = (UVCMD.ControlTargets)mySecurity.myVacs8[0].VacationCmds[oNode.Parent.Index][oNode.Index].Clone();
                    CsConst.MyPublicCtrls.Add(oCtrls);
                }
                else
                {
                    string strTmp    = oNode.Name;
                    byte   bytKeyID  = byte.Parse(strTmp.Split('-')[0].ToString());
                    byte   bytStatus = byte.Parse(strTmp.Split('-')[1].ToString());

                    for (byte bytI = 0; bytI < bytAll; bytI++)
                    {
                        UVCMD.ControlTargets oCtrls = (UVCMD.ControlTargets)mySecurity.myVacs8[0].VacationCmds[oNode.Index][bytI].Clone();
                        CsConst.MyPublicCtrls.Add(oCtrls);
                    }
                }
                #endregion
            }
        }
Пример #15
0
        public bool DownLoadInfoFrmDevice(string DevNam, int wdDeviceType, int intActivePage)
        {
            string strMainRemark = DevNam.Split('\\')[1].Trim();

            DevNam = DevNam.Split('\\')[0].Trim();
            byte bytSubID = byte.Parse(DevNam.Split('-')[0].ToString());
            byte bytDevID = byte.Parse(DevNam.Split('-')[1].ToString());

            byte[] ArayTmp    = null;
            int    wdMaxValue = DeviceTypeList.GetMaxValueFromPublicModeGroup(wdDeviceType);

            DeviceName = bytSubID.ToString() + "-" + bytDevID.ToString() + "\\" + HDLSysPF.ReadDeviceMainRemark(bytSubID, bytDevID);

            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(5, null);
            }
            if (intActivePage == 0 || intActivePage == 1)
            {
                #region
                arayHotel = new byte[13];
                ArayTmp   = new byte[0];
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xE010, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                {
                    Backlight = CsConst.myRevBuf[25];
                    Ledlight  = CsConst.myRevBuf[26];

                    HDLUDP.TimeBetwnNext(1);
                }
                else
                {
                    return(false);
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(10, null);
                }
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x2014, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                {
                    Array.Copy(CsConst.myRevBuf, 25, arayHotel, 0, 13);

                    HDLUDP.TimeBetwnNext(1);
                }
                else
                {
                    return(false);
                }
                #endregion
                MyRead2UpFlags[0] = true;
            }

            byte[] ArayMode  = new byte[wdMaxValue]; //按键模式
            byte[] ArayDelay = new byte[wdMaxValue * 2];
            if (intActivePage == 0 || intActivePage == 2)
            {
                #region
                myKeySetting = new List <Key>();
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xE008, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                {
                    if (wdDeviceType == 3076)
                    {
                        for (int intJ = 0; intJ < wdMaxValue; intJ++)
                        {
                            ArayMode[intJ] = CsConst.myRevBuf[25 + intJ];
                        }
                    }
                    else if (wdDeviceType == 3078 || wdDeviceType == 3080)
                    {
                        for (int intJ = 0; intJ < wdMaxValue; intJ++)
                        {
                            ArayMode[intJ] = CsConst.myRevBuf[25 + intJ];
                        }
                    }
                    else if (wdDeviceType == 3064 || wdDeviceType == 3065 || wdDeviceType == 3068 || wdDeviceType == 3069)
                    {
                        for (int intJ = 0; intJ < wdMaxValue; intJ++)
                        {
                            ArayMode[intJ] = CsConst.myRevBuf[25 + intJ];
                        }
                    }

                    HDLUDP.TimeBetwnNext(1);
                }
                else
                {
                    return(false);
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(15, null);
                }

                if (wdDeviceType != 3058)
                {
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x2024, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                    {
                        Array.Copy(CsConst.myRevBuf, 26, ArayDelay, 0, ArayDelay.Length);

                        HDLUDP.TimeBetwnNext(1);
                    }
                    else
                    {
                        return(false);
                    }
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(20, null);
                }

                for (int intI = 0; intI < wdMaxValue; intI++)
                {
                    ArayTmp = new byte[1];

                    Key oKey = new Key();
                    oKey.ID    = (Byte)(intI + 1);
                    ArayTmp[0] = oKey.ID;

                    if (oKey.ReadButtonRemarkAndCMDFromDevice(bytSubID, bytDevID, wdDeviceType, -1, 255, false, 0, 0) == false)
                    {
                        return(false);
                    }

                    oKey.Delay      = ArayDelay[intI * 2] * 256 + ArayDelay[(intI * 2) + 1];
                    oKey.Mode       = ArayMode[intI];
                    oKey.KeyTargets = new List <UVCMD.ControlTargets>();

                    if (oKey.Mode == 10 || oKey.Mode == 14)
                    {
                        for (byte byt = 50; byt <= 98; byt++)
                        {
                            byte[] arayTmp = new byte[2];
                            arayTmp[0] = Convert.ToByte(oKey.ID);
                            arayTmp[1] = byt;
                            if (CsConst.mySends.AddBufToSndList(arayTmp, 0xE000, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                            {
                                UVCMD.ControlTargets oCMD = new UVCMD.ControlTargets();
                                oCMD.ID       = Convert.ToByte(CsConst.myRevBuf[26]);
                                oCMD.Type     = CsConst.myRevBuf[27]; //转换为正确的类型
                                oCMD.SubnetID = CsConst.myRevBuf[28];
                                oCMD.DeviceID = CsConst.myRevBuf[29];
                                oCMD.Param1   = CsConst.myRevBuf[30];
                                oCMD.Param2   = CsConst.myRevBuf[31];
                                oCMD.Param3   = CsConst.myRevBuf[32];
                                oCMD.Param4   = CsConst.myRevBuf[33];

                                oKey.KeyTargets.Add(oCMD);
                                HDLUDP.TimeBetwnNext(1);
                            }
                            else
                            {
                                return(false);
                            }
                        }
                    }
                    myKeySetting.Add(oKey);
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(30 + 5 * intI, null);
                    }
                }
                #endregion
                MyRead2UpFlags[1] = true;
            }

            if (intActivePage == 0 || intActivePage == 3)
            {
                #region
                if (wdDeviceType == 3076 || wdDeviceType == 3078 || wdDeviceType == 3080)
                {
                    if (wdDeviceType == 3076 || wdDeviceType == 3078 || wdDeviceType == 3080)
                    {
                        wdMaxValue = 3;
                    }
                    arayButtonSensitiVity = new byte[wdMaxValue];
                    arayButtonColor       = new byte[wdMaxValue * 6];
                    arayButtonBalance     = new byte[wdMaxValue * 3 + 1];


                    ArayTmp = null;
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xE150, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                    {
                        Array.Copy(CsConst.myRevBuf, 25, arayButtonSensitiVity, 0, wdMaxValue);

                        HDLUDP.TimeBetwnNext(1);
                    }
                    else
                    {
                        return(false);
                    }

                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(81);
                    }

                    ArayTmp = new byte[1];
                    for (int i = 1; i <= wdMaxValue; i++)
                    {
                        ArayTmp[0] = Convert.ToByte(i);
                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xE14C, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                        {
                            Array.Copy(CsConst.myRevBuf, 26, arayButtonColor, (i - 1) * 6, 6);

                            HDLUDP.TimeBetwnNext(1);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(82);
                    }


                    ArayTmp = null;
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1998, bytSubID, bytDevID, false, false, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                    {
                        for (int i = 1; i <= wdMaxValue; i++)
                        {
                            arayButtonBalance[0] = Convert.ToByte(i);
                            Array.Copy(CsConst.myRevBuf, 25 + (i - 1) * 3, arayButtonBalance, (i - 1) * 3 + 1, 3);
                        }

                        HDLUDP.TimeBetwnNext(1);
                    }
                    MyRead2UpFlags[2] = true;
                }
                #endregion
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100, null);
            }
            return(true);
        }
Пример #16
0
        /// <summary>
        ///下载设置
        /// </summary>
        public void DownloadMSPUInfoToDevice(string DevName, int DeviceType, int intActivePage)
        {
            string strMainRemark = DevName.Split('\\')[1].Trim();

            DevName = DevName.Split('\\')[0].Trim();

            byte bytSubID   = byte.Parse(DevName.Split('-')[0].ToString());
            byte bytDevID   = byte.Parse(DevName.Split('-')[1].ToString());
            int  wdMaxValue = DeviceTypeList.GetMaxValueFromPublicModeGroup(DeviceType);

            byte[] ArayTmp = new byte[0];
            if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x000E, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
            {
                byte[] arayRemark = new byte[20];
                for (int intI = 0; intI < 20; intI++)
                {
                    arayRemark[intI] = CsConst.myRevBuf[25 + intI];
                }
                Devname = bytSubID.ToString() + "-" + bytDevID.ToString() + "\\" + HDLPF.Byte2String(arayRemark);

                HDLUDP.TimeBetwnNext(1);
            }
            else
            {
                return;
            }

            if (intActivePage == 0 || intActivePage == 1)
            {
                #region
                ONLEDs = new byte[5];
                //读取LED状态
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xDB3E, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                {
                    ONLEDs    = new byte[5];
                    ONLEDs[0] = CsConst.myRevBuf[27];

                    HDLUDP.TimeBetwnNext(1);
                }
                else
                {
                    return;
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(1, null);
                }
                //读取传感器使能
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x161C, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                {
                    EnableSensors    = new byte[15];
                    EnableSensors[0] = CsConst.myRevBuf[26];
                    EnableSensors[1] = CsConst.myRevBuf[27];
                    EnableSensors[2] = CsConst.myRevBuf[31];
                    EnableSensors[3] = CsConst.myRevBuf[37];
                    EnableSensors[4] = CsConst.myRevBuf[32];
                    EnableSensors[5] = CsConst.myRevBuf[34];
                    EnableSensors[6] = CsConst.myRevBuf[35];
                    EnableSensors[7] = CsConst.myRevBuf[36];

                    HDLUDP.TimeBetwnNext(1);
                }
                else
                {
                    return;
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(2, null);
                }
                //读取补偿值
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1600, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                {
                    ParamSensors    = new byte[15];
                    ParamSensors[0] = CsConst.myRevBuf[26];
                    ParamSensors[1] = CsConst.myRevBuf[27];
                    ParamSensors[2] = CsConst.myRevBuf[38];
                    ParamSensors[3] = CsConst.myRevBuf[39];

                    HDLUDP.TimeBetwnNext(1);
                }
                else
                {
                    return;
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(3);
                }
                //恒照度读取
                if (DeviceType == 326)
                {
                    EnableBroads = new byte[15];
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x16A9, bytSubID, bytDevID, false, true, true, false) == true)
                    {
                        Array.Copy(CsConst.myRevBuf, 26, EnableBroads, 0, 9);

                        HDLUDP.TimeBetwnNext(1);
                    }
                    else
                    {
                        return;
                    }
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(4);
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(5, null);
                }
                #endregion
                MyRead2UpFlags[0] = true;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(10);
            }
            if (intActivePage == 0 || intActivePage == 2)
            {
                //逻辑块功能设置
                #region
                // 读取24个逻辑的使能位
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1618, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                {
                    logic = new List <SensorLogic>();
                    byte[] ArayTmpMode = new byte[24];
                    Array.Copy(CsConst.myRevBuf, 26, ArayTmpMode, 0, 24);

                    HDLUDP.TimeBetwnNext(1);
                    for (int intI = 1; intI <= 24; intI++)
                    {
                        SensorLogic oTmp = new SensorLogic();
                        oTmp.ID      = (byte)intI;
                        oTmp.Enabled = ArayTmpMode[intI - 1];
                        oTmp.SetUp   = new List <UVCMD.ControlTargets>();
                        oTmp.NoSetUp = new List <UVCMD.ControlTargets>();
                        if (oTmp.Enabled != 1)
                        {
                            logic.Add(oTmp);
                            continue;
                        }
                        #region

                        //读取备注
                        ArayTmp    = new byte[1];
                        ArayTmp[0] = Convert.ToByte(intI);

                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1606, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                        {
                            byte[] arayRemark = new byte[20];
                            for (int intJ = 0; intJ < 20; intJ++)
                            {
                                arayRemark[intJ] = CsConst.myRevBuf[27 + intJ];
                            }
                            oTmp.Remarklogic = HDLPF.Byte2String(arayRemark);

                            HDLUDP.TimeBetwnNext(1);
                        }
                        else
                        {
                            return;
                        }
                        if (CsConst.isRestore)
                        {
                            //读取设置
                            #region
                            if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x160E, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                            {
                                oTmp.bytRelation   = CsConst.myRevBuf[27];
                                oTmp.EnableSensors = new byte[15];
                                int intTmp = CsConst.myRevBuf[28] * 256 + CsConst.myRevBuf[29];
                                if (intTmp == 65535)
                                {
                                    intTmp = 0;
                                }
                                for (byte i = 0; i < 12; i++)
                                {
                                    if ((intTmp & (1 << i)) == (1 << i))
                                    {
                                        switch (i)
                                        {
                                        case 0: oTmp.EnableSensors[0] = 1; break;

                                        case 1: oTmp.EnableSensors[1] = 1; break;

                                        case 5: oTmp.EnableSensors[2] = 1; break;

                                        case 6: oTmp.EnableSensors[4] = 1; break;

                                        case 8: oTmp.EnableSensors[5] = 1; break;

                                        case 9: oTmp.EnableSensors[6] = 1; break;

                                        case 10: oTmp.EnableSensors[7] = 1; break;

                                        case 11: oTmp.EnableSensors[3] = 1; break;
                                        }
                                    }
                                }

                                oTmp.DelayTimeT = CsConst.myRevBuf[30] * 256 + CsConst.myRevBuf[31];
                                oTmp.DelayTimeF = CsConst.myRevBuf[32] * 256 + CsConst.myRevBuf[33];
                                if (oTmp.DelayTimeT == 65535)
                                {
                                    oTmp.DelayTimeT = 0;
                                }
                                if (oTmp.DelayTimeF == 65535)
                                {
                                    oTmp.DelayTimeF = 0;
                                }
                                Array.Copy(CsConst.myRevBuf, 34, oTmp.Paramters, 0, 6);
                                oTmp.Paramters[6] = CsConst.myRevBuf[46];
                                oTmp.Paramters[7] = CsConst.myRevBuf[55];
                                oTmp.Paramters[8] = CsConst.myRevBuf[47];
                                oTmp.UV1          = new UniversalSwitchSet();
                                if (201 <= CsConst.myRevBuf[49] && CsConst.myRevBuf[49] <= 248)
                                {
                                    oTmp.UV1.id = CsConst.myRevBuf[49];
                                }
                                else
                                {
                                    oTmp.UV1.id = 201;
                                }
                                if (CsConst.myRevBuf[50] <= 1)
                                {
                                    oTmp.UV1.condition = CsConst.myRevBuf[50];
                                }
                                oTmp.UV2 = new UniversalSwitchSet();
                                if (201 <= CsConst.myRevBuf[51] && CsConst.myRevBuf[51] <= 248)
                                {
                                    oTmp.UV2.id = CsConst.myRevBuf[51];
                                }
                                else
                                {
                                    oTmp.UV2.id = 201;
                                    if (oTmp.UV1.id == 201)
                                    {
                                        oTmp.UV2.id = 202;
                                    }
                                }
                                if (CsConst.myRevBuf[52] <= 1)
                                {
                                    oTmp.UV2.condition = CsConst.myRevBuf[52];
                                }
                                oTmp.Paramters[9]  = CsConst.myRevBuf[53];
                                oTmp.Paramters[10] = CsConst.myRevBuf[54];

                                HDLUDP.TimeBetwnNext(1);
                            }
                            else
                            {
                                return;
                            }
                            #endregion
                            //读取通用开关信息
                            #region
                            ArayTmp[0] = oTmp.UV1.id;
                            if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x160A, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                            {
                                byte[] arayRemark = new byte[20];
                                for (int i = 0; i < 20; i++)
                                {
                                    arayRemark[i] = CsConst.myRevBuf[27 + i];
                                }
                                oTmp.UV1.remark = HDLPF.Byte2String(arayRemark);
                                if (CsConst.myRevBuf[47] == 1)
                                {
                                    oTmp.UV1.isAutoOff = true;
                                }
                                if (CsConst.myRevBuf[48] * 256 + CsConst.myRevBuf[49] > 3600)
                                {
                                    oTmp.UV1.autoOffDelay = 1;
                                }
                                else
                                {
                                    oTmp.UV1.autoOffDelay = CsConst.myRevBuf[48] * 256 + CsConst.myRevBuf[49];
                                }

                                HDLUDP.TimeBetwnNext(1);
                            }
                            else
                            {
                                return;
                            }
                            if ((CsConst.mySends.AddBufToSndList(ArayTmp, 0xE018, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true))
                            {
                                oTmp.UV1.state = CsConst.myRevBuf[26];

                                HDLUDP.TimeBetwnNext(1);
                            }
                            else
                            {
                                return;
                            }
                            ArayTmp[0] = oTmp.UV2.id;
                            if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x160A, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                            {
                                byte[] arayRemark = new byte[20];
                                for (int i = 0; i < 20; i++)
                                {
                                    arayRemark[i] = CsConst.myRevBuf[27 + i];
                                }
                                oTmp.UV2.remark = HDLPF.Byte2String(arayRemark);
                                if (CsConst.myRevBuf[47] == 1)
                                {
                                    oTmp.UV2.isAutoOff = true;
                                }
                                if (CsConst.myRevBuf[48] * 256 + CsConst.myRevBuf[49] > 3600)
                                {
                                    oTmp.UV2.autoOffDelay = 1;
                                }
                                else
                                {
                                    oTmp.UV2.autoOffDelay = CsConst.myRevBuf[48] * 256 + CsConst.myRevBuf[49];
                                }

                                HDLUDP.TimeBetwnNext(1);
                            }
                            else
                            {
                                return;
                            }
                            if ((CsConst.mySends.AddBufToSndList(ArayTmp, 0xE018, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true))
                            {
                                oTmp.UV2.state = CsConst.myRevBuf[26];
                            }
                            else
                            {
                                return;
                            }
                            #endregion
                            //成立的触发目标
                            #region
                            for (byte bytJ = 0; bytJ < 20; bytJ++)
                            {
                                ArayTmp    = new byte[2];
                                ArayTmp[0] = (byte)(intI);
                                ArayTmp[1] = (byte)(bytJ + 1);
                                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1612, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                                {
                                    UVCMD.ControlTargets oCMD = new UVCMD.ControlTargets();
                                    oCMD.ID   = CsConst.myRevBuf[27];
                                    oCMD.Type = CsConst.myRevBuf[28];  //转换为正确的类型

                                    if (oCMD.Type != 3)
                                    {
                                        oCMD.SubnetID = CsConst.myRevBuf[29];
                                        oCMD.DeviceID = CsConst.myRevBuf[30];
                                        oCMD.Param1   = CsConst.myRevBuf[31];
                                        oCMD.Param2   = CsConst.myRevBuf[32];
                                        oCMD.Param3   = CsConst.myRevBuf[33];
                                        oCMD.Param4   = CsConst.myRevBuf[34];

                                        oTmp.SetUp.Add(oCMD);
                                    }

                                    HDLUDP.TimeBetwnNext(1);
                                }
                                else
                                {
                                    return;
                                }
                            }
                            #endregion
                            //不成立的触发目标
                            #region
                            for (byte bytJ = 0; bytJ < 20; bytJ++)
                            {
                                ArayTmp    = new byte[2];
                                ArayTmp[0] = (byte)(intI + 24);
                                ArayTmp[1] = (byte)(bytJ + 1);

                                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1612, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                                {
                                    UVCMD.ControlTargets oCMD = new UVCMD.ControlTargets();
                                    oCMD.ID   = CsConst.myRevBuf[27];
                                    oCMD.Type = CsConst.myRevBuf[28];  //转换为正确的类型

                                    if (oCMD.Type != 3)
                                    {
                                        oCMD.SubnetID = CsConst.myRevBuf[29];
                                        oCMD.DeviceID = CsConst.myRevBuf[30];
                                        oCMD.Param1   = CsConst.myRevBuf[31];
                                        oCMD.Param2   = CsConst.myRevBuf[32];
                                        oCMD.Param3   = CsConst.myRevBuf[33];
                                        oCMD.Param4   = CsConst.myRevBuf[34];

                                        oTmp.NoSetUp.Add(oCMD);
                                    }

                                    HDLUDP.TimeBetwnNext(1);
                                }
                                else
                                {
                                    return;
                                }
                            }
                            #endregion
                        }
                        logic.Add(oTmp);
                        #endregion
                        if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                        {
                            CsConst.calculationWorker.ReportProgress(10 + intI);
                        }
                    }
                }
                else
                {
                    return;
                }
                #endregion
                MyRead2UpFlags[1] = true;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(20);
            }
            if (intActivePage == 0 || intActivePage == 3)
            {
                fireset = new List <UVCMD.SecurityInfo>();
                ArayTmp = new byte[1];
                #region
                for (byte intI = 1; intI <= 1; intI++)
                {
                    ArayTmp[0] = intI;
                    //读取备注
                    UVCMD.SecurityInfo oTmp = new UVCMD.SecurityInfo();
                    oTmp.bytSeuID = intI;
                    switch (intI)
                    {
                    default:
                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1624, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                        {
                            byte[] arayRemark = new byte[20];
                            for (int intJ = 0; intJ < 20; intJ++)
                            {
                                arayRemark[intJ] = CsConst.myRevBuf[27 + intJ];
                            }
                            oTmp.strRemark = HDLPF.Byte2String(arayRemark);

                            HDLUDP.TimeBetwnNext(1);
                        }
                        else
                        {
                            return;
                        }
                        break;
                    }
                    //读取设置
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1628, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                    {
                        oTmp.bytTerms = CsConst.myRevBuf[27];
                        oTmp.bytSubID = CsConst.myRevBuf[28];
                        oTmp.bytDevID = CsConst.myRevBuf[29];
                        oTmp.bytArea  = CsConst.myRevBuf[30];

                        HDLUDP.TimeBetwnNext(1);
                    }
                    else
                    {
                        return;
                    }
                    fireset.Add(oTmp);
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(35 + intI);
                    }
                }
                #endregion
                MyRead2UpFlags[2] = true;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(30);
            }
            if (intActivePage == 0 || intActivePage == 4)
            {
                #region
                //读取模拟测试
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1620, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                {
                    SimulateEnable    = new byte[15];
                    SimulateEnable[0] = CsConst.myRevBuf[26];
                    SimulateEnable[1] = CsConst.myRevBuf[27];
                    SimulateEnable[2] = CsConst.myRevBuf[28];
                    SimulateEnable[3] = CsConst.myRevBuf[32];
                    SimulateEnable[4] = CsConst.myRevBuf[40];
                    ParamSimulate     = new byte[15];
                    ParamSimulate[0]  = CsConst.myRevBuf[33];
                    ParamSimulate[1]  = CsConst.myRevBuf[34];
                    ParamSimulate[2]  = CsConst.myRevBuf[35];
                    ParamSimulate[3]  = CsConst.myRevBuf[39];
                    ParamSimulate[4]  = CsConst.myRevBuf[41];

                    HDLUDP.TimeBetwnNext(1);
                }
                else
                {
                    return;
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(31, null);
                }
                #endregion
                MyRead2UpFlags[3] = true;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(40);
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100);
            }
        }
Пример #17
0
        /// <summary>
        ///下载设置
        /// </summary>
        public bool DownLoadInformationFrmDevice(string DevName)
        {
            string strMainRemark = DevName.Split('\\')[1].Trim();

            DevName = DevName.Split('\\')[0].Trim();
            //保存basic informations
            byte bytSubID = byte.Parse(DevName.Split('-')[0].ToString());
            byte bytDevID = byte.Parse(DevName.Split('-')[1].ToString());

            byte[] ArayMain      = new byte[20];
            byte[] arayTmpRemark = HDLUDP.StringToByte(strMainRemark);
            Array.Copy(arayTmpRemark, 0, ArayMain, 0, arayTmpRemark.Length);

            if (CsConst.mySends.AddBufToSndList(ArayMain, 0x000E, bytSubID, bytDevID, false, true, true, false) == false)
            {
                return(false);
            }
            else
            {
                byte[] arayRemark = new byte[20];
                for (int intI = 0; intI < 20; intI++)
                {
                    arayRemark[intI] = CsConst.myRevBuf[25 + intI];
                }
                DeviceName = bytSubID.ToString() + "-" + bytDevID.ToString() + "\\" + HDLPF.Byte2String(arayRemark);
            }

            //HAI unit to single light control
            #region
            units = new List <Unit>();

            for (byte bytI = 1; bytI <= 192; bytI++)
            {
                Unit oTmp = new Unit();
                oTmp.bytID   = bytI;
                oTmp.Command = "^A" + String.Format("{0:D3} ", bytI);

                ArayMain    = new byte[3];
                ArayMain[0] = 1;
                ArayMain[1] = bytI;
                ArayMain[2] = 0;

                if (CsConst.mySends.AddBufToSndList(ArayMain, 0x0238, bytSubID, bytDevID, false, true, true, false) == true)
                {
                    UVCMD.ControlTargets oCMD = new UVCMD.ControlTargets();
                    oCMD.ID   = 1;
                    oCMD.Type = CsConst.myRevBuf[28];  //转换为正确的类型

                    if (oCMD.Type != 3 && oCMD.Type < 13)
                    {
                        oCMD.SubnetID = CsConst.myRevBuf[29];
                        oCMD.DeviceID = CsConst.myRevBuf[30];
                        oCMD.Param1   = CsConst.myRevBuf[31];
                        oCMD.Param2   = CsConst.myRevBuf[32];
                        oCMD.Param3   = CsConst.myRevBuf[33];
                        oCMD.Param4   = CsConst.myRevBuf[34];

                        CsConst.myRevBuf = new byte[1200];
                        oTmp.oUnit       = oCMD;
                    }
                }
                else
                {
                    return(false);
                }
                units.Add(oTmp);
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(bytI / 6, null);
                }
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(33, null);
            }
            #endregion

            //HAI scene to scene
            #region
            scen = new List <Scene>();

            for (byte bytI = 1; bytI <= 254; bytI++)
            {
                Scene oTmp = new Scene();
                oTmp.bytID   = bytI;
                oTmp.Command = "^C" + String.Format("{0:D3} ", bytI);

                ArayMain    = new byte[3];
                ArayMain[0] = 2;
                ArayMain[1] = bytI;
                ArayMain[2] = 0;

                if (CsConst.mySends.AddBufToSndList(ArayMain, 0x0238, bytSubID, bytDevID, false, true, true, false) == true)
                {
                    UVCMD.ControlTargets oCMD = new UVCMD.ControlTargets();
                    oCMD.ID   = 1;
                    oCMD.Type = CsConst.myRevBuf[28];  //转换为正确的类型

                    if (oCMD.Type != 3 && oCMD.Type < 13)
                    {
                        oCMD.SubnetID    = CsConst.myRevBuf[29];
                        oCMD.DeviceID    = CsConst.myRevBuf[30];
                        oCMD.Param1      = CsConst.myRevBuf[31];
                        oCMD.Param2      = CsConst.myRevBuf[32];
                        oCMD.Param3      = CsConst.myRevBuf[33];
                        oCMD.Param4      = CsConst.myRevBuf[34];
                        CsConst.myRevBuf = new byte[1200];
                        oTmp.oUnit       = oCMD;
                    }
                }
                else
                {
                    return(false);
                }
                scen.Add(oTmp);
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(33 + bytI / 6, null);
                }
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(66, null);
            }
            #endregion

            //HAI buttons to UV switch
            #region
            buttonstatus = new List <ButtonStatus>();

            for (byte bytI = 1; bytI <= 192; bytI++)
            {
                ButtonStatus oTmp = new ButtonStatus();
                oTmp.bytID   = bytI;
                oTmp.Command = String.Format("{0:D3} ", bytI) + " Button Tab/Press<-->OFF/ON";

                ArayMain    = new byte[2];
                ArayMain[0] = 3;
                ArayMain[1] = bytI;

                if (CsConst.mySends.AddBufToSndList(ArayMain, 0x0238, bytSubID, bytDevID, false, true, true, false) == true)
                {
                    UVCMD.ControlTargets oCMD = new UVCMD.ControlTargets();
                    oCMD.ID = 1;
                    if (CsConst.myRevBuf[27] == 1)
                    {
                        oCMD.Type = 2;                             //转换为正确的类型
                    }
                    else
                    {
                        oCMD.Type = 3;
                    }

                    if (oCMD.Type != 3)
                    {
                        oCMD.SubnetID    = CsConst.myRevBuf[28];
                        oCMD.DeviceID    = CsConst.myRevBuf[29];
                        oCMD.Param1      = CsConst.myRevBuf[30];
                        oCMD.Param2      = 0;
                        oCMD.Param3      = 0;
                        oCMD.Param4      = 0;
                        CsConst.myRevBuf = new byte[1200];
                        oTmp.oUnit       = oCMD;
                    }
                }
                else
                {
                    return(false);
                }
                buttonstatus.Add(oTmp);
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(66 + bytI / 6, null);
                }
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100, null);
            }
            #endregion
            MyRead2UpFlags[0] = true;
            return(true);
        }
Пример #18
0
        ///<summary>
        ///保存数据库面板设置,将所有数据保存
        ///</summary>
        public void saveHaiInfoToDB(int DIndex)
        {
            /// delete all old information and refresh the database
            string strsql = string.Format("delete from dbKeyTargets where  DIndex={0}", DIndex);

            DataModule.ExecuteSQLDatabase(strsql);

            ///save save basic setup of HAI
            #region
            if (units != null && units.Count != 0)
            {
                foreach (Unit oTmp in units)
                {
                    if (oTmp.oUnit != null)
                    {
                        UVCMD.ControlTargets TmpCmds = oTmp.oUnit;
                        strsql = string.Format("Insert into dbKeyTargets(DIndex,KeyIndex,objID,KeyFunType,SubNetID,DeviceID,FirstParameter,"
                                               + "SecondParameter,RunTimeMinute,RunTimeSecond,Ms04State) values ({0},{1},'{2}',{3},{4},{5},{6},{7},{8},{9},{10})",
                                               DIndex, 1, oTmp.bytID, TmpCmds.Type, TmpCmds.SubnetID, TmpCmds.DeviceID, TmpCmds.Param1,
                                               TmpCmds.Param2, TmpCmds.Param3, TmpCmds.Param4, 0);
                        DataModule.ExecuteSQLDatabase(strsql);
                    }
                }
            }
            #endregion

            //save infomation of Hai Scene
            #region
            if (scen != null && scen.Count != 0)
            {
                foreach (Scene oTmp in scen)
                {
                    if (oTmp.oUnit != null)
                    {
                        UVCMD.ControlTargets TmpCmds = oTmp.oUnit;
                        strsql = string.Format("Insert into dbKeyTargets(DIndex,KeyIndex,objID,KeyFunType,SubNetID,DeviceID,FirstParameter,"
                                               + "SecondParameter,RunTimeMinute,RunTimeSecond,Ms04State,StrTip) values ({0},{1},'{2}',{3},{4},{5},{6},{7},{8},{9},{10})",
                                               DIndex, 2, oTmp.bytID, TmpCmds.Type, TmpCmds.SubnetID, TmpCmds.DeviceID, TmpCmds.Param1,
                                               TmpCmds.Param2, TmpCmds.Param3, TmpCmds.Param4, 0);
                        DataModule.ExecuteSQLDatabase(strsql);
                    }
                }
            }
            #endregion

            //save infomation of Hai ButtonStatus
            #region
            if (buttonstatus != null && buttonstatus.Count != 0)
            {
                foreach (ButtonStatus oTmp in buttonstatus)
                {
                    if (oTmp.oUnit != null)
                    {
                        UVCMD.ControlTargets TmpCmds = oTmp.oUnit;
                        strsql = string.Format("Insert into dbKeyTargets(DIndex,KeyIndex,objID,KeyFunType,SubNetID,DeviceID,FirstParameter,"
                                               + "SecondParameter,RunTimeMinute,RunTimeSecond,Ms04State) values ({0},{1},'{2}',{3},{4},{5},{6},{7},{8},{9},{10})",
                                               DIndex, 3, oTmp.bytID, TmpCmds.Type, TmpCmds.SubnetID, TmpCmds.DeviceID, TmpCmds.Param1,
                                               TmpCmds.Param2, TmpCmds.Param3, TmpCmds.Param4, 0);
                        DataModule.ExecuteSQLDatabase(strsql);
                    }
                }
            }
            #endregion
        }
Пример #19
0
        ///<summary>
        ///读取数据库面板设置,将所有数据读至缓存
        ///</summary>
        public void ReadSensorInfoFromDB(int DIndex)
        {
            //read GPRS Info
            #region
            string          str = string.Format("select * from dbGPRSbasic where DIndex={0}", DIndex);
            OleDbDataReader dr  = DataModule.SearchAResultSQLDB(str, CsConst.mstrCurPath);
            if (dr == null)
            {
                return;
            }
            while (dr.Read())
            {
                strIP        = dr.GetString(1);
                strRouterIP  = dr.GetString(2);
                strMAC       = dr.GetString(3);
                strSevCentre = dr.GetString(4);
                strCode      = dr.GetString(5);
                strIMEI      = dr.GetString(6);
                blnTo485     = dr.GetBoolean(7);
            }
            dr.Close();
            #endregion

            //read GPRS Control Info
            #region
            MyControls = new List <SMSControls>();
            str        = string.Format("select * from dbGPRSControls where DIndex={0} order by SenNum", DIndex);
            dr         = DataModule.SearchAResultSQLDB(str, CsConst.mstrCurPath);
            if (dr != null)
            {
                while (dr.Read())
                {
                    SMSControls temp = new SMSControls();
                    temp.MyVerify      = new List <PhoneInF>();
                    temp.MyTargets     = new List <UVCMD.ControlTargets>();
                    temp.ID            = dr.GetInt16(1);
                    temp.strRemark     = dr.GetString(2);
                    temp.strSMSContent = dr.GetString(3);
                    temp.blnIsVerify   = dr.GetBoolean(4);
                    temp.blnReply      = dr.GetBoolean(5);

                    #region
                    if (temp.blnIsVerify == true)
                    {
                        str = string.Format("select * from dbGPRSVerify where DIndex={0} and SenNum ={1} order by VerifyNum", DIndex, temp.ID);
                        OleDbDataReader drVerify = DataModule.SearchAResultSQLDB(str, CsConst.mstrCurPath);
                        if (drVerify != null)
                        {
                            while (drVerify.Read())
                            {
                                PhoneInF tmp = new PhoneInF();
                                tmp.ID       = drVerify.GetInt16(2);
                                tmp.Remark   = drVerify.GetString(3);
                                tmp.PhoneNum = drVerify.GetString(4);
                                temp.MyVerify.Add(tmp);
                            }
                            drVerify.Close();
                        }
                    }
                    #endregion

                    str = string.Format("select * from dbKeyTargets where DIndex ={0} and KeyIndex = {1} order by objID", DIndex, temp.ID);
                    OleDbDataReader drKeyCmds = DataModule.SearchAResultSQLDB(str, CsConst.mstrCurPath);
                    if (drKeyCmds != null)
                    {
                        while (drKeyCmds.Read())
                        {
                            UVCMD.ControlTargets TmpCmd = new UVCMD.ControlTargets();
                            TmpCmd.ID       = drKeyCmds.GetByte(2);
                            TmpCmd.Type     = drKeyCmds.GetByte(3);
                            TmpCmd.SubnetID = drKeyCmds.GetByte(4);
                            TmpCmd.DeviceID = drKeyCmds.GetByte(5);
                            TmpCmd.Param1   = drKeyCmds.GetByte(6);
                            TmpCmd.Param2   = drKeyCmds.GetByte(7);
                            TmpCmd.Param3   = drKeyCmds.GetByte(8);
                            TmpCmd.Param4   = drKeyCmds.GetByte(9);
                            temp.MyTargets.Add(TmpCmd);
                        }
                        drKeyCmds.Close();
                        MyControls.Add(temp);
                    }
                }
                dr.Close();
            }
            #endregion

            //read GPRS SMS Send Info
            #region
            MySendSMS = new List <SendSMS>();
            str       = string.Format("select * from dbGPRSSendSMS where DIndex = {0} order by SenNum", DIndex);
            dr        = DataModule.SearchAResultSQLDB(str, CsConst.mstrCurPath);
            if (dr != null)
            {
                while (dr.Read())
                {
                    SendSMS temp = new SendSMS();
                    temp.MyGuests  = new List <PhoneInF>();
                    temp.ID        = dr.GetInt16(1);
                    temp.strRemark = dr.GetString(2);

                    str = string.Format("select * from dbGPRSSendSMSInfo where DIndex={0} and SenNum ={1} order by TargetNum", DIndex, temp.ID);
                    OleDbDataReader drSend = DataModule.SearchAResultSQLDB(str, CsConst.mstrCurPath);
                    if (drSend != null)
                    {
                        while (drSend.Read())
                        {
                            PhoneInF tmp = new PhoneInF();
                            tmp.ID       = drSend.GetInt16(2);
                            tmp.Remark   = drSend.GetString(3);
                            tmp.PhoneNum = drSend.GetString(4);
                            tmp.strSMS   = drSend.GetString(5);
                            temp.MyGuests.Add(tmp);
                        }
                        drSend.Close();
                    }
                    MySendSMS.Add(temp);
                }
                dr.Close();
            }
            #endregion
        }
Пример #20
0
        //<summary>
        //读取数据库面板设置,将所有数据读至缓存
        //</summary>
        public void ReadSecurityFrmDBTobuf(int DIndex)
        {
            if (LogicPos == null)
            {
                LogicPos = new byte[50];                   //存储位置经纬度
            }
            if (MyDesign == null)
            {
                MyDesign = new LogicBlock[12];                   //十二个逻辑块设置
            }
            //读取经纬度
            #region
            string          str = string.Format("select * from dbLogic where DIndex={0}", DIndex);
            OleDbDataReader dr  = DataModule.SearchAResultSQLDB(str);
            if (dr != null)
            {
                while (dr.Read())
                {
                    LogicPos        = (byte[])dr[1];
                    LogicSummerTime = (byte[])dr[2];
                    DateTimeAry     = (byte[])dr[3];
                    isBroadcastTime = (bool)dr[4];
                }
                dr.Close();
            }
            #endregion

            for (int intI = 1; intI <= 12; intI++)
            {
                MyDesign[intI - 1] = new LogicBlock();
                //读取基本信息
                #region
                str = string.Format("select * from dbLogicTable where DIndex={0}", DIndex);
                dr  = DataModule.SearchAResultSQLDB(str);
                if (dr != null)
                {
                    while (dr.Read())
                    {
                        MyDesign[intI - 1].Remark   = dr.GetString(1);
                        MyDesign[intI - 1].TableIDs = (byte[])dr[2];
                        MyDesign[intI - 1].MyPins   = new List <byte[]>();
                        MyDesign[intI - 1].Remarks  = (string[])dr[3];
                        for (byte bytI = 0; bytI < 12; bytI++)
                        {
                            byte[] Tmp = (byte[])dr[4 + bytI];
                            if (Tmp != null)
                            {
                                MyDesign[intI - 1].MyPins.Add(Tmp);
                            }
                        }
                    }
                }
                #endregion

                //读取目标设置
                #region
                MyDesign[intI - 1].ArmCmds = new List <UVCMD.ControlTargets> [20];
                str = string.Format("select * from dbKeyTargets where DIndex ={0} and KeyIndex = {1} and  Ms04State >= 1 and Ms04State <= 20 order by objID", DIndex, intI);
                OleDbDataReader drKeyCmds = DataModule.SearchAResultSQLDB(str);
                if (drKeyCmds != null)
                {
                    while (drKeyCmds.Read())
                    {
                        int intIndex = drKeyCmds.GetInt16(10); //对应逻辑表号
                        UVCMD.ControlTargets TmpCmd = new UVCMD.ControlTargets();
                        TmpCmd.ID       = drKeyCmds.GetByte(2);
                        TmpCmd.Type     = drKeyCmds.GetByte(3);
                        TmpCmd.SubnetID = drKeyCmds.GetByte(4);
                        TmpCmd.DeviceID = drKeyCmds.GetByte(5);
                        TmpCmd.Param1   = drKeyCmds.GetByte(6);
                        TmpCmd.Param2   = drKeyCmds.GetByte(7);
                        TmpCmd.Param3   = drKeyCmds.GetByte(8);
                        TmpCmd.Param4   = drKeyCmds.GetByte(9);
                        TmpCmd.Hint     = drKeyCmds.GetString(11);

                        if (MyDesign[intI - 1].ArmCmds[intIndex - 1] == null)
                        {
                            MyDesign[intI - 1].ArmCmds[intIndex - 1] = new List <UVCMD.ControlTargets>();
                        }
                        MyDesign[intI - 1].ArmCmds[intIndex - 1].Add((UVCMD.ControlTargets)TmpCmd);
                    }
                    drKeyCmds.Close();
                }
                #endregion
            }
        }
Пример #21
0
        /// <summary>
        ///上传设置
        /// </summary>
        public bool UploaDeviceFromBufferToDevice(string DevName)
        {
            string strMainRemark = DevName.Split('\\')[1].Trim().Split('(')[0].Trim();

            DevName = DevName.Split('\\')[0].Trim();
            //保存basic informations
            byte bytSubID = byte.Parse(DevName.Split('-')[0].ToString());
            byte bytDevID = byte.Parse(DevName.Split('-')[1].ToString());

            byte[] ArayMain      = new byte[20];
            byte[] arayTmpRemark = HDLUDP.StringToByte(strMainRemark);
            if (arayTmpRemark.Length > 20)
            {
                Array.Copy(arayTmpRemark, 0, ArayMain, 0, 20);
            }
            else
            {
                Array.Copy(arayTmpRemark, 0, ArayMain, 0, arayTmpRemark.Length);
            }

            if (CsConst.mySends.AddBufToSndList(ArayMain, 0x0010, bytSubID, bytDevID, false, true, true, false) == false)
            {
                return(false);
            }

            //HAI unit to single light control
            #region
            if (units != null && units.Count != 0)
            {
                foreach (Unit oTmp in units)
                {
                    if (oTmp.oUnit != null)
                    {
                        UVCMD.ControlTargets TmpCmd = oTmp.oUnit;
                        byte[] arayCMD = new byte[10];
                        arayCMD[0] = 1;  //表示类型 HAI单元
                        arayCMD[1] = oTmp.bytID;
                        arayCMD[2] = 0;
                        arayCMD[3] = TmpCmd.Type;
                        arayCMD[4] = TmpCmd.SubnetID;
                        arayCMD[5] = TmpCmd.DeviceID;
                        arayCMD[6] = TmpCmd.Param1;
                        arayCMD[7] = TmpCmd.Param2;
                        arayCMD[8] = TmpCmd.Param3;   // save targets
                        arayCMD[9] = TmpCmd.Param4;
                        if (CsConst.mySends.AddBufToSndList(arayCMD, 0x023A, bytSubID, bytDevID, false, true, true, false) == false)
                        {
                            return(false);
                        }
                        HDLUDP.TimeBetwnNext(arayCMD.Length);
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(oTmp.bytID / 6, null);
                    }
                }
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(33, null);
            }
            #endregion

            //HAI scene to scene
            #region
            if (scen != null && scen.Count != 0)
            {
                foreach (Scene oTmp in scen)
                {
                    if (oTmp.oUnit != null)
                    {
                        UVCMD.ControlTargets TmpCmd = oTmp.oUnit;
                        byte[] arayCMD = new byte[10];
                        arayCMD[0] = 2;  //表示类型 HAI单元
                        arayCMD[1] = oTmp.bytID;
                        arayCMD[2] = 0;
                        arayCMD[3] = TmpCmd.Type;
                        arayCMD[4] = TmpCmd.SubnetID;
                        arayCMD[5] = TmpCmd.DeviceID;
                        arayCMD[6] = TmpCmd.Param1;
                        arayCMD[7] = TmpCmd.Param2;
                        arayCMD[8] = TmpCmd.Param3;   // save targets
                        arayCMD[9] = TmpCmd.Param4;
                        if (CsConst.mySends.AddBufToSndList(arayCMD, 0x023A, bytSubID, bytDevID, false, true, true, false) == false)
                        {
                            return(false);
                        }
                        HDLUDP.TimeBetwnNext(arayCMD.Length);
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(33 + oTmp.bytID / 6, null);
                    }
                }
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(66, null);
            }
            #endregion

            //HAI buttons to UV Switch
            #region
            if (buttonstatus != null && buttonstatus.Count != 0)
            {
                foreach (ButtonStatus oTmp in buttonstatus)
                {
                    if (oTmp.oUnit != null)
                    {
                        UVCMD.ControlTargets TmpCmd = oTmp.oUnit;
                        byte[] arayCMD = new byte[52];
                        arayCMD[0] = 3;  //表示类型 HAI单元
                        arayCMD[1] = oTmp.bytID;
                        arayCMD[2] = TmpCmd.Type;
                        arayCMD[3] = TmpCmd.SubnetID;
                        arayCMD[4] = TmpCmd.DeviceID;
                        arayCMD[5] = TmpCmd.Param1;
                        if (CsConst.mySends.AddBufToSndList(arayCMD, 0x023A, bytSubID, bytDevID, false, true, true, false) == false)
                        {
                            return(false);
                        }
                        HDLUDP.TimeBetwnNext(arayCMD.Length);
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(66 + oTmp.bytID / 6, null);
                    }
                }
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100, null);
            }
            #endregion
            MyRead2UpFlags[1] = true;
            return(true);
        }
Пример #22
0
        /// <summary>
        ///下载设置
        /// </summary>
        public bool DownloadSensorInfosToDevice(string DevName, int DeviceType, int intActivePage, int num1, int num2)
        {
            string strMainRemark = DevName.Split('\\')[1].Trim();

            DevName = DevName.Split('\\')[0].Trim();

            //保存basic informations网络信息
            byte bytSubID = byte.Parse(DevName.Split('-')[0].ToString());
            byte bytDevID = byte.Parse(DevName.Split('-')[1].ToString());

            byte[] ArayTmp = null;
            if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x000E, bytSubID, bytDevID, false, true, true, false) == false)
            {
                return(false);
            }
            else
            {
                byte[] arayRemark = new byte[20];
                for (int intI = 0; intI < 20; intI++)
                {
                    arayRemark[intI] = CsConst.myRevBuf[25 + intI];
                }
                Devname = bytSubID.ToString() + "-" + bytDevID.ToString() + "\\" + HDLPF.Byte2String(arayRemark);

                HDLUDP.TimeBetwnNext(1);
            }
            ///红外发射
            if (intActivePage == 0 || intActivePage == 1)
            {
                #region
                ArayTmp = new byte[2];
                IRCodes = new List <UVCMD.IRCode>();
                //读取红外有效性
                for (int i = num1; i <= num2; i++)
                {
                    UVCMD.IRCode temp = new UVCMD.IRCode();
                    temp.IRLength  = 0;
                    temp.IRLoation = 0;
                    temp.KeyID     = i;
                    temp.Codes     = "";
                    temp.Remark1   = "";
                    temp.Enable    = 0;
                    IRCodes.Add(temp);
                }
                ArayTmp = new byte[0];
                int  intTmp        = 0;
                byte ValidCount    = 0;
                byte FirstKey      = 0;
                byte LastSendCount = 0;
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x168A, bytSubID, bytDevID, false, true, true, false) == true)
                {
                    ValidCount = CsConst.myRevBuf[26];
                    FirstKey   = CsConst.myRevBuf[27];

                    HDLUDP.TimeBetwnNext(1);
                }
                else
                {
                    return(false);
                }
                if (ValidCount > 11)
                {
                    intTmp = ValidCount / 11;
                    if (ValidCount % 11 != 0)
                    {
                        intTmp        = intTmp + 1;
                        LastSendCount = Convert.ToByte(ValidCount % 11);
                    }
                }
                else if (ValidCount != 0 && ValidCount <= 11)
                {
                    intTmp = 1;
                }
                List <byte> listTmp = new List <byte>();
                for (int i = 0; i < intTmp; i++)
                {
                    ArayTmp    = new byte[2];
                    ArayTmp[0] = FirstKey;
                    ArayTmp[1] = 11;
                    if (i == intTmp - 1 && LastSendCount != 0)
                    {
                        ArayTmp[1] = LastSendCount;
                    }
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x168C, bytSubID, bytDevID, false, true, true, false) == true)
                    {
                        FirstKey = CsConst.myRevBuf[40];
                        for (int j = 0; j < ArayTmp[1]; j++)
                        {
                            if (!listTmp.Contains(CsConst.myRevBuf[29 + j]))
                            {
                                listTmp.Add(CsConst.myRevBuf[29 + j]);
                            }
                        }

                        HDLUDP.TimeBetwnNext(1);
                    }
                    else
                    {
                        return(false);
                    }
                }
                for (int i = 0; i < IRCodes.Count; i++)
                {
                    for (int j = 0; j < listTmp.Count; j++)
                    {
                        if ((IRCodes[i].KeyID - 1) == Convert.ToInt32(listTmp[j]))
                        {
                            IRCodes[i].Enable = 1;
                            break;
                        }
                    }
                }
                for (int i = 0; i < IRCodes.Count; i++)
                {
                    if (IRCodes[i].Enable == 1)
                    {
                        ArayTmp    = new byte[2];
                        ArayTmp[0] = Convert.ToByte(IRCodes[i].KeyID - 1);
                        ArayTmp[1] = 0;
                        byte[] arayRemark = new byte[20];
                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x168E, bytSubID, bytDevID, false, true, true, false) == true)
                        {
                            Array.Copy(CsConst.myRevBuf, 29, arayRemark, 0, 10);

                            HDLUDP.TimeBetwnNext(1);
                        }
                        else
                        {
                            return(false);
                        }
                        ArayTmp    = new byte[2];
                        ArayTmp[0] = Convert.ToByte(IRCodes[i].KeyID - 1);
                        ArayTmp[1] = 1;
                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x168E, bytSubID, bytDevID, false, true, true, false) == true)
                        {
                            Array.Copy(CsConst.myRevBuf, 29, arayRemark, 10, 10);

                            HDLUDP.TimeBetwnNext(1);
                        }
                        else
                        {
                            return(false);
                        }
                        IRCodes[i].Remark1 = HDLPF.Byte2String(arayRemark);
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(10 * (i + 1) / IRCodes.Count);
                    }
                }
                #endregion
                MyRead2UpFlags[0] = true;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(10);
            }
            // 红外接收
            if (intActivePage == 0 || intActivePage == 2)
            {
                #region
                IrReceiver = new List <IRReceive>();
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1672, bytSubID, bytDevID, false, true, true, false) == true)
                {
                    ArayTmpMode = new byte[40];
                    Array.Copy(CsConst.myRevBuf, 26, ArayTmpMode, 0, 40);

                    HDLUDP.TimeBetwnNext(1);
                    for (int intI = num1; intI <= num2; intI++)
                    {
                        IRReceive oTmp = new IRReceive();
                        oTmp.BtnNum     = intI;
                        oTmp.IRBtnModel = ArayTmpMode[intI - 1];
                        oTmp.TargetInfo = new List <UVCMD.ControlTargets>();
                        //读取按键备注
                        #region
                        ArayTmp = new byte[1];

                        ArayTmp[0] = Convert.ToByte(intI);
                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x167A, bytSubID, bytDevID, false, true, true, false) == true)
                        {
                            byte[] arayRemark = new byte[20];
                            for (int intJ = 0; intJ < 20; intJ++)
                            {
                                arayRemark[intJ] = CsConst.myRevBuf[27 + intJ];
                            }
                            oTmp.IRBtnRemark = HDLPF.Byte2String(arayRemark);

                            HDLUDP.TimeBetwnNext(1);
                        }
                        else
                        {
                            return(false);
                        }
                        #endregion
                        //按键目标
                        #region
                        oTmp.TargetInfo = new List <UVCMD.ControlTargets>();
                        if (CsConst.isRestore)
                        {
                            byte bytTotalCMD = 1;
                            switch (oTmp.IRBtnModel)
                            {
                            case 0: bytTotalCMD = 1; break;

                            case 1:
                            case 2:
                            case 3:
                            case 6:
                            case 10: bytTotalCMD = 1; break;

                            case 4:
                            case 5:
                            case 7:
                            case 13: bytTotalCMD = 99; break;

                            case 11: bytTotalCMD = 98; break;

                            case 16:
                            case 17: bytTotalCMD = 49; break;
                            }
                            for (byte bytJ = 0; bytJ < bytTotalCMD; bytJ++)
                            {
                                ArayTmp    = new byte[2];
                                ArayTmp[0] = (byte)(intI);
                                ArayTmp[1] = (byte)(bytJ + 1);
                                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1676, bytSubID, bytDevID, false, true, true, false) == true)
                                {
                                    UVCMD.ControlTargets oCMD = new UVCMD.ControlTargets();
                                    oCMD.ID       = CsConst.myRevBuf[27];
                                    oCMD.Type     = CsConst.myRevBuf[28]; //转换为正确的类型
                                    oCMD.SubnetID = CsConst.myRevBuf[29];
                                    oCMD.DeviceID = CsConst.myRevBuf[30];
                                    oCMD.Param1   = CsConst.myRevBuf[31];
                                    oCMD.Param2   = CsConst.myRevBuf[32];
                                    oCMD.Param3   = CsConst.myRevBuf[33];
                                    oCMD.Param4   = CsConst.myRevBuf[34];

                                    oTmp.TargetInfo.Add(oCMD);

                                    HDLUDP.TimeBetwnNext(1);
                                }
                                else
                                {
                                    return(false);
                                }
                            }
                        }
                        #endregion
                        IrReceiver.Add(oTmp);
                        if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                        {
                            CsConst.calculationWorker.ReportProgress(2 + intI / 2);
                        }
                    }
                }
                else
                {
                    return(false);
                }
                #endregion
                MyRead2UpFlags[1] = true;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(20);
            }
            //传感器设置
            if (intActivePage == 0 || intActivePage == 3 || intActivePage == 4)
            {
                #region
                if (intActivePage == 0 || intActivePage == 3)
                {
                    // read led灯使能位
                    #region
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xDB3E, bytSubID, bytDevID, false, true, true, false) == true)
                    {
                        Array.Copy(CsConst.myRevBuf, 27, ONLEDs, 0, CsConst.myRevBuf[26]);

                        HDLUDP.TimeBetwnNext(1);
                    }
                    else
                    {
                        return(false);
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(21);
                    }
                    #endregion
                }
                if (intActivePage == 0 || intActivePage == 3 || intActivePage == 4)
                {
                    //读取使能位
                    #region
                    ArayTmp = null;
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x165E, bytSubID, bytDevID, false, true, true, false) == true)
                    {
                        Array.Copy(CsConst.myRevBuf, 26, EnableSensors, 0, 7);

                        HDLUDP.TimeBetwnNext(1);
                    }
                    else
                    {
                        return(false);
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(23);
                    }
                    #endregion
                }
                if (intActivePage == 0 || intActivePage == 3)
                {
                    //读取温度补偿值
                    #region
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1641, bytSubID, bytDevID, false, true, true, false) == true)
                    {
                        Array.Copy(CsConst.myRevBuf, 26, ParamSensors, 0, 1);

                        HDLUDP.TimeBetwnNext(1);
                    }
                    else
                    {
                        return(false);
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(24);
                    }
                    #endregion
                    //读取灵敏度
                    #region
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x166E, bytSubID, bytDevID, false, true, true, false) == true)
                    {
                        Array.Copy(CsConst.myRevBuf, 26, ParamSensors, 1, 1);

                        HDLUDP.TimeBetwnNext(1);
                    }
                    else
                    {
                        return(false);
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(25);
                    }
                    #endregion
                    //恒照度读取
                    if (DeviceType == 329)
                    {
                        #region
                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x16A9, bytSubID, bytDevID, false, true, true, false) == true)
                        {
                            Array.Copy(CsConst.myRevBuf, 26, EnableBroads, 0, 9);

                            HDLUDP.TimeBetwnNext(1);
                        }
                        else
                        {
                            return(false);
                        }
                        if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                        {
                            CsConst.calculationWorker.ReportProgress(26);
                        }
                        #endregion
                    }
                }
                #endregion
                MyRead2UpFlags[2] = true;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(30);
            }
            //逻辑块功能设置
            if (intActivePage == 0 || intActivePage == 4)
            {
                #region
                // 读取24个逻辑的使能位
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x165A, bytSubID, bytDevID, false, true, true, false) == true)
                {
                    logic = new List <SensorLogic>();
                    byte[] ArayTmpMode = new byte[24];
                    Array.Copy(CsConst.myRevBuf, 26, ArayTmpMode, 0, Eightin1DeviceTypeList.TotalLogic);

                    HDLUDP.TimeBetwnNext(1);
                    for (int intI = 1; intI <= Eightin1DeviceTypeList.TotalLogic; intI++)
                    {
                        SensorLogic oTmp = new SensorLogic();
                        oTmp.ID            = (byte)intI;
                        oTmp.EnableSensors = new byte[15];
                        oTmp.Paramters     = new byte[20];
                        oTmp.Enabled       = ArayTmpMode[intI - 1];
                        //无效则不读取
                        if (oTmp.Enabled != 1)
                        {
                            logic.Add(oTmp);
                            continue;
                        }
                        //读取备注
                        #region
                        ArayTmp    = new byte[1];
                        ArayTmp[0] = Convert.ToByte(intI);
                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1648, bytSubID, bytDevID, false, true, true, false) == true)
                        {
                            byte[] arayRemark = new byte[20];
                            for (int intJ = 0; intJ < 20; intJ++)
                            {
                                arayRemark[intJ] = CsConst.myRevBuf[27 + intJ];
                            }
                            oTmp.Remarklogic = HDLPF.Byte2String(arayRemark);

                            HDLUDP.TimeBetwnNext(1);
                        }
                        else
                        {
                            return(false);
                        }
                        #endregion
                        //读取设置
                        #region
                        if (CsConst.isRestore)
                        {
                            if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1650, bytSubID, bytDevID, false, true, true, false) == true)
                            {
                                oTmp.bytRelation   = CsConst.myRevBuf[27];
                                oTmp.EnableSensors = new byte[15];
                                int intTmp = CsConst.myRevBuf[28];
                                if (intTmp == 255)
                                {
                                    intTmp = 0;
                                }
                                //oTmp.EnableSensors
                                for (byte bytI = 0; bytI <= 6; bytI++)
                                {
                                    oTmp.EnableSensors[bytI] = Convert.ToByte((intTmp & (1 << bytI)) == (1 << bytI));
                                }
                                oTmp.DelayTimeT = CsConst.myRevBuf[29] * 256 + CsConst.myRevBuf[30];
                                Array.Copy(CsConst.myRevBuf, 31, oTmp.Paramters, 0, 7);
                                oTmp.UV1           = new UniversalSwitchSet();
                                oTmp.UV1.id        = Convert.ToByte(HDLPF.IsNumStringMode(CsConst.myRevBuf[38].ToString(), 201, 248));
                                oTmp.UV1.condition = CsConst.myRevBuf[39];

                                oTmp.UV2    = new UniversalSwitchSet();
                                oTmp.UV2.id = Convert.ToByte(HDLPF.IsNumStringMode(CsConst.myRevBuf[40].ToString(), 201, 248));
                                if (oTmp.UV2.id == oTmp.UV1.id)
                                {
                                    oTmp.UV2.id = Convert.ToByte(oTmp.UV1.id + 1);
                                }
                                oTmp.UV2.condition = CsConst.myRevBuf[41];

                                oTmp.DelayTimeF = CsConst.myRevBuf[42] * 256 + CsConst.myRevBuf[43];
                                if (oTmp.DelayTimeT == 65535)
                                {
                                    oTmp.DelayTimeT = 0;
                                }
                                if (oTmp.DelayTimeF == 65535)
                                {
                                    oTmp.DelayTimeF = 0;
                                }

                                HDLUDP.TimeBetwnNext(1);

                                ArayTmp    = new byte[1];
                                ArayTmp[0] = oTmp.UV1.id;
                                if ((CsConst.mySends.AddBufToSndList(ArayTmp, 0x164C, bytSubID, bytDevID, false, false, true, false) == true))
                                {
                                    byte[] arayRemark = new byte[20];
                                    Array.Copy(CsConst.myRevBuf, 27, arayRemark, 0, arayRemark.Length);
                                    oTmp.UV1.remark    = HDLPF.Byte2String(arayRemark);
                                    oTmp.UV1.isAutoOff = (CsConst.myRevBuf[47] == 1);
                                    if (CsConst.myRevBuf[48] * 256 + CsConst.myRevBuf[49] > 3600)
                                    {
                                        oTmp.UV1.autoOffDelay = 1;
                                    }
                                    else
                                    {
                                        oTmp.UV1.autoOffDelay = CsConst.myRevBuf[48] * 256 + CsConst.myRevBuf[49];
                                    }

                                    HDLUDP.TimeBetwnNext(1);
                                }

                                ArayTmp[0] = oTmp.UV2.id;
                                if ((CsConst.mySends.AddBufToSndList(ArayTmp, 0x164C, bytSubID, bytDevID, false, false, true, false) == true))
                                {
                                    byte[] arayRemark = new byte[20];
                                    Array.Copy(CsConst.myRevBuf, 27, arayRemark, 0, arayRemark.Length);
                                    oTmp.UV2.remark    = HDLPF.Byte2String(arayRemark);
                                    oTmp.UV2.isAutoOff = (CsConst.myRevBuf[47] == 1);
                                    if (CsConst.myRevBuf[48] * 256 + CsConst.myRevBuf[49] > 3600)
                                    {
                                        oTmp.UV2.autoOffDelay = 1;
                                    }
                                    else
                                    {
                                        oTmp.UV2.autoOffDelay = CsConst.myRevBuf[48] * 256 + CsConst.myRevBuf[49];
                                    }

                                    HDLUDP.TimeBetwnNext(1);
                                }
                            }
                            else
                            {
                                return(false);
                            }
                        }
                        #endregion

                        //成立的触发目标
                        oTmp.DownloadLogicTrueCommandsFromDevice(bytSubID, bytDevID, DeviceType, 0, 0);
                        //不成立的触发目标
                        oTmp.DownloadLogicFalseCommandsFromDevice(bytSubID, bytDevID, DeviceType, 0, 0);
                        logic.Add(oTmp);
                        if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                        {
                            CsConst.calculationWorker.ReportProgress(24 + intI * 2);
                        }
                    }
                }
                else
                {
                    return(false);
                }
                #endregion
                MyRead2UpFlags[3] = true;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(40);
            }
            if (intActivePage == 0 || intActivePage == 5)
            {
                //安防设置
                #region
                fireset = new List <UVCMD.SecurityInfo>();
                ArayTmp = new byte[1];
                for (byte intI = 1; intI <= 3; intI++)
                {
                    ArayTmp[0] = intI;
                    //读取备注
                    #region
                    UVCMD.SecurityInfo oTmp = new UVCMD.SecurityInfo();
                    oTmp.bytSeuID = intI;

                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1666, bytSubID, bytDevID, false, true, true, false) == true)
                    {
                        byte[] arayRemark = new byte[20];
                        for (int intJ = 0; intJ < 20; intJ++)
                        {
                            arayRemark[intJ] = CsConst.myRevBuf[27 + intJ];
                        }
                        oTmp.strRemark = HDLPF.Byte2String(arayRemark);

                        HDLUDP.TimeBetwnNext(1);
                    }
                    else
                    {
                        return(false);
                    }

                    #endregion
                    //读取设置
                    #region
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x166A, bytSubID, bytDevID, false, true, true, false) == true)
                    {
                        oTmp.bytTerms = CsConst.myRevBuf[27];
                        oTmp.bytSubID = CsConst.myRevBuf[28];
                        oTmp.bytDevID = CsConst.myRevBuf[29];
                        oTmp.bytArea  = CsConst.myRevBuf[30];

                        HDLUDP.TimeBetwnNext(1);
                    }
                    else
                    {
                        return(false);
                    }
                    fireset.Add(oTmp);
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(40 + (10 * intI / 4));
                    }
                    #endregion
                }
                #endregion
                MyRead2UpFlags[4] = true;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(50);
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100);
            }
            return(true);
        }
Пример #23
0
        ///<summary>
        ///读取数据库面板设置,将所有数据读至缓存
        ///</summary>
        public void ReadHaiInfoFromDB(int DIndex)
        {
            //read HAI Unit inofomation
            units = new List <Unit>();
            #region
            string          str       = string.Format("select * from dbKeyTargets where DIndex ={0} and KeyIndex = {1} order by objID", DIndex, 1);
            OleDbDataReader drKeyCmds = DataModule.SearchAResultSQLDB(str);
            if (drKeyCmds != null)
            {
                while (drKeyCmds.Read())
                {
                    Unit oTmp = new Unit();
                    oTmp.bytID = drKeyCmds.GetByte(2);
                    UVCMD.ControlTargets TmpCmd = new UVCMD.ControlTargets();
                    oTmp.Command    = "^A" + String.Format("{0:D3} ", drKeyCmds.GetByte(2));
                    TmpCmd.ID       = 1;
                    TmpCmd.Type     = drKeyCmds.GetByte(3);
                    TmpCmd.SubnetID = drKeyCmds.GetByte(4);
                    TmpCmd.DeviceID = drKeyCmds.GetByte(5);
                    TmpCmd.Param1   = drKeyCmds.GetByte(6);
                    TmpCmd.Param2   = drKeyCmds.GetByte(7);
                    TmpCmd.Param3   = drKeyCmds.GetByte(8);
                    TmpCmd.Param4   = drKeyCmds.GetByte(9);
                    oTmp.oUnit      = TmpCmd;
                    units.Add(oTmp);
                }
            }
            #endregion

            scen = new List <Scene>();
            //read HAI Scene infomation
            #region
            str       = string.Format("select * from dbKeyTargets where DIndex ={0} and KeyIndex = {1} order by objID", DIndex, 2);
            drKeyCmds = DataModule.SearchAResultSQLDB(str);
            if (drKeyCmds != null)
            {
                while (drKeyCmds.Read())
                {
                    Scene oTmp = new Scene();
                    oTmp.bytID = drKeyCmds.GetByte(2);
                    UVCMD.ControlTargets TmpCmd = new UVCMD.ControlTargets();
                    oTmp.Command    = "^C" + String.Format("{0:D3} ", drKeyCmds.GetByte(2));
                    TmpCmd.ID       = 1;
                    TmpCmd.Type     = drKeyCmds.GetByte(3);
                    TmpCmd.SubnetID = drKeyCmds.GetByte(4);
                    TmpCmd.DeviceID = drKeyCmds.GetByte(5);
                    TmpCmd.Param1   = drKeyCmds.GetByte(6);
                    TmpCmd.Param2   = drKeyCmds.GetByte(7);
                    TmpCmd.Param3   = drKeyCmds.GetByte(8);
                    TmpCmd.Param4   = drKeyCmds.GetByte(9);
                    oTmp.oUnit      = TmpCmd;
                    scen.Add(oTmp);
                }
            }
            #endregion

            buttonstatus = new List <ButtonStatus>();
            ///read HAI buttonstatus infomation
            #region
            str       = string.Format("select * from dbKeyTargets where DIndex ={0} and KeyIndex = {1} order by objID", DIndex, 3);
            drKeyCmds = DataModule.SearchAResultSQLDB(str);
            if (drKeyCmds != null)
            {
                while (drKeyCmds.Read())
                {
                    ButtonStatus oTmp = new ButtonStatus();
                    oTmp.bytID = drKeyCmds.GetByte(2);
                    UVCMD.ControlTargets TmpCmd = new UVCMD.ControlTargets();
                    oTmp.Command    = String.Format("{0:D3} ", drKeyCmds.GetByte(2)) + " Button Tab/Press<-->OFF/ON";
                    TmpCmd.ID       = 1;
                    TmpCmd.Type     = drKeyCmds.GetByte(3);
                    TmpCmd.SubnetID = drKeyCmds.GetByte(4);
                    TmpCmd.DeviceID = drKeyCmds.GetByte(5);
                    TmpCmd.Param1   = drKeyCmds.GetByte(6);
                    TmpCmd.Param2   = drKeyCmds.GetByte(7);
                    TmpCmd.Param3   = drKeyCmds.GetByte(8);
                    TmpCmd.Param4   = drKeyCmds.GetByte(9);

                    oTmp.oUnit = TmpCmd;
                    buttonstatus.Add(oTmp);
                }
            }
            #endregion
        }
Пример #24
0
        //<summary>
        //保存数据
        //</summary>
        public void SaveDataToDB()
        {
            try
            {
                string strsql = string.Format("delete * from dbClassInfomation where DIndex={0}", DIndex);
                DataModule.ExecuteSQLDatabase(strsql);

                strsql = string.Format("delete * from dbKeyTargets where DIndex={0}", DIndex);
                DataModule.ExecuteSQLDatabase(strsql);

                #region
                string strRemarkBasic = "";
                string strParamBasic  = Backlight.ToString() + "-" + Ledlight.ToString();

                if (arayButtonColor == null)
                {
                    arayButtonColor = new byte[0];
                }
                if (arayButtonBalance == null)
                {
                    arayButtonBalance = new byte[0];
                }
                if (arayButtonSensitiVity == null)
                {
                    arayButtonSensitiVity = new byte[0];
                }
                if (arayHotel == null)
                {
                    arayHotel = new byte[13];
                }
                strsql = @"Insert into dbClassInfomation(DIndex,ClassID,ObjectID,SenNum,Remark,strParam1,byteAry1,byteAry2,byteAry3,byteAry4)"
                         + " values(@DIndex,@ClassID,@ObjectID,@SenNum,@Remark,@strParam1,@byteAry1,@byteAry2,@byteAry3,@byteAry4)";
                //创建一个OleDbConnection对象
                OleDbConnection connBasic;
                connBasic = new OleDbConnection(DataModule.ConString + CsConst.mstrDefaultPath);
                //OleDbConnection conn = new OleDbConnection(DataModule.ConString + CsConst.mstrCurPath);
                connBasic.Open();
                OleDbCommand cmdBaic = new OleDbCommand(strsql, connBasic);
                ((OleDbParameter)cmdBaic.Parameters.Add("@DIndex", OleDbType.Integer)).Value    = DIndex;
                ((OleDbParameter)cmdBaic.Parameters.Add("@ClassID", OleDbType.Integer)).Value   = 0;
                ((OleDbParameter)cmdBaic.Parameters.Add("@ObjectID", OleDbType.Integer)).Value  = 0;
                ((OleDbParameter)cmdBaic.Parameters.Add("@SenNum", OleDbType.Integer)).Value    = 0;
                ((OleDbParameter)cmdBaic.Parameters.Add("@Remark", OleDbType.VarChar)).Value    = strRemarkBasic;
                ((OleDbParameter)cmdBaic.Parameters.Add("@strParam1", OleDbType.VarChar)).Value = strParamBasic;
                ((OleDbParameter)cmdBaic.Parameters.Add("@byteAry1", OleDbType.Binary)).Value   = arayButtonColor;
                ((OleDbParameter)cmdBaic.Parameters.Add("@byteAry2", OleDbType.Binary)).Value   = arayButtonBalance;
                ((OleDbParameter)cmdBaic.Parameters.Add("@byteAry3", OleDbType.Binary)).Value   = arayButtonSensitiVity;
                ((OleDbParameter)cmdBaic.Parameters.Add("@byteAry4", OleDbType.Binary)).Value   = arayHotel;
                try
                {
                    cmdBaic.ExecuteNonQuery();
                }
                catch
                {
                    connBasic.Close();
                }
                connBasic.Close();
                #endregion

                #region
                if (myKeySetting != null)
                {
                    for (int i = 0; i < myKeySetting.Count; i++)
                    {
                        string strRemark = myKeySetting[i].Remark;
                        string strParam  = myKeySetting[i].ID.ToString() + "-" + myKeySetting[i].Mode.ToString() + "-" +
                                           myKeySetting[i].Delay.ToString();
                        strsql = string.Format("Insert into dbClassInfomation(DIndex,ClassID,ObjectID,SenNum,Remark,strParam1) values ({0},{1},{2},{3},'{4}','{5}')",
                                               DIndex, 1, 0, i, strRemark, strParam);
                        DataModule.ExecuteSQLDatabase(strsql);
                        if (myKeySetting[i].KeyTargets != null)
                        {
                            for (int intK = 0; intK < myKeySetting[i].KeyTargets.Count; intK++)
                            {
                                UVCMD.ControlTargets TmpCmds = myKeySetting[i].KeyTargets[intK];
                                ///// insert into all commands to database
                                strsql = string.Format("Insert into dbKeyTargets(DIndex,KeyIndex,objID,KeyFunType,SubNetID,DeviceID,FirstParameter,"
                                                       + "SecondParameter,RunTimeMinute,RunTimeSecond,Ms04State) values ({0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10})",
                                                       DIndex, myKeySetting[i].ID, TmpCmds.ID, TmpCmds.Type, TmpCmds.SubnetID, TmpCmds.DeviceID, TmpCmds.Param1,
                                                       TmpCmds.Param2, TmpCmds.Param3, TmpCmds.Param4, 0);
                                DataModule.ExecuteSQLDatabase(strsql);
                            }
                        }
                    }
                }
                #endregion
            }
            catch
            {
            }
        }
Пример #25
0
        public bool DownloadNewIRInfoFrmDevice(string DevName, int intDeviceType, int intActivePage)
        {
            string strMainRemark = DevName.Split('\\')[1].Trim();

            DevName = DevName.Split('\\')[0].Trim();

            byte bytSubID = byte.Parse(DevName.Split('-')[0].ToString());
            byte bytDevID = byte.Parse(DevName.Split('-')[1].ToString());

            byte[] ArayTmp = new byte[0];
            String sRemark = HDLSysPF.ReadDeviceMainRemark(bytSubID, bytDevID);

            strName = bytSubID.ToString() + "-" + bytDevID.ToString() + "\\" + sRemark;

            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(1);
            }

            if (intActivePage == 0 || intActivePage == 1)
            {
                arayBrocast = new byte[5];
                arayTime    = new byte[7];
                ArayTmp     = new byte[2];
                IRCodes     = new List <NewIRCode>();
                //读取28红外备注
                int MaxIRDevice = 28;
                if (intDeviceType == 6100)
                {
                    MaxIRDevice = 10;
                }
                if (intDeviceType == 1301 || intDeviceType == 1300 || intDeviceType == 6100)
                {
                    ArayTmp = new byte[3];
                }
                for (int i = 0; i < MaxIRDevice; i++)
                {
                    ArayTmp[0] = Convert.ToByte(i + 1);
                    ArayTmp[1] = 0;
                    if (intDeviceType == 1301 || intDeviceType == 1300)
                    {
                        if (i >= 4)
                        {
                            ArayTmp[0] = Convert.ToByte(ArayTmp[0] - 4);
                            ArayTmp[2] = 0;
                        }
                        else
                        {
                            ArayTmp[2] = 1;
                        }
                    }
                    else if (intDeviceType == 6100)
                    {
                        if (i >= 3)
                        {
                            ArayTmp[0] = Convert.ToByte(ArayTmp[0] - 3);
                            ArayTmp[2] = 0;
                        }
                        else
                        {
                            ArayTmp[2] = 1;
                        }
                    }
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x137C, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(intDeviceType)) == true)
                    {
                        NewIRCode temp = new NewIRCode();
                        temp.KeyID    = ArayTmp[0];
                        temp.DevID    = CsConst.myRevBuf[27];
                        temp.IRIndex  = CsConst.myRevBuf[28] * 256 + CsConst.myRevBuf[29];
                        temp.IRLength = CsConst.myRevBuf[30];
                        temp.KeyCodes = new List <UVCMD.IRCode>();
                        byte[] arayRemark = new byte[20];
                        for (int intI = 0; intI < 20; intI++)
                        {
                            arayRemark[intI] = CsConst.myRevBuf[32 + intI];
                        }
                        ;
                        temp.Remark = HDLPF.Byte2String(arayRemark);
                        temp.Codes  = "";
                        if (temp.DevID >= 6)
                        {
                            temp.Remark = "";
                        }
                        if (temp.IRLength != 0 && temp.IRLength != 255)
                        {
                            ArayTmp[1] = 1;
                            ArayTmp[2] = (Byte)temp.IRLength;
                            if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x137C, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(intDeviceType)) == true)
                            {
                                for (int intI = 0; intI < temp.IRLength; intI++)
                                {
                                    temp.Codes = temp.Codes + CsConst.myRevBuf[27 + intI].ToString("X2") + " ";
                                }
                            }
                        }
                        IRCodes.Add(temp);
                    }
                    else
                    {
                        return(false);
                    }

                    HDLUDP.TimeBetwnNext(1);
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(1 + i);
                    }
                }

                if (intDeviceType != 1301)
                {
                    ArayTmp = new byte[0];
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xE0F8, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(intDeviceType)) == true)
                    {
                        Array.Copy(CsConst.myRevBuf, 25, arayBrocast, 0, 5);

                        HDLUDP.TimeBetwnNext(1);
                    }
                    else
                    {
                        return(false);
                    }
                }

                if (intDeviceType == 6100)
                {
                    ArayTmp = new byte[0];
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xDA00, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(intDeviceType)) == true)
                    {
                        Array.Copy(CsConst.myRevBuf, 26, arayTime, 0, 6);

                        HDLUDP.TimeBetwnNext(1);
                    }
                    else
                    {
                        return(false);
                    }
                }
                MyRead2UpFlags[0] = true;
            }

            if (intActivePage == 0 || intActivePage == 2)
            {
                if (CsConst.isRestore)
                {
                }
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(40);
            }
            if (intActivePage == 0 || intActivePage == 3)
            {
                if (CsConst.isRestore)
                {
                }
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(50);
            }
            if (intActivePage == 0 || intActivePage == 4)
            {
                if (CsConst.isRestore)
                {
                }
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(60);
            }
            if (intActivePage == 0 || intActivePage == 5)
            {
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(70);
            }
            if (intActivePage == 0 || intActivePage == 6)
            {
                #region
                if (intDeviceType == 6100)
                {
                    Clocks = new List <Clock>();
                    Scenes = new List <Scene>();



                    for (int i = 1; i <= 16; i++)
                    {
                        ArayTmp    = new byte[1];
                        ArayTmp[0] = Convert.ToByte(i);
                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xE46E, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(intDeviceType)) == true)
                        {
                            Clock temp = new Clock();
                            temp.ID     = Convert.ToByte(i);
                            temp.Enable = CsConst.myRevBuf[26];
                            temp.Type   = CsConst.myRevBuf[27];
                            if (temp.Type > 1)
                            {
                                temp.Type = 0;
                            }
                            temp.arayParam = new byte[5];
                            Array.Copy(CsConst.myRevBuf, 28, temp.arayParam, 0, 5);
                            temp.SceneID = CsConst.myRevBuf[33];
                            if (temp.SceneID > 16 || temp.SceneID < 1)
                            {
                                temp.SceneID = 1;
                            }
                            Clocks.Add(temp);
                        }
                        else
                        {
                            return(false);
                        }
                    }

                    if (CsConst.isRestore)
                    {
                        for (int i = 1; i <= 8; i++)
                        {
                            Scene temp = new Scene();
                            temp.ID      = Convert.ToByte(i);
                            temp.Targets = new List <UVCMD.ControlTargets>();

                            ArayTmp    = new byte[2];
                            ArayTmp[0] = Convert.ToByte(i);
                            for (int j = 1; j <= 32; j++)
                            {
                                ArayTmp[1] = Convert.ToByte(j);
                                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1402, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(intDeviceType)) == true)
                                {
                                    UVCMD.ControlTargets tmp = new UVCMD.ControlTargets();
                                    tmp.ID       = Convert.ToByte(CsConst.myRevBuf[26]);
                                    tmp.Type     = CsConst.myRevBuf[27]; //转换为正确的类型
                                    tmp.SubnetID = CsConst.myRevBuf[28];
                                    tmp.DeviceID = CsConst.myRevBuf[29];
                                    tmp.Param1   = CsConst.myRevBuf[30];
                                    tmp.Param2   = CsConst.myRevBuf[31];
                                    tmp.Param3   = CsConst.myRevBuf[32];
                                    tmp.Param4   = CsConst.myRevBuf[33];
                                    temp.Targets.Add(tmp);
                                    Scenes.Add(temp);
                                }
                                else
                                {
                                    return(false);
                                }
                            }
                        }
                    }
                }
                #endregion
                MyRead2UpFlags[5] = true;
            }

            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100);
            }
            return(true);
        }
Пример #26
0
        /// <summary>
        /// 下载所有数据
        /// </summary>
        /// <param name="DevName"></param>
        /// <returns></returns>
        public bool DownloadFHInforsFrmDevice(string DevName, int wdDeviceType, int intActivePage, byte num1, byte num2)
        {
            string strMainRemark = DevName.Split('\\')[1].Trim();

            DevName = DevName.Split('\\')[0].Trim();

            byte bytSubID = byte.Parse(DevName.Split('-')[0].ToString());
            byte bytDevID = byte.Parse(DevName.Split('-')[1].ToString());

            byte[] ArayTmp = new byte[0];
            if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x000E, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
            {
                byte[] arayRemark = new byte[20];
                for (int intI = 0; intI < 20; intI++)
                {
                    arayRemark[intI] = CsConst.myRevBuf[25 + intI];
                }
                DevName = bytSubID.ToString() + "-" + bytDevID.ToString() + "\\" + HDLPF.Byte2String(arayRemark);
            }
            else
            {
                return(false);
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(1);
            }

            if (intActivePage == 0 || intActivePage == 1)
            {
                #region
                arayDateTime = new byte[10];
                araySummer   = new byte[30];
                arayOutdoor  = new byte[10];
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xD99E, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                {
                    Array.Copy(CsConst.myRevBuf, 25, arayDateTime, 0, 7);
                    HDLUDP.TimeBetwnNext(1);
                }
                else
                {
                    return(false);
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(2);
                }
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1C12, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                {
                    Array.Copy(CsConst.myRevBuf, 25, arayDateTime, 7, 2);
                    HDLUDP.TimeBetwnNext(1);
                }
                else
                {
                    return(false);
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(3);
                }
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1D1A, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                {
                    Array.Copy(CsConst.myRevBuf, 26, araySummer, 0, 23);
                    HDLUDP.TimeBetwnNext(1);
                }
                else
                {
                    return(false);
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(4);
                }
                if (wdDeviceType == 211 || wdDeviceType == 208 || wdDeviceType == 209)
                {
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1D06, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                    {
                        Array.Copy(CsConst.myRevBuf, 25, arayOutdoor, 0, 5);
                        HDLUDP.TimeBetwnNext(1);
                    }
                    else
                    {
                        return(false);
                    }
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(5);
                }
                #endregion
                MyRead2UpFlags[0] = true;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(10);
            }
            //读取6回路状态
            if (intActivePage == 0 || intActivePage == 2)
            {
                #region
                myHeating = new List <FHeating>();
                for (byte i = 1; i <= 6; i++)
                {
                    FHeating temp = new FHeating();
                    temp.ID = i;
                    temp.arayWorkControl   = new byte[20];
                    temp.arayFlush         = new byte[20];
                    temp.araySensorSetting = new byte[30];
                    temp.arayWorkSetting   = new byte[20];
                    if (CsConst.isRestore || (i >= num1 && i <= num2))
                    {
                        ArayTmp    = new byte[1];
                        ArayTmp[0] = i;
                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1D02, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                        {
                            byte[] arayRemark = new byte[20];
                            for (int intI = 0; intI < 20; intI++)
                            {
                                arayRemark[intI] = CsConst.myRevBuf[26 + intI];
                            }
                            temp.strRemark = HDLPF.Byte22String(arayRemark, true);
                            HDLUDP.TimeBetwnNext(1);
                        }
                        else
                        {
                            return(false);
                        }
                        if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                        {
                            CsConst.calculationWorker.ReportProgress(10 + (i - 1) * 5 + 1);
                        }

                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1C5E, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                        {
                            Array.Copy(CsConst.myRevBuf, 26, temp.arayWorkControl, 0, 13);
                            HDLUDP.TimeBetwnNext(1);
                        }
                        else
                        {
                            return(false);
                        }
                        if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                        {
                            CsConst.calculationWorker.ReportProgress(10 + (i - 1) * 5 + 2);
                        }

                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1C5A, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                        {
                            Array.Copy(CsConst.myRevBuf, 26, temp.arayWorkSetting, 0, 10);
                            HDLUDP.TimeBetwnNext(1);
                        }
                        else
                        {
                            return(false);
                        }
                        if (wdDeviceType == 211 || wdDeviceType == 208 || wdDeviceType == 209)
                        {
                            if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1D0A, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                            {
                                Array.Copy(CsConst.myRevBuf, 26, temp.arayWorkSetting, 10, 1);
                                HDLUDP.TimeBetwnNext(1);
                            }
                            else
                            {
                                return(false);
                            }
                        }
                        if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                        {
                            CsConst.calculationWorker.ReportProgress(10 + (i - 1) * 5 + 3);
                        }


                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1C56, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                        {
                            Array.Copy(CsConst.myRevBuf, 26, temp.araySensorSetting, 0, 20);
                            HDLUDP.TimeBetwnNext(1);
                        }
                        else
                        {
                            return(false);
                        }

                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1C62, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                        {
                            Array.Copy(CsConst.myRevBuf, 26, temp.arayFlush, 0, 11);
                            HDLUDP.TimeBetwnNext(1);
                        }
                        else
                        {
                            return(false);
                        }
                        if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                        {
                            CsConst.calculationWorker.ReportProgress(10 + (i - 1) * 5 + 4);
                        }
                        myHeating.Add(temp);
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(10 + i * 5);
                    }
                }
                #endregion
                MyRead2UpFlags[1] = true;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(40);
            }
            //读取主从机功能
            if (intActivePage == 0 || intActivePage == 3)
            {
                #region
                araySynChannel = new byte[10];
                arayHost       = new byte[20];
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1C6E, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                {
                    Array.Copy(CsConst.myRevBuf, 25, araySynChannel, 0, 6);
                    HDLUDP.TimeBetwnNext(1);
                }
                else
                {
                    return(false);
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(41);
                }
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1CE6, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                {
                    Array.Copy(CsConst.myRevBuf, 25, arayHost, 0, 15);
                    HDLUDP.TimeBetwnNext(1);
                }
                else
                {
                    return(false);
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(42);
                }
                #endregion
                MyRead2UpFlags[2] = true;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(50);
            }
            // 读取额外目标设置
            if (intActivePage == 0 || intActivePage == 4 || intActivePage == 6)
            {
                #region
                byte Chn    = Convert.ToByte(num1 >> 4);
                byte Statue = Convert.ToByte(num2 >> 4);
                myTargets1 = new List <FHTargets>();
                for (byte i = 1; i <= 6; i++)
                {
                    if (CsConst.isRestore || i == Chn)
                    {
                        for (byte j = 0; j < 4; j++)
                        {
                            if (CsConst.isRestore || j == Statue)
                            {
                                FHTargets temp = new FHTargets();
                                temp.ID          = i;
                                temp.StatusIndex = j;
                                temp.Targets     = new List <UVCMD.ControlTargets>();
                                ArayTmp          = new byte[3];
                                ArayTmp[0]       = i;
                                ArayTmp[1]       = j;
                                for (byte k = 0; k < 5; k++)
                                {
                                    ArayTmp[2] = k;
                                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1CE2, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                                    {
                                        UVCMD.ControlTargets oCMD = new UVCMD.ControlTargets();
                                        oCMD.ID       = Convert.ToByte(CsConst.myRevBuf[27]);
                                        oCMD.Type     = CsConst.myRevBuf[28]; //转换为正确的类型
                                        oCMD.SubnetID = CsConst.myRevBuf[29];
                                        oCMD.DeviceID = CsConst.myRevBuf[30];
                                        oCMD.Param1   = CsConst.myRevBuf[31];
                                        oCMD.Param2   = CsConst.myRevBuf[32];
                                        oCMD.Param3   = CsConst.myRevBuf[33];
                                        oCMD.Param4   = CsConst.myRevBuf[34];
                                        temp.Targets.Add(oCMD);
                                        HDLUDP.TimeBetwnNext(1);
                                    }
                                    else
                                    {
                                        return(false);
                                    }
                                }
                                myTargets1.Add(temp);
                            }
                        }
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(50 + i);
                    }
                }
                if ((wdDeviceType == 211 || wdDeviceType == 208 || wdDeviceType == 209) && intActivePage != 6)
                {
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1CEA, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                    {
                        FHTargetEnable    = CsConst.myRevBuf[25];
                        RelayTargetEnable = CsConst.myRevBuf[26];
                    }
                    else
                    {
                        return(false);
                    }
                }
                #endregion
                MyRead2UpFlags[5] = true;
                MyRead2UpFlags[3] = true;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(60);
            }
            if (intActivePage == 0 || intActivePage == 5 || intActivePage == 6)
            {
                #region
                if (wdDeviceType == 211 || wdDeviceType == 208 || wdDeviceType == 209)
                {
                    #region
                    byte Chn    = Convert.ToByte(num1 & 0x0F);
                    byte Statue = Convert.ToByte(num2 & 0x0F);
                    myTargets2 = new List <FHTargets>();
                    for (byte i = 1; i <= 6; i++)
                    {
                        if (CsConst.isRestore || i == Chn)
                        {
                            for (byte j = 0; j < 2; j++)
                            {
                                if (CsConst.isRestore || j == Statue)
                                {
                                    FHTargets temp = new FHTargets();
                                    temp.ID          = i;
                                    temp.StatusIndex = j;
                                    temp.Targets     = new List <UVCMD.ControlTargets>();
                                    ArayTmp          = new byte[3];
                                    ArayTmp[0]       = i;
                                    ArayTmp[1]       = j;
                                    for (byte k = 0; k < 5; k++)
                                    {
                                        ArayTmp[2] = k;
                                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1CEE, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                                        {
                                            UVCMD.ControlTargets oCMD = new UVCMD.ControlTargets();
                                            oCMD.ID       = Convert.ToByte(CsConst.myRevBuf[27]);
                                            oCMD.Type     = CsConst.myRevBuf[28]; //转换为正确的类型
                                            oCMD.SubnetID = CsConst.myRevBuf[29];
                                            oCMD.DeviceID = CsConst.myRevBuf[30];
                                            oCMD.Param1   = CsConst.myRevBuf[31];
                                            oCMD.Param2   = CsConst.myRevBuf[32];
                                            oCMD.Param3   = CsConst.myRevBuf[33];
                                            oCMD.Param4   = CsConst.myRevBuf[34];
                                            temp.Targets.Add(oCMD);
                                            HDLUDP.TimeBetwnNext(1);
                                        }
                                        else
                                        {
                                            return(false);
                                        }
                                    }
                                    myTargets2.Add(temp);
                                }
                            }
                        }
                        if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                        {
                            CsConst.calculationWorker.ReportProgress(60 + i);
                        }
                    }

                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1CEA, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                    {
                        FHTargetEnable    = CsConst.myRevBuf[25];
                        RelayTargetEnable = CsConst.myRevBuf[26];
                    }
                    else
                    {
                        return(false);
                    }
                    #endregion
                }
                #endregion
                MyRead2UpFlags[5] = true;
                MyRead2UpFlags[4] = true;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(70);
            }
            if (intActivePage == 0 || intActivePage == 7)
            {
                #region
                if (wdDeviceType == 208)
                {
                    myPumps = new List <Pumps>();
                    if (CsConst.mySends.AddBufToSndList(null, 0x1D22, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                    {
                        PumpsEnable = CsConst.myRevBuf[25];
                        HDLUDP.TimeBetwnNext(1);
                    }
                    else
                    {
                        return(false);
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(71);
                    }
                    for (byte i = 0; i <= 6; i++)
                    {
                        ArayTmp    = new byte[1];
                        ArayTmp[0] = i;
                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1D26, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                        {
                            Pumps temp = new Pumps();
                            temp.TrueTargets  = new List <UVCMD.ControlTargets>();
                            temp.FalseTargets = new List <UVCMD.ControlTargets>();
                            temp.ID           = i;
                            temp.Enable       = CsConst.myRevBuf[26];
                            temp.ChooseChns   = CsConst.myRevBuf[27];
                            temp.TrueDelay    = CsConst.myRevBuf[28] * 256 + CsConst.myRevBuf[29];
                            temp.FalseDelay   = CsConst.myRevBuf[30] * 256 + CsConst.myRevBuf[31];
                            if (temp.TrueDelay > 600)
                            {
                                temp.TrueDelay = 600;
                            }
                            if (temp.FalseDelay > 600)
                            {
                                temp.FalseDelay = 600;
                            }
                            myPumps.Add(temp);
                            HDLUDP.TimeBetwnNext(1);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                }
                #endregion
                MyRead2UpFlags[6] = true;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100, null);
            }
            return(true);
        }