Пример #1
0
        private Boolean SaveServerURLInformation()
        {
            Boolean blnIsSuccess = false;

            try
            {
                String UrlAddress = URL.Text;

                Byte[] ArayTmp    = HDLUDP.StringToByte(UrlAddress);
                Byte[] SendBuffer = new Byte[68];
                ArayTmp.CopyTo(SendBuffer, 0);
                if (CsConst.mySends.AddBufToSndList(SendBuffer, 0x3022, bytSubID, bytDevID, false, true, true, false) == true)
                {
                    CsConst.myRevBuf = new byte[1200];
                    blnIsSuccess     = true;
                }
                else
                {
                    blnIsSuccess = false;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            return(blnIsSuccess);
        }
Пример #2
0
        public bool UploadInfosToDevice(string DevName, int DeviceType, int intActivePage)// 0 mean all, else that tab only
        {
            //保存回路信息
            string strMainRemark = DevName.Split('\\')[1].Trim();
            String TmpDevName    = DevName.Split('\\')[0].Trim();
            byte   bytSubID      = byte.Parse(TmpDevName.Split('-')[0].ToString());
            byte   bytDevID      = byte.Parse(TmpDevName.Split('-')[1].ToString());

            int wdMaxValue = DeviceTypeList.GetMaxValueFromPublicModeGroup(DeviceType);

            byte[] ArayMain      = new byte[20];
            byte[] arayTmpRemark = HDLUDP.StringToByte(strMainRemark);
            HDLSysPF.CopyRemarkBufferToSendBuffer(arayTmpRemark, ArayMain, 0);

            if (CsConst.mySends.AddBufToSndList(ArayMain, 0x0010, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == false)
            {
                return(false);
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(5);
            }

            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100);
            }
            return(true);
        }
Пример #3
0
        public bool DeleteCard()
        {
            bool result = true;

            try
            {
                NewDS.CardInfo temp = oNewDS.MyCardInfo[ID];
                temp.CardType   = 0;
                temp.BuildingNO = 0;
                temp.UnitNO     = 0;
                temp.RoomNO     = 0;
                temp.UIDL       = 0;
                temp.UID        = new byte[10];
                temp.arayDate   = new byte[5];
                temp.arayPhone  = new byte[11];
                temp.arayName   = new byte[10];
                temp.Remark     = "";
                byte[] arayTmp = new byte[64];
                arayTmp[0] = temp.UIDL;
                Array.Copy(temp.UID, 0, arayTmp, 1, temp.UIDL);
                arayTmp[11] = temp.CardType;
                arayTmp[12] = Convert.ToByte(temp.CardNum / 256);
                arayTmp[13] = Convert.ToByte(temp.CardNum % 256);
                arayTmp[14] = Convert.ToByte(temp.BuildingNO / 256);
                arayTmp[15] = Convert.ToByte(temp.BuildingNO % 256);
                arayTmp[16] = Convert.ToByte(temp.UnitNO / 256);
                arayTmp[17] = Convert.ToByte(temp.UnitNO % 256);
                arayTmp[18] = Convert.ToByte(temp.RoomNO / 256);
                arayTmp[19] = Convert.ToByte(temp.RoomNO % 256);
                Array.Copy(temp.arayDate, 0, arayTmp, 20, temp.arayDate.Length);
                Array.Copy(temp.arayName, 0, arayTmp, 25, temp.arayName.Length);
                Array.Copy(temp.arayPhone, 0, arayTmp, 35, temp.arayPhone.Length);

                byte[] arayTmpRemark = HDLUDP.StringToByte(temp.Remark);
                byte[] ArayMain      = new byte[18];
                if (arayTmpRemark.Length > 18)
                {
                    Array.Copy(arayTmpRemark, 0, ArayMain, 0, 18);
                }
                else
                {
                    Array.Copy(arayTmpRemark, 0, ArayMain, 0, arayTmpRemark.Length);
                }
                Array.Copy(ArayMain, 0, arayTmp, 46, ArayMain.Length);
                if (CsConst.mySends.AddBufToSndList(arayTmp, 0x3518, SubNetID, DeviceID, false, false, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                {
                }
                else
                {
                    result = false;
                }
            }
            catch
            {
                result = false;
            }
            return(result);
        }
Пример #4
0
 private void btnUser_Click(object sender, EventArgs e)
 {
     try
     {
         FileIndex = 0;
         UDPReceive.receiveQueueForAudio = new Queue <byte[]>();
         CsConst.MyBlnFinish             = false;
         CsConst.isStartUploadFile       = false;
         string MyPath = HDLPF.OpenFileDialog("WAV File|*.wav", "Choose File");
         if (MyPath == null || MyPath == "")
         {
             return;
         }
         FileStream fs = new FileStream(MyPath, FileMode.Open, FileAccess.Read);//创建文件流
         SourceFile = new byte[fs.Length];
         fs.Read(SourceFile, 0, SourceFile.Length);
         fs.Flush();
         fs.Close();
         int    FileLength  = SourceFile.Length;
         string strFileNmae = "share/sounds/linphone/rings/011.wav";
         byte[] arayTmp     = new byte[strFileNmae.Length + 6 + 2];
         int    DataLength  = strFileNmae.Length + 6;
         arayTmp[0] = Convert.ToByte(DataLength / 256);
         arayTmp[1] = Convert.ToByte(DataLength % 256);
         arayTmp[2] = 1;
         byte[] arayName = HDLUDP.StringToByte(strFileNmae);
         arayName.CopyTo(arayTmp, 3);
         arayTmp[strFileNmae.Length + 3] = 13;
         arayTmp[strFileNmae.Length + 4] = Convert.ToByte(FileLength / 256 / 256 / 256);
         arayTmp[strFileNmae.Length + 5] = Convert.ToByte(FileLength / 256 / 256 % 256);
         arayTmp[strFileNmae.Length + 6] = Convert.ToByte(FileLength / 256 % 256);
         arayTmp[strFileNmae.Length + 7] = Convert.ToByte(FileLength % 256);
         if (CsConst.mySends.AddBufToSndList(arayTmp, 0x1364, SubNetID, DevID, true, true, true, false) == true)
         {
             if (CsConst.isStartUploadFile)
             {
                 MyBackGroup                       = new BackgroundWorker();
                 MyBackGroup.DoWork               += new DoWorkEventHandler(calculationWorker_DoWork);
                 MyBackGroup.ProgressChanged      += new ProgressChangedEventHandler(calculationWorker_ProgressChanged);
                 MyBackGroup.WorkerReportsProgress = true;
                 MyBackGroup.RunWorkerCompleted   += new RunWorkerCompletedEventHandler(calculationWorker_RunWorkerCompleted);
                 MyBackGroup.RunWorkerAsync();
                 MyBackGroup.WorkerSupportsCancellation = true;
                 frmProcessTmp = new FrmProcess();
                 frmProcessTmp.ShowDialog();
             }
             else
             {
                 MessageBox.Show(CsConst.mstrINIDefault.IniReadValue("public", "99535", ""));
             }
         }
     }
     catch
     {
     }
 }
Пример #5
0
 private void tbPSK_TextChanged(object sender, EventArgs e)
 {
     byte[] arayTmpRemark = new byte[16];
     if (tbPSK.Text != null)
     {
         arayTmpRemark = HDLUDP.StringToByte(tbPSK.Text);
     }
     myIPModule.bytPWD = new byte[16];
     Array.Copy(arayTmpRemark, 0, myIPModule.bytPWD, 0, arayTmpRemark.Length);
     myIPModule.MyRead2UpFlags[2] = false;
 }
Пример #6
0
        public Boolean ModifyNormalCurtainSetupInformation(Byte SubNetID, Byte DeviceID, Byte CurtainID, int wdDeviceType)
        {
            Boolean blnSuccess = true;

            try
            {
                byte[] arayTmp = new byte[21];
                arayTmp[0] = CurtainID;

                byte[] arayTmp1 = HDLUDP.StringToByte(remark);
                arayTmp1.CopyTo(arayTmp, 1);

                if (CsConst.mySends.AddBufToSndList(arayTmp, 0xF010, SubNetID, DeviceID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == false)
                {
                    return(false);
                }

                arayTmp    = new byte[3];
                arayTmp[0] = CurtainID;
                arayTmp[1] = byte.Parse((runTime / 256).ToString());   // modify valid or not
                arayTmp[2] = byte.Parse((runTime % 256).ToString());
                if (CsConst.mySends.AddBufToSndList(arayTmp, 0xE802, SubNetID, DeviceID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == false)
                {
                    return(false);
                }
                HDLUDP.TimeBetwnNext(20);

                arayTmp[1] = byte.Parse((onDelay / 256).ToString());   // modify valid or not
                arayTmp[2] = byte.Parse((onDelay % 256).ToString());
                if (CsConst.mySends.AddBufToSndList(arayTmp, 0xE807, SubNetID, DeviceID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == false)
                {
                    return(false);
                }
                HDLUDP.TimeBetwnNext(20);

                if (wdDeviceType != 707)
                {
                    arayTmp[1] = byte.Parse((offDelay / 256).ToString());      // modify off delay
                    arayTmp[2] = byte.Parse((offDelay % 256).ToString());
                    if (CsConst.mySends.AddBufToSndList(arayTmp, 0xE80B, SubNetID, DeviceID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == false)
                    {
                        return(false);
                    }
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(20 * CurtainID);
                }
            }
            catch (Exception ex)
            {
            }
            return(blnSuccess);
        }
Пример #7
0
        private void txtZone_TextChanged(object sender, EventArgs e)
        {
            if (isRead)
            {
                return;
            }
            string str = txtZone.Text;

            str = GlobalClass.AddLeftZero(str, 4);
            byte[] arayTmp = HDLUDP.StringToByte(str);
            Array.Copy(arayTmp, 0, oNewDS.arayCall, 0, 4);
        }
Пример #8
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            Cursor.Current           = Cursors.WaitCursor;
            ((Button)sender).Enabled = false;

            byte[] ArayTmp = new byte[20];
            string strTmp  = tbNew.Text;

            if (strTmp == null || strTmp == string.Empty)
            {
                strTmp = "";
            }

            if (CsConst.MyEditMode == 0) // project mode
            {
                CsConst.MyTmpName = new List <string>();
                CsConst.MyTmpName.Add(strTmp);
            }
            else if (CsConst.MyEditMode == 1) // online mode
            {
                #region
                byte[] arayTmpRemark = HDLUDP.StringToByte(strTmp);
                if (arayTmpRemark.Length <= 20)
                {
                    Array.Copy(arayTmpRemark, 0, ArayTmp, 0, arayTmpRemark.Length);
                }
                else
                {
                    Array.Copy(arayTmpRemark, 0, ArayTmp, 0, 20);
                }

                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x0010, bytSubID, bytDevID, false, true, true, false) == true) //修改备注
                {
                    CsConst.MyTmpName = new List <string>();
                    CsConst.MyTmpName.Add(strTmp);
                }
                else
                {
                    CsConst.MyTmpName = new List <string>();
                    Cursor.Current    = Cursors.Default;
                    return;
                }
                #endregion
            }
            ((Button)sender).Enabled = true;
            Cursor.Current           = Cursors.Default;
            DialogResult             = DialogResult.OK;
            this.Close();
        }
Пример #9
0
        private void txtName_TextChanged(object sender, EventArgs e)
        {
            if (isRead)
            {
                return;
            }
            if (MyMHIC.arayHotel == null)
            {
                MyMHIC.arayHotel = new byte[13];
            }
            string str = txtName.Text.Trim();

            byte[] arayTmpRemark = HDLUDP.StringToByte(str);
            Array.Copy(arayTmpRemark, 0, MyMHIC.arayHotel, 0, 8);
        }
Пример #10
0
        public void btnModify_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            byte[] arayTmp = new byte[57];
            arayTmp[0] = Convert.ToByte(cbType.SelectedIndex);
            byte[] arayTmpRemark = new byte[20];
            arayTmpRemark = HDLUDP.StringToByte(tbGroup.Text.Trim());
            if (arayTmpRemark != null)
            {
                Array.Copy(arayTmpRemark, 0, arayTmp, 1, arayTmpRemark.Length);
            }
            arayTmpRemark = HDLUDP.StringToByte(tbProject.Text.Trim());
            if (arayTmpRemark != null)
            {
                Array.Copy(arayTmpRemark, 0, arayTmp, 21, arayTmpRemark.Length);
            }
            arayTmpRemark = HDLUDP.StringToByte(tbUser.Text.Trim());
            if (arayTmpRemark != null)
            {
                Array.Copy(arayTmpRemark, 0, arayTmp, 41, arayTmpRemark.Length);
            }
            arayTmpRemark = HDLUDP.StringToByte(tbPWD.Text.Trim());
            if (arayTmpRemark != null)
            {
                Array.Copy(arayTmpRemark, 0, arayTmp, 49, arayTmpRemark.Length);
            }

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

            if (arayTmp[0] <= 2) // 不是域名解析的
            {
                SaveServerIpAddressInformation();
            }
            else
            {
                SaveServerURLInformation();
            }

            if (cbZone.Visible == true)
            {
                lbTime.Text = HDLSysPF.ReadDeviceDateTime(bytSubID, bytDevID);
            }
            Cursor.Current = Cursors.Default;
        }
Пример #11
0
        private void btnModify_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            byte[] arayRemark = new byte[20];
            string strRemark  = "";

            byte[] arayTmp2 = HDLUDP.StringToByte(strRemark);
            if (arayTmp2.Length > 20)
            {
                Array.Copy(arayTmp2, 0, arayRemark, 0, 20);
            }
            else
            {
                Array.Copy(arayTmp2, 0, arayRemark, 0, arayTmp2.Length);
            }
            byte[] araySendIR = new byte[12];
            araySendIR[0] = Convert.ToByte(Convert.ToInt32(dgvIR[0, dgvIR.CurrentRow.Index].Value.ToString()) - 1);
            araySendIR[1] = 0;
            for (int K = 0; K <= 9; K++)
            {
                araySendIR[2 + K] = arayRemark[K];
            }
            if (CsConst.mySends.AddBufToSndList(araySendIR, 0xD90E, SubNetID, DevID, false, true, true, false) == true)
            {
                HDLUDP.TimeBetwnNext(araySendIR.Length);
                CsConst.myRevBuf = new byte[1200];
            }

            araySendIR[1] = 1;    //save the remark then
            for (int K = 0; K <= 9; K++)
            {
                araySendIR[2 + K] = arayRemark[10 + K];
            }

            if (CsConst.mySends.AddBufToSndList(araySendIR, 0xD90E, SubNetID, DevID, false, true, true, false) == true)
            {
                HDLUDP.TimeBetwnNext(araySendIR.Length);
                CsConst.myRevBuf = new byte[1200];
            }
            Cursor.Current = Cursors.Default;
        }
Пример #12
0
        private void btnFindA_Click(object sender, EventArgs e)
        {
            if (dgvListA.Rows.Count == 0)
            {
                return;
            }
            Cursor.Current = Cursors.WaitCursor;
            try
            {
                foreach (DataGridViewRow oRow in dgvListA.Rows)
                {
                    Byte[] arayTmpRemark = new Byte[22];
                    arayTmpRemark[1] = Convert.ToByte(oRow.Cells[1].Value.ToString());
                    if (oRow.Cells[2].Value.ToString() == "TX")
                    {
                        arayTmpRemark[0] = 0;
                    }
                    else
                    {
                        arayTmpRemark[0] = 1;
                    }

                    String strMainRemark = oRow.Cells[3].Value.ToString();
                    Byte[] arayRemark    = HDLUDP.StringToByte(strMainRemark);
                    //ruby test
                    HDLSysPF.CopyRemarkBufferToSendBuffer(arayRemark, arayTmpRemark, 2);

                    if (CsConst.mySends.AddBufToSndList(arayTmpRemark, 0xE422, bSubNetId, bDeviceId, false, true, true, false) == false)
                    {
                        return;
                    }
                }
            }
            catch
            { }
            Cursor.Current = Cursors.Default;
        }
Пример #13
0
        public void ModifyButtonRemark(Byte SubNetID, Byte DeviceID, int DeviceType, int RemoteAddress)
        {
            Byte ExtraLength = 0;

            if (IPmoduleDeviceTypeList.RFIpModuleV2.Contains(DeviceType))
            {
                ExtraLength = 1;
            }
            byte[] arayRemark = new byte[21 + ExtraLength];

            if (ExtraLength != 0)
            {
                arayRemark[21 + ExtraLength - 1] = (Byte)RemoteAddress;
            }

            byte[] arayTmp = HDLUDP.StringToByte(Remark);
            arayRemark[0] = ID;

            arayTmp.CopyTo(arayRemark, 1);
            if (CsConst.mySends.AddBufToSndList(arayRemark, 0xE006, SubNetID, DeviceID, false, true, true, true))
            {
                return;
            }
        }
Пример #14
0
        /// <summary>
        ///上传设置
        /// </summary>
        public void UploadMSPUInfoToDevice(string DevName, int DeviceType, int intActivePage, int num1, int num2)
        {
            string strMainRemark = DevName.Split('\\')[1].Trim().Split('(')[0].Trim();

            DevName = DevName.Split('\\')[0].Trim();
            //保存回路信息
            byte bytSubID = byte.Parse(DevName.Split('-')[0].ToString());
            byte bytDevID = byte.Parse(DevName.Split('-')[1].ToString());

            byte[] arayRemark = new byte[21];// used for restore remark

            if (HDLSysPF.ModifyDeviceMainRemark(bytSubID, bytDevID, strMainRemark, DeviceType))
            {
                HDLUDP.TimeBetwnNext(20);
            }
            else
            {
                return;
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(5);
            }
            byte[] ArayTmp = null;
            if (intActivePage == 0 || intActivePage == 1)
            {
                #region
                //LED状态
                ArayTmp    = new byte[3];
                ArayTmp[0] = 2;
                ArayTmp[1] = ONLEDs[0];
                ArayTmp[2] = ONLEDs[1];
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xDB3C, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                {
                    HDLUDP.TimeBetwnNext(20);
                }
                else
                {
                    return;
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(6);
                }
                //传感器使能
                ArayTmp     = new byte[12];
                ArayTmp[1]  = EnableSensors[1];
                ArayTmp[11] = EnableSensors[3];
                ArayTmp[8]  = EnableSensors[5];
                ArayTmp[9]  = EnableSensors[6];
                ArayTmp[10] = EnableSensors[7];

                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x161E, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                {
                    HDLUDP.TimeBetwnNext(20);
                }
                else
                {
                    return;
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(7);
                }
                //补偿值
                ArayTmp     = new byte[14];
                ArayTmp[0]  = ParamSensors[0];
                ArayTmp[1]  = ParamSensors[1];
                ArayTmp[6]  = 2;
                ArayTmp[7]  = 5;
                ArayTmp[8]  = 2;
                ArayTmp[9]  = 2;
                ArayTmp[10] = 2;
                ArayTmp[12] = ParamSensors[2];
                ArayTmp[13] = ParamSensors[3];
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1602, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                {
                    HDLUDP.TimeBetwnNext(20);
                }
                else
                {
                    return;
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(8);
                }
                // 增加恒照度修改保存
                if (DeviceType == 326)
                {
                    ArayTmp = new byte[9];
                    Array.Copy(EnableBroads, 0, ArayTmp, 0, 9);
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x16AB, bytSubID, bytDevID, false, true, true, false) == true)
                    {
                        HDLUDP.TimeBetwnNext(20);
                    }
                    else
                    {
                        return;
                    }
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(9);
                }
                #endregion
            }

            if (intActivePage == 0 || intActivePage == 2)
            {
                //逻辑块功能设置
                #region
                // 修改24个逻辑的使能位
                if (logic != null && logic.Count != 0)
                {
                    ArayTmp = new byte[logic.Count];
                    for (byte bytJ = 0; bytJ < logic.Count - 1; bytJ++)
                    {
                        ArayTmp[bytJ] = logic[bytJ].Enabled;
                    }
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x161A, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                    {
                        if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                        {
                            CsConst.calculationWorker.ReportProgress(10);
                        }

                        HDLUDP.TimeBetwnNext(20);
                        byte bytI = 1;
                        foreach (SensorLogic oLogic in logic)
                        {
                            #region

                            //修改备注
                            ArayTmp    = new byte[21];
                            ArayTmp[0] = bytI;
                            string strRemark = oLogic.Remarklogic;
                            if (strRemark == null)
                            {
                                strRemark = "";
                            }
                            byte[] arayTmp2 = HDLUDP.StringToByte(strRemark);
                            Array.Copy(arayTmp2, 0, ArayTmp, 1, arayTmp2.Length);
                            if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1608, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                            {
                                HDLUDP.TimeBetwnNext(20);
                            }
                            else
                            {
                                return;
                            }
                            if (oLogic.ID == num1 || CsConst.isRestore)
                            {
                                //修改设置
                                ArayTmp    = new byte[30];
                                ArayTmp[0] = bytI;
                                ArayTmp[1] = oLogic.bytRelation;
                                int intTmp = 0;
                                for (int i = 0; i < 8; i++)
                                {
                                    switch (i)
                                    {
                                    case 0: intTmp = intTmp | (oLogic.EnableSensors[i] << 0); break;

                                    case 1: intTmp = intTmp | (oLogic.EnableSensors[i] << 1); break;

                                    case 2: intTmp = intTmp | (oLogic.EnableSensors[i] << 5); break;

                                    case 3: intTmp = intTmp | (oLogic.EnableSensors[i] << 11); break;

                                    case 4: intTmp = intTmp | (oLogic.EnableSensors[i] << 6); break;

                                    case 5: intTmp = intTmp | (oLogic.EnableSensors[i] << 8); break;

                                    case 6: intTmp = intTmp | (oLogic.EnableSensors[i] << 9); break;

                                    case 7: intTmp = intTmp | (oLogic.EnableSensors[i] << 10); break;
                                    }
                                }
                                ArayTmp[2] = (Byte)(intTmp / 256);
                                ArayTmp[3] = (Byte)(intTmp % 256);
                                ArayTmp[4] = (Byte)(oLogic.DelayTimeT / 256);
                                ArayTmp[5] = (Byte)(oLogic.DelayTimeT % 256);
                                ArayTmp[6] = (Byte)(oLogic.DelayTimeF / 256);
                                ArayTmp[7] = (Byte)(oLogic.DelayTimeF % 256);
                                Array.Copy(oLogic.Paramters, 0, ArayTmp, 8, 6);
                                ArayTmp[14] = 20;
                                ArayTmp[15] = 20;

                                ArayTmp[20] = 0;
                                ArayTmp[29] = oLogic.Paramters[7];
                                ArayTmp[21] = 0;

                                if (oLogic.UV1 != null)
                                {
                                    ArayTmp[23] = oLogic.UV1.id;
                                    ArayTmp[24] = oLogic.UV1.condition;
                                }

                                if (oLogic.UV2 != null)
                                {
                                    ArayTmp[25] = oLogic.UV2.id;
                                    ArayTmp[26] = oLogic.UV2.condition;
                                }
                                ArayTmp[27] = oLogic.Paramters[9];
                                ArayTmp[28] = oLogic.Paramters[10];

                                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1610, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                                {
                                    HDLUDP.TimeBetwnNext(20);
                                }
                                else
                                {
                                    return;
                                }
                                //成立的触发目标
                                if (CsConst.isRestore)
                                {
                                    if (oLogic.SetUp != null && oLogic.SetUp.Count != 0)
                                    {
                                        foreach (UVCMD.ControlTargets TmpCmd in oLogic.SetUp)
                                        {
                                            byte[] arayCMD = new byte[9];
                                            arayCMD[0] = bytI;
                                            arayCMD[1] = byte.Parse(TmpCmd.ID.ToString());
                                            arayCMD[2] = TmpCmd.Type;
                                            arayCMD[3] = TmpCmd.SubnetID;
                                            arayCMD[4] = TmpCmd.DeviceID;
                                            arayCMD[5] = TmpCmd.Param1;
                                            arayCMD[6] = TmpCmd.Param2;
                                            arayCMD[7] = TmpCmd.Param3;   // save targets
                                            arayCMD[8] = TmpCmd.Param4;
                                            if (CsConst.mySends.AddBufToSndList(arayCMD, 0x1614, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                                            {
                                                HDLUDP.TimeBetwnNext(20);
                                            }
                                            else
                                            {
                                                return;
                                            }
                                        }
                                    }

                                    //不成立的触发目标
                                    if (oLogic.NoSetUp != null && oLogic.NoSetUp.Count != 0)
                                    {
                                        foreach (UVCMD.ControlTargets TmpCmd in oLogic.NoSetUp)
                                        {
                                            byte[] arayCMD = new byte[9];
                                            arayCMD[0] = Convert.ToByte(bytI + 24);
                                            arayCMD[1] = byte.Parse(TmpCmd.ID.ToString());
                                            arayCMD[2] = TmpCmd.Type;
                                            arayCMD[3] = TmpCmd.SubnetID;
                                            arayCMD[4] = TmpCmd.DeviceID;
                                            arayCMD[5] = TmpCmd.Param1;
                                            arayCMD[6] = TmpCmd.Param2;
                                            arayCMD[7] = TmpCmd.Param3;   // save targets
                                            arayCMD[8] = TmpCmd.Param4;
                                            if (CsConst.mySends.AddBufToSndList(arayCMD, 0x1614, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                                            {
                                                HDLUDP.TimeBetwnNext(20);
                                            }
                                            else
                                            {
                                                return;
                                            }
                                        }
                                    }
                                }
                            }
                            #endregion
                            bytI++;
                            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                            {
                                CsConst.calculationWorker.ReportProgress(10 + bytI);
                            }
                        }
                    }
                    else
                    {
                        return;
                    }
                }
                #endregion
            }

            if (intActivePage == 0 || intActivePage == 3)
            {
                //安防功能
                #region
                if (fireset != null && fireset.Count != 0)
                {
                    foreach (UVCMD.SecurityInfo oTmp in fireset)
                    {
                        ArayTmp    = new byte[21];
                        ArayTmp[0] = oTmp.bytSeuID;
                        //修改备注

                        ArayTmp[0] = oTmp.bytSeuID;
                        string strRemark = oTmp.strRemark;
                        if (strRemark == null)
                        {
                            strRemark = "";
                        }
                        byte[] arayTmp2 = HDLUDP.StringToByte(strRemark);
                        Array.Copy(arayTmp2, 0, ArayTmp, 1, arayTmp2.Length);

                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1626, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                        {
                            HDLUDP.TimeBetwnNext(20);
                        }
                        else
                        {
                            return;
                        }

                        //修改设置
                        ArayTmp    = new byte[9];
                        ArayTmp[0] = oTmp.bytSeuID;
                        ArayTmp[1] = oTmp.bytTerms;
                        ArayTmp[2] = oTmp.bytSubID;
                        ArayTmp[3] = oTmp.bytDevID;
                        ArayTmp[4] = oTmp.bytArea;

                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x162A, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                        {
                            HDLUDP.TimeBetwnNext(20);
                        }
                        else
                        {
                            return;
                        }
                        if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                        {
                            CsConst.calculationWorker.ReportProgress(40);
                        }
                    }
                }
                #endregion
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100);
            }
        }
Пример #15
0
        public override void UploadMS04ToDevice(string strDevName, int intDeviceType, int intActivePage, int num1, int num2)// 0 mean all, else that tab only
        {
            string strMainRemark = strDevName.Split('\\')[1].Trim().Split('(')[0].Trim();
            string strTmpDevName = strDevName.Split('\\')[0].Trim();
            byte   bytSubID      = byte.Parse(strTmpDevName.Split('-')[0].ToString());
            byte   bytDevID      = byte.Parse(strTmpDevName.Split('-')[1].ToString());

            base.UploadMS04ToDevice(strDevName, intDeviceType, intActivePage, 0, 0);

            if (intActivePage == 0 || intActivePage == 7)
            {
                //modify channel information
                #region
                byte[] arayRemark   = new byte[21];// used for restore remark
                byte[] arayLoadType = new byte[1];
                byte[] arayLimitL   = new byte[2]; arayLimitL[0] = 0;
                byte[] arayLimitH   = new byte[2]; arayLimitH[0] = 1;
                byte[] arayMaxLevel = new byte[1];
                byte   bytI         = 1;
                foreach (RelayChannel ch in Chans)
                {
                    // modify the chns remark
                    arayRemark = new byte[21]; // 初始化数组
                    string strRemark = ch.Remark;
                    if (ch.Remark == null)
                    {
                        strRemark = "";
                    }
                    byte[] arayTmp = HDLUDP.StringToByte(strRemark);

                    arayRemark[0] = bytI;
                    HDLSysPF.CopyRemarkBufferToSendBuffer(arayTmp, arayRemark, 1);

                    CsConst.mySends.AddBufToSndList(arayRemark, 0x3318, bytSubID, bytDevID, false, false, false, false);
                    HDLUDP.TimeBetwnNext(arayRemark.Length);


                    arayLoadType[0] = byte.Parse(ch.OFFDelay.ToString());
                    arayMaxLevel[0] = byte.Parse(ch.OnDelay.ToString());
                    arayLimitL[0]   = byte.Parse(ch.ProtectDelay.ToString());
                    bytI++;
                }

                // modify the off delay
                CsConst.mySends.AddBufToSndList(arayLoadType, 0xF086, bytSubID, bytDevID, false, false, false, false);
                HDLUDP.TimeBetwnNext(arayLoadType.Length);

                // modify the on delay
                CsConst.mySends.AddBufToSndList(arayMaxLevel, 0xF04F, bytSubID, bytDevID, false, false, false, false);
                HDLUDP.TimeBetwnNext(arayLoadType.Length);

                // modify the protect delay
                CsConst.mySends.AddBufToSndList(arayLimitL, 0xF041, bytSubID, bytDevID, false, false, false, false);
                HDLUDP.TimeBetwnNext(arayLoadType.Length);


                MyRead2UpFlags[1] = true;
                #endregion
            }

            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100);
            }
        }
Пример #16
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);
        }
Пример #17
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                allVisible(false);
                Cursor.Current  = Cursors.WaitCursor;
                btnSave.Enabled = false;
                int CMD1 = 0xE422;
                int CMD2 = 0xE42A;
                if (Type == 1)
                {
                    CMD1 = 0xE422;
                    CMD2 = 0xE42A;
                }
                else if (Type == 2)
                {
                    CMD1 = 0xDA63;
                    CMD2 = 0xDA6B;
                }
                for (int i = 0; i < dgvUV.Rows.Count; i++)
                {
                    byte[] arayTmp = new byte[4];
                    if (MyintDeviceType == 1041)
                    {
                        arayTmp = new byte[6];
                    }
                    arayTmp[0] = Convert.ToByte(dgvUV[0, i].Value.ToString());
                    if (dgvUV[1, i].Value == null)
                    {
                        dgvUV[1, i].Value = "";
                    }
                    string strRemark = dgvUV[1, i].Value.ToString();
                    string strType   = dgvUV[2, i].Value.ToString();
                    string str1      = dgvUV[3, i].Value.ToString();
                    string str2      = dgvUV[4, i].Value.ToString();
                    if (str1.Contains("("))
                    {
                        str1 = str1.Split('(')[0].ToString();
                    }
                    if (str2.Contains("("))
                    {
                        str2 = str2.Split('(')[0].ToString();
                    }
                    if (MyintDeviceType == 1041)
                    {
                        if (strType == CsConst.myPublicControlType[14].ControlTypeName)
                        {
                            arayTmp[1] = 0xBB;
                        }
                        arayTmp[2] = Convert.ToByte(str1.Split('/')[0].ToString());
                        arayTmp[3] = Convert.ToByte(str1.Split('/')[1].ToString());
                        arayTmp[4] = Convert.ToByte(str2.Split('/')[0].ToString());
                        arayTmp[5] = Convert.ToByte(str2.Split('/')[1].ToString());
                    }
                    else
                    {
                        if (strType == CsConst.myPublicControlType[4].ControlTypeName)
                        {
                            arayTmp[1] = 0x58;
                        }
                        arayTmp[2] = Convert.ToByte(str1);
                        if (str2 == CsConst.Status[0])
                        {
                            arayTmp[3] = 0;
                        }
                        else if (str2 == CsConst.Status[1])
                        {
                            arayTmp[3] = 255;
                        }
                    }
                    if (CsConst.mySends.AddBufToSndList(arayTmp, CMD1, SubNetID, DevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(MyintDeviceType)) == true)
                    {
                        if (oRS232 != null)
                        {
                            if (Type == 1)
                            {
                                oRS232.myBUS2RS[i].bytType   = arayTmp[1];
                                oRS232.myBUS2RS[i].bytParam1 = arayTmp[2];
                                oRS232.myBUS2RS[i].bytParam2 = arayTmp[3];
                                if (MyintDeviceType == 1041)
                                {
                                    oRS232.myBUS2RS[i].bytParam3 = arayTmp[4];
                                    oRS232.myBUS2RS[i].bytParam4 = arayTmp[5];
                                }
                            }
                            else if (Type == 2)
                            {
                                oRS232.myBUS2485[i].bytType   = arayTmp[1];
                                oRS232.myBUS2485[i].bytParam1 = arayTmp[2];
                                oRS232.myBUS2485[i].bytParam2 = arayTmp[3];
                            }
                        }
                        else if (oMHRCU != null)
                        {
                            if (Type == 1)
                            {
                                oMHRCU.myBUS2RS[i].bytType   = arayTmp[1];
                                oMHRCU.myBUS2RS[i].bytParam1 = arayTmp[2];
                                oMHRCU.myBUS2RS[i].bytParam2 = arayTmp[3];
                            }
                            else if (Type == 2)
                            {
                                oMHRCU.myBUS2485[i].bytType   = arayTmp[1];
                                oMHRCU.myBUS2485[i].bytParam1 = arayTmp[2];
                                oMHRCU.myBUS2485[i].bytParam2 = arayTmp[3];
                            }
                        }
                    }
                    else
                    {
                        break;
                    }
                    HDLUDP.TimeBetwnNext(20);

                    arayTmp    = new byte[21];
                    arayTmp[0] = Convert.ToByte(dgvUV[0, i].Value.ToString());
                    byte[] arayRemark = HDLUDP.StringToByte(strRemark);
                    if (arayRemark.Length <= 20)
                    {
                        arayRemark.CopyTo(arayTmp, 1);
                    }
                    else
                    {
                        Array.Copy(arayRemark, 0, arayTmp, 1, 20);
                    }
                    if (CsConst.mySends.AddBufToSndList(arayTmp, CMD2, SubNetID, DevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(MyintDeviceType)) == true)
                    {
                        if (oRS232 != null)
                        {
                            if (Type == 1)
                            {
                                oRS232.myBUS2RS[i].Remark = strRemark;
                            }
                            else if (Type == 2)
                            {
                                oRS232.myBUS2485[i].Remark = strRemark;
                            }
                        }
                        else if (oMHRCU != null)
                        {
                            if (Type == 1)
                            {
                                oMHRCU.myBUS2RS[i].Remark = strRemark;
                            }
                            else if (Type == 2)
                            {
                                oMHRCU.myBUS2485[i].Remark = strRemark;
                            }
                        }
                    }
                    else
                    {
                        break;
                    }
                    HDLUDP.TimeBetwnNext(20);
                }
            }
            catch
            {
            }
            btnSave.Enabled = true;
            Cursor.Current  = Cursors.Default;
        }
Пример #18
0
        private void btnModify_Click(object sender, EventArgs e)
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;

                NewDS.CardInfo tmp  = new NewDS.CardInfo();
                string         str1 = txtBuilding.Text;
                string         str2 = txtUnit.Text;
                string         str3 = txtRoom.Text;
                if (oDS != null)
                {
                    tmp.CardNum = oDS.MyCardInfo[ID].CardNum;
                }
                else if (oNewDS != null)
                {
                    tmp.CardNum = oNewDS.MyCardInfo[ID].CardNum;
                }
                tmp.CardType   = Convert.ToByte(cbType.SelectedIndex + 1);
                tmp.BuildingNO = Convert.ToInt32(str1, 16);
                tmp.UnitNO     = Convert.ToInt32(str2, 16);
                tmp.RoomNO     = Convert.ToInt32(str3, 16);
                tmp.UIDL       = Convert.ToByte(lbUIDLV.Text);
                tmp.UID        = new byte[10];
                byte[] arayUIDTmp = GlobalClass.HexToByte(lbUIDDV.Text);
                if (arayUIDTmp.Length > 10)
                {
                    Array.Copy(arayUIDTmp, 0, tmp.UID, 0, 10);
                }
                else
                {
                    Array.Copy(arayUIDTmp, 0, tmp.UID, 0, arayUIDTmp.Length);
                }
                tmp.arayDate    = new byte[5];
                tmp.arayDate[0] = Convert.ToByte(TimePicker.Value.Year - 2000);
                tmp.arayDate[1] = Convert.ToByte(TimePicker.Value.Month);
                tmp.arayDate[2] = Convert.ToByte(TimePicker.Value.Day);
                tmp.arayDate[3] = Convert.ToByte(numTime1.Value);
                tmp.arayDate[4] = Convert.ToByte(numTime2.Value);
                tmp.arayPhone   = new byte[11];
                byte[] arayTmpRemark = HDLUDP.StringToByte(txtPhone.Text);
                if (arayTmpRemark.Length > 11)
                {
                    Array.Copy(arayTmpRemark, 0, tmp.arayPhone, 0, 11);
                }
                else
                {
                    Array.Copy(arayTmpRemark, 0, tmp.arayPhone, 0, arayTmpRemark.Length);
                }

                tmp.arayName  = new byte[10];
                arayTmpRemark = HDLUDP.StringToByte(txtName.Text);
                if (arayTmpRemark.Length > 10)
                {
                    Array.Copy(arayTmpRemark, 0, tmp.arayName, 0, 10);
                }
                else
                {
                    Array.Copy(arayTmpRemark, 0, tmp.arayName, 0, arayTmpRemark.Length);
                }

                tmp.Remark = txtRemark.Text.Trim();
                byte[] arayTmp = new byte[64];
                arayTmp[0] = tmp.UIDL;
                Array.Copy(tmp.UID, 0, arayTmp, 1, tmp.UIDL);
                arayTmp[11] = tmp.CardType;
                arayTmp[12] = Convert.ToByte(tmp.CardNum / 256);
                arayTmp[13] = Convert.ToByte(tmp.CardNum % 256);
                arayTmp[14] = Convert.ToByte(tmp.BuildingNO / 256);
                arayTmp[15] = Convert.ToByte(tmp.BuildingNO % 256);
                arayTmp[16] = Convert.ToByte(tmp.UnitNO / 256);
                arayTmp[17] = Convert.ToByte(tmp.UnitNO % 256);
                arayTmp[18] = Convert.ToByte(tmp.RoomNO / 256);
                arayTmp[19] = Convert.ToByte(tmp.RoomNO % 256);
                Array.Copy(tmp.arayDate, 0, arayTmp, 20, tmp.arayDate.Length);
                Array.Copy(tmp.arayName, 0, arayTmp, 25, tmp.arayName.Length);
                Array.Copy(tmp.arayPhone, 0, arayTmp, 35, tmp.arayPhone.Length);

                arayTmpRemark = HDLUDP.StringToByte(tmp.Remark);
                if (arayTmpRemark.Length > 18)
                {
                    Array.Copy(arayTmpRemark, 0, arayTmp, 46, 18);
                }
                else
                {
                    Array.Copy(arayTmpRemark, 0, arayTmp, 46, arayTmpRemark.Length);
                }

                if (CsConst.mySends.AddBufToSndList(arayTmp, 0x3518, SubnetID, DeviceID, false, false, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == true)
                {
                    if (oNewDS != null)
                    {
                        oNewDS.MyCardInfo[ID] = tmp;
                    }
                    else if (oDS != null)
                    {
                        oDS.MyCardInfo[ID] = tmp;
                    }
                    this.Close();
                }
                else
                {
                    MessageBox.Show(CsConst.mstrINIDefault.IniReadValue("Public", "99777", ""), ""
                                    , MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                    return;
                }
            }
            catch
            {
            }
            Cursor.Current = Cursors.Default;
        }
Пример #19
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);
        }
Пример #20
0
        public bool UploadInfosToDevice(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());
            int  wdMaxValue = DeviceTypeList.GetMaxValueFromPublicModeGroup(wdDeviceType);

            byte[] ArayMain      = new byte[20];
            byte[] arayTmpRemark = HDLUDP.StringToByte(strMainRemark);
            byte[] ArayTmp       = null;
            if (HDLSysPF.ModifyDeviceMainRemark(bytSubID, bytDevID, strMainRemark, wdDeviceType) == false)
            {
                return(false);
            }

            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(5, null);
            }
            if (intActivePage == 0 || intActivePage == 1)
            {
                #region
                byte[] arayLED = new byte[11];
                arayLED[0] = Backlight;   // modify LED and backlight
                arayLED[1] = Ledlight;
                if (CsConst.mySends.AddBufToSndList(arayLED, 0xE012, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                {
                    HDLUDP.TimeBetwnNext(20);
                }
                else
                {
                    return(false);
                }

                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(10, null);
                }
                if (CsConst.mySends.AddBufToSndList(arayHotel, 0x2016, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                {
                    HDLUDP.TimeBetwnNext(20);
                }
                else
                {
                    return(false);
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(15, null);
                }
                #endregion
            }

            if (intActivePage == 0 || intActivePage == 2)
            {
                #region
                byte[] arayKeyMode = new byte[wdMaxValue];
                byte[] arayRemark  = new byte[21];
                byte[] arayDely    = new byte[wdMaxValue * 2];
                foreach (Key TmpKey in myKeySetting)
                {
                    arayRemark = new byte[21];
                    TmpKey.UploadButtonRemarkAndCMDToDevice(bytSubID, bytDevID, wdDeviceType, -1, 255);

                    arayDely[(TmpKey.ID - 1) * 2]     = Convert.ToByte(TmpKey.Delay / 256);
                    arayDely[(TmpKey.ID - 1) * 2 + 1] = Convert.ToByte(TmpKey.Delay % 256);
                    arayKeyMode[TmpKey.ID - 1]        = TmpKey.Mode;

                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(25 + TmpKey.ID, null);
                    }
                }
                if (CsConst.mySends.AddBufToSndList(arayKeyMode, 0xE00A, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                {
                    HDLUDP.TimeBetwnNext(20);
                }
                else
                {
                    return(false);
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(40, null);
                }
                if (wdDeviceType != 3058 && wdDeviceType != 3060)
                {
                    if (CsConst.mySends.AddBufToSndList(arayDely, 0x2026, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                    {
                        HDLUDP.TimeBetwnNext(20);
                    }
                    else
                    {
                        return(false);
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(45, null);
                    }
                }
                #endregion
            }

            if (intActivePage == 0 || intActivePage == 3)
            {
                #region
                if (wdDeviceType == 3076 || wdDeviceType == 3078 || wdDeviceType == 3080)
                {
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(91);
                    }
                    int maxLength = wdMaxValue;
                    if (wdDeviceType == 3076 || wdDeviceType == 3078 || wdDeviceType == 3080)
                    {
                        maxLength = 3;
                    }
                    for (int i = 1; i <= maxLength; i++)
                    {
                        ArayTmp    = new byte[7];
                        ArayTmp[0] = Convert.ToByte(i);
                        Array.Copy(arayButtonColor, (i - 1) * 6, ArayTmp, 1, 6);
                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xE14E, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                        {
                            HDLUDP.TimeBetwnNext(20);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(92);
                    }


                    if (arayButtonBalance[0] >= 0)
                    {
                        ArayTmp = new byte[arayButtonBalance[0] * 3];
                        Array.Copy(arayButtonBalance, 1, ArayTmp, 0, arayButtonBalance.Length - 1);
                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x199A, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                        {
                            HDLUDP.TimeBetwnNext(20);
                        }
                        else
                        {
                            return(false);
                        }
                    }


                    ArayTmp = new byte[maxLength];
                    Array.Copy(arayButtonSensitiVity, 0, ArayTmp, 0, maxLength);
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xE152, bytSubID, bytDevID, false, false, false, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                    {
                        HDLUDP.TimeBetwnNext(20);
                    }
                    else
                    {
                        return(false);
                    }

                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(93);
                    }
                }
                #endregion
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100, null);
            }
            return(true);
        }
Пример #21
0
        /// <summary>
        ///上传设置
        /// </summary>
        public bool UploadSensorInfosToDevice(string DevName, int DeviceType, int intActivePage, int num1, int num2)
        {
            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];

            if (HDLSysPF.ModifyDeviceMainRemark(bytSubID, bytDevID, strMainRemark, DeviceType) == true)
            {
                HDLUDP.TimeBetwnNext(20);
            }
            else
            {
                return(false);
            }
            byte[] ArayTmp = null;
            ///红外发射
            if (intActivePage == 0 || intActivePage == 1)
            {
                if (IRCodes != null && IRCodes.Count != 0)
                {
                    #region
                    byte byt = 0;
                    foreach (UVCMD.IRCode TmpIRcode in IRCodes)
                    {
                        byte[] arayRemark = new byte[20];
                        string strRemark  = TmpIRcode.Remark1;
                        byte[] arayTmp2   = HDLUDP.StringToByte(strRemark);

                        if (arayTmp2.Length <= 20)
                        {
                            Array.Copy(arayTmp2, 0, arayRemark, 0, arayTmp2.Length);
                        }
                        else
                        {
                            Array.Copy(arayTmp2, 0, arayRemark, 0, 20);
                        }
                        byte[] araySendIR = new byte[12];
                        araySendIR[0] = byte.Parse((TmpIRcode.KeyID - 1).ToString());
                        araySendIR[1] = 0;
                        for (int K = 0; K <= 9; K++)
                        {
                            araySendIR[2 + K] = arayRemark[K];
                        }
                        if (CsConst.mySends.AddBufToSndList(araySendIR, 0x1690, bytSubID, bytDevID, false, true, true, false) == true)
                        {
                            HDLUDP.TimeBetwnNext(20);
                        }
                        else
                        {
                            return(false);
                        }

                        araySendIR[1] = 1;
                        for (int K = 0; K <= 9; K++)
                        {
                            araySendIR[2 + K] = arayRemark[10 + K];
                        }

                        if (CsConst.mySends.AddBufToSndList(araySendIR, 0x1690, bytSubID, bytDevID, false, true, true, false) == true)
                        {
                            HDLUDP.TimeBetwnNext(20);
                        }
                        else
                        {
                            return(false);
                        }
                        if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                        {
                            CsConst.calculationWorker.ReportProgress(byt * 10 / IRCodes.Count);
                        }
                        byt++;
                    }
                    #endregion
                }
            }

            //红外接收
            if (intActivePage == 0 || intActivePage == 2)
            {
                //红外接收设置
                #region
                if (IrReceiver != null && IrReceiver.Count != 0)
                {
                    for (int i = 0; i < IrReceiver.Count; i++)
                    {
                        ArayTmpMode[IrReceiver[i].BtnNum - 1] = IrReceiver[i].IRBtnModel;
                    }
                    if (CsConst.mySends.AddBufToSndList(ArayTmpMode, 0x1674, bytSubID, bytDevID, false, true, true, false) == true)
                    {
                        byte byt = 0;

                        HDLUDP.TimeBetwnNext(20);
                        foreach (IRReceive oTmp in IrReceiver)
                        {
                            //修改备注
                            ArayTmp    = new byte[21];
                            ArayTmp[0] = Convert.ToByte(oTmp.BtnNum);
                            string strRemark = oTmp.IRBtnRemark;
                            byte[] arayTmp2  = HDLUDP.StringToByte(strRemark);
                            if (arayTmp2.Length <= 20)
                            {
                                Array.Copy(arayTmp2, 0, ArayTmp, 1, arayTmp2.Length);
                            }
                            else
                            {
                                Array.Copy(arayTmp2, 0, ArayTmp, 1, 20);
                            }

                            if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x167C, bytSubID, bytDevID, false, true, true, false) == true)
                            {
                                HDLUDP.TimeBetwnNext(20);
                            }
                            else
                            {
                                return(false);
                            }
                            if (CsConst.isRestore)
                            {
                                if (oTmp.TargetInfo != null && oTmp.TargetInfo.Count != 0)
                                {
                                    foreach (UVCMD.ControlTargets TmpCmd in oTmp.TargetInfo)
                                    {
                                        if (TmpCmd.Type != 0 && TmpCmd.Type != 255)
                                        {
                                            byte[] arayCMD = new byte[9];
                                            arayCMD[0] = Convert.ToByte(oTmp.BtnNum);
                                            arayCMD[1] = byte.Parse(TmpCmd.ID.ToString());
                                            arayCMD[2] = TmpCmd.Type;
                                            arayCMD[3] = TmpCmd.SubnetID;
                                            arayCMD[4] = TmpCmd.DeviceID;
                                            arayCMD[5] = TmpCmd.Param1;
                                            arayCMD[6] = TmpCmd.Param2;
                                            arayCMD[7] = TmpCmd.Param3;   // save targets
                                            arayCMD[8] = TmpCmd.Param4;
                                            if (CsConst.mySends.AddBufToSndList(arayCMD, 0x1678, bytSubID, bytDevID, false, true, true, false) == true)
                                            {
                                                HDLUDP.TimeBetwnNext(20);
                                            }
                                            else
                                            {
                                                return(false);
                                            }
                                        }
                                    }
                                }
                            }
                            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                            {
                                CsConst.calculationWorker.ReportProgress(byt * 10 / IRCodes.Count + 10);
                            }
                            byt++;
                        }
                    }
                    else
                    {
                        return(false);
                    }
                }
                #endregion
            }

            if (intActivePage == 0 || intActivePage == 3)
            {
                #region
                //LED灯开关设置
                #region
                ArayTmp    = new byte[3];
                ArayTmp[0] = 2;
                Array.Copy(ONLEDs, 0, ArayTmp, 1, 2);
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xDB3C, bytSubID, bytDevID, false, true, true, false) == true)
                {
                    HDLUDP.TimeBetwnNext(20);
                }
                else
                {
                    return(false);
                }
                #endregion
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(21);
                }
                //修改使能位
                #region
                ArayTmp = new byte[7];
                Array.Copy(EnableSensors, 0, ArayTmp, 0, 7);
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1660, bytSubID, bytDevID, false, true, true, false) == true)
                {
                    HDLUDP.TimeBetwnNext(20);
                }
                else
                {
                    return(false);
                }
                #endregion
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(22);
                }
                //修改补偿值和灵敏度
                #region
                ArayTmp = new byte[4];
                Array.Copy(ParamSensors, 0, ArayTmp, 0, 1);                                                                 // 只有温度亮度
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1643, bytSubID, bytDevID, false, true, true, false) == true) //修改2014-12-04 原来0x1641 --> 0x1643
                {
                    HDLUDP.TimeBetwnNext(20);
                }
                else
                {
                    return(false);
                }
                #endregion
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(23);
                }
                //修改灵敏度
                #region
                ArayTmp = new byte[1];
                Array.Copy(ParamSensors, 1, ArayTmp, 0, 1);
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1670, bytSubID, bytDevID, false, true, true, false) == true)
                {
                    HDLUDP.TimeBetwnNext(20);
                }
                else
                {
                    return(false);
                }
                #endregion
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(24);
                }
                // 增加恒照度修改保存
                if (DeviceType == 329)
                {
                    #region
                    ArayTmp = new byte[9];
                    Array.Copy(EnableBroads, 0, ArayTmp, 0, 9);
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x16AB, bytSubID, bytDevID, false, true, true, false) == false)
                    {
                        HDLUDP.TimeBetwnNext(20);
                    }
                    #endregion
                }
                #endregion
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(30);
                }
            }

            if (intActivePage == 0 || intActivePage == 4)
            {
                //逻辑块功能设置
                #region
                // 修改24个逻辑的使能位
                if (logic != null && logic.Count != 0)
                {
                    ArayTmp = new byte[logic.Count];
                    for (byte bytJ = 0; bytJ < logic.Count; bytJ++)
                    {
                        ArayTmp[bytJ] = logic[bytJ].Enabled;
                    }
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x165C, bytSubID, bytDevID, false, true, true, false) == true)
                    {
                        HDLUDP.TimeBetwnNext(20);

                        byte bytI = 1;
                        foreach (SensorLogic oLogic in logic)
                        {
                            #region
                            if (oLogic.ID == num1 || CsConst.isRestore)
                            {
                                //修改备注
                                #region
                                ArayTmp    = new byte[21];
                                ArayTmp[0] = bytI;
                                string strRemark = oLogic.Remarklogic;
                                byte[] arayTmp2  = HDLUDP.StringToByte(strRemark);
                                if (arayTmp2.Length <= 20)
                                {
                                    Array.Copy(arayTmp2, 0, ArayTmp, 1, arayTmp2.Length);
                                }
                                else
                                {
                                    Array.Copy(arayTmp2, 0, ArayTmp, 1, 20);
                                }
                                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x164A, bytSubID, bytDevID, false, true, true, false) == true)
                                {
                                    HDLUDP.TimeBetwnNext(20);
                                }
                                else
                                {
                                    return(false);
                                }
                                #endregion

                                //修改设置
                                #region
                                ArayTmp    = new byte[21];
                                ArayTmp[0] = bytI;
                                ArayTmp[1] = oLogic.bytRelation;
                                int intTmp = 0;
                                for (byte bytJ = 0; bytJ <= 6; bytJ++)
                                {
                                    intTmp = intTmp | (oLogic.EnableSensors[bytJ] << bytJ);
                                }
                                ArayTmp[2] = (Byte)(intTmp);
                                ArayTmp[3] = (Byte)(oLogic.DelayTimeT / 256);
                                ArayTmp[4] = (Byte)(oLogic.DelayTimeT % 256);
                                Array.Copy(oLogic.Paramters, 0, ArayTmp, 5, 7);

                                ArayTmp[12] = 201;
                                ArayTmp[13] = 202;

                                if (oLogic.UV1 != null)
                                {
                                    ArayTmp[12] = oLogic.UV1.id;
                                    ArayTmp[13] = oLogic.UV1.condition;
                                }

                                if (oLogic.UV2 != null)
                                {
                                    ArayTmp[14] = oLogic.UV2.id;
                                    ArayTmp[15] = oLogic.UV2.condition;
                                }
                                ArayTmp[16] = Convert.ToByte(oLogic.DelayTimeF / 256);
                                ArayTmp[17] = Convert.ToByte(oLogic.DelayTimeF % 256);

                                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1652, bytSubID, bytDevID, false, true, true, false) == true)
                                {
                                    HDLUDP.TimeBetwnNext(20);
                                }
                                else
                                {
                                    return(false);
                                }
                                #endregion

                                //目标配置
                                #region
                                if (CsConst.isRestore)
                                {
                                    //成立的触发目标
                                    oLogic.ModifyLogicTrueCommandsFromDevice(bytSubID, bytDevID, DeviceType);

                                    //不成立的触发目标
                                    oLogic.ModifyLogicFalseCommandsFromDevice(bytSubID, bytDevID, DeviceType);
                                }
                                #endregion
                            }
                            #endregion
                            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                            {
                                CsConst.calculationWorker.ReportProgress(30 + bytI);
                            }
                            bytI++;
                        }
                    }
                    else
                    {
                        return(false);
                    }
                }
                #endregion
            }

            if (intActivePage == 0 || intActivePage == 5)
            {
                //安防功能
                #region
                if (fireset != null && fireset.Count != 0)
                {
                    foreach (UVCMD.SecurityInfo oTmp in fireset)
                    {
                        ArayTmp    = new byte[21];
                        ArayTmp[0] = oTmp.bytSeuID;
                        //修改备注

                        ArayTmp[0] = oTmp.bytSeuID;
                        string strRemark = oTmp.strRemark;
                        byte[] arayTmp2  = HDLUDP.StringToByte(strRemark);
                        Array.Copy(arayTmp2, 0, ArayTmp, 1, arayTmp2.Length);

                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1668, bytSubID, bytDevID, false, true, true, false) == true)
                        {
                            HDLUDP.TimeBetwnNext(20);
                        }
                        else
                        {
                            return(false);
                        }

                        //修改设置
                        ArayTmp    = new byte[9];
                        ArayTmp[0] = oTmp.bytSeuID;
                        ArayTmp[1] = oTmp.bytTerms;
                        ArayTmp[2] = oTmp.bytSubID;
                        ArayTmp[3] = oTmp.bytDevID;
                        ArayTmp[4] = oTmp.bytArea;

                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x166C, bytSubID, bytDevID, false, true, true, false) == true)
                        {
                            HDLUDP.TimeBetwnNext(20);
                        }
                        else
                        {
                            return(false);
                        }
                        if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                        {
                            CsConst.calculationWorker.ReportProgress(10 * oTmp.bytSeuID / fireset.Count + 60);
                        }
                    }
                }
                #endregion
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100);
            }
            return(true);
        }
Пример #22
0
        /// <summary>
        ///上传设置
        /// </summary>
        public bool UploadCurtainInfosToDevice(string DevName, int intActivePage)
        {
            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);
            byte[] ArayTmp;
            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);
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(1);
            }

            if (intActivePage == 0)
            {
                // 修改基本信息设备ID bacnet标准设置
                #region
                ArayTmp    = new byte[4];
                ArayTmp[0] = Convert.ToByte(Address >> 24);
                ArayTmp[1] = Convert.ToByte(Address >> 16 & 0x00FF);
                ArayTmp[2] = Convert.ToByte(Address >> 8 & 0x0000FF);
                ArayTmp[3] = Convert.ToByte(Address % 256);
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xBAD0, bytSubID, bytDevID, false, true, true, false) == true)
                {
                    CsConst.myRevBuf = new byte[1200];
                }
                else
                {
                    return(false);
                }
                #endregion

                //bacnet 端口 IP设置
                #region
                ArayTmp = new byte[7];
                if (blnSwitch)
                {
                    ArayTmp[0] = 1;
                }
                ArayTmp[5] = Convert.ToByte(intPort / 256);
                ArayTmp[6] = Convert.ToByte(intPort % 256);
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x180F, bytSubID, bytDevID, false, true, true, false) == true)
                {
                    CsConst.myRevBuf = new byte[1200];
                }
                else
                {
                    return(false);
                }
                #endregion
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(2);
            }
            // 修改转换列表
            if (intActivePage == 0 || intActivePage == 1)
            {
                if (otherInfo != null && otherInfo.Count != 0)
                {
                    byte bytID = 0;
                    if (CsConst.isRestore)
                    {
                        ArayTmp    = new byte[2];
                        ArayTmp[0] = Convert.ToByte(ValidCount / 256);
                        ArayTmp[1] = Convert.ToByte(ValidCount % 256);

                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xBAC8, bytSubID, bytDevID, false, true, true, false) == true)
                        {
                            CsConst.myRevBuf = new byte[1200];
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    #region
                    foreach (OtherInfo oTmp in otherInfo)
                    {
                        ArayTmp    = new byte[65];
                        ArayTmp[0] = oTmp.ID;
                        ArayTmp[1] = oTmp.BackNetIDAry[0];
                        ArayTmp[2] = oTmp.BackNetIDAry[1];
                        ArayTmp[3] = oTmp.BackNetIDAry[2];
                        ArayTmp[4] = oTmp.BackNetIDAry[3];

                        #region
                        switch (oTmp.Type)
                        {
                        case 0x000C:    ///场景 广播场景
                            ArayTmp[5]  = 0x000C % 256;
                            ArayTmp[6]  = 0x000C / 256;
                            ArayTmp[7]  = 0x000D % 256;
                            ArayTmp[8]  = 0x000D / 256;
                            ArayTmp[9]  = 0x0002 % 256;
                            ArayTmp[10] = 0x0002 / 256;
                            ArayTmp[11] = 0x0003 % 256;
                            ArayTmp[12] = 0x0003 / 256;
                            break;

                        case 0xE014:    //序列
                            ArayTmp[5]  = 0xE014 % 256;
                            ArayTmp[6]  = 0xE014 / 256;
                            ArayTmp[7]  = 0xE015 % 256;
                            ArayTmp[8]  = 0xE015 / 256;
                            ArayTmp[9]  = 0x001A % 256;
                            ArayTmp[10] = 0x001A / 256;
                            ArayTmp[11] = 0x001B % 256;
                            ArayTmp[12] = 0x001B / 256;
                            break;

                        case 0x0033:    //单路调节 广播回路
                            ArayTmp[5]  = 0x0033 % 256;
                            ArayTmp[6]  = 0x0033 / 256;
                            ArayTmp[7]  = 0x0034 % 256;
                            ArayTmp[8]  = 0x0034 / 256;
                            ArayTmp[9]  = 0x0031 % 256;
                            ArayTmp[10] = 0x0031 / 256;
                            ArayTmp[11] = 0x0032 % 256;
                            ArayTmp[12] = 0x0032 / 256;
                            break;

                        case 0xE018:    //通用开关
                            ArayTmp[5]  = 0xE018 % 256;
                            ArayTmp[6]  = 0xE018 / 256;
                            ArayTmp[7]  = 0xE019 % 256;
                            ArayTmp[8]  = 0xE019 / 256;
                            ArayTmp[9]  = 0xE01C % 256;
                            ArayTmp[10] = 0xE01C / 256;
                            ArayTmp[11] = 0xE01D % 256;
                            ArayTmp[12] = 0xE01D / 256;
                            break;

                        case 0xF112:    //时间开关
                            ArayTmp[5]  = 0xF112 % 256;
                            ArayTmp[6]  = 0xF112 / 256;
                            ArayTmp[7]  = 0xF113 % 256;
                            ArayTmp[8]  = 0xF113 / 256;
                            ArayTmp[9]  = 0xF116 % 256;
                            ArayTmp[10] = 0xF116 / 256;
                            ArayTmp[11] = 0xF117 % 256;
                            ArayTmp[12] = 0xF117 / 256;
                            break;

                        case 0xE3E2:    //窗帘开关
                            ArayTmp[5]  = 0xE3E2 % 256;
                            ArayTmp[6]  = 0xE3E2 / 256;
                            ArayTmp[7]  = 0xE3E3 % 256;
                            ArayTmp[8]  = 0xE3E3 / 256;
                            ArayTmp[9]  = 0xE3E0 % 256;
                            ArayTmp[10] = 0xE3E0 / 256;
                            ArayTmp[11] = 0xE3E1 % 256;
                            ArayTmp[12] = 0xE3E1 / 256;
                            break;

                        case 0xE3D6:    //GPRS控制
                            ArayTmp[5]  = 0xE3D6 % 256;
                            ArayTmp[6]  = 0xE3D6 / 256;
                            ArayTmp[7]  = 0xE3D7 % 256;
                            ArayTmp[8]  = 0xE3D7 / 256;
                            ArayTmp[9]  = 0xE3D4 % 256;
                            ArayTmp[10] = 0xE3D4 / 256;
                            ArayTmp[11] = 0xE3D5 % 256;
                            ArayTmp[12] = 0xE3D5 / 256;
                            break;

                        case 0xE3DA:    //面板控制
                            ArayTmp[5]  = 0xE3DA % 256;
                            ArayTmp[6]  = 0xE3DA / 256;
                            ArayTmp[7]  = 0xE3DB % 256;
                            ArayTmp[8]  = 0xE3DB / 256;
                            ArayTmp[9]  = 0xE3D8 % 256;
                            ArayTmp[10] = 0xE3D8 / 256;
                            ArayTmp[11] = 0xE3D9 % 256;
                            ArayTmp[12] = 0xE3D9 / 256;
                            break;

                        case 0x011E:    //消防控制
                            ArayTmp[5]  = 0x011E % 256;
                            ArayTmp[6]  = 0x011E / 256;
                            ArayTmp[7]  = 0x011F % 256;
                            ArayTmp[8]  = 0x011F / 256;
                            ArayTmp[9]  = 0x0104 % 256;
                            ArayTmp[10] = 0x0104 / 256;
                            ArayTmp[11] = 0x0105 % 256;
                            ArayTmp[12] = 0x0105 / 256;
                            break;

                        case 0x16A4:    //通用控制
                            ArayTmp[5]  = 0x16A4 % 256;
                            ArayTmp[6]  = 0x16A4 / 256;
                            ArayTmp[7]  = 0x16A5 % 256;
                            ArayTmp[8]  = 0x16A5 / 256;
                            ArayTmp[9]  = 0x16A6 % 256;
                            ArayTmp[10] = 0x16A6 / 256;
                            ArayTmp[11] = 0x16A7 % 256;
                            ArayTmp[12] = 0x16A7 / 256;
                            break;

                        case 0x15CE:    //干接点
                            ArayTmp[5]  = 0x15CE % 256;
                            ArayTmp[6]  = 0x15CE / 256;
                            ArayTmp[7]  = 0x15CF % 256;
                            ArayTmp[8]  = 0x15CF / 256;
                            ArayTmp[9]  = 0x15CE % 256;
                            ArayTmp[10] = 0x15CE / 256;
                            ArayTmp[11] = 0x15CF % 256;
                            ArayTmp[12] = 0x15CF / 256;
                            break;

                        case 0xE440:    //模拟值输出
                            ArayTmp[5]  = 0x40;
                            ArayTmp[6]  = 0xE4;
                            ArayTmp[7]  = 0x41;
                            ArayTmp[8]  = 0xE4;
                            ArayTmp[9]  = 0x42;
                            ArayTmp[10] = 0xE4;
                            ArayTmp[11] = 0x43;
                            ArayTmp[12] = 0xE4;
                            break;

                        case 0xE444:    //模拟量设置
                            ArayTmp[5]  = 0x44;
                            ArayTmp[6]  = 0xE4;
                            ArayTmp[7]  = 0x45;
                            ArayTmp[8]  = 0xE4;
                            ArayTmp[9]  = 0x46;
                            ArayTmp[10] = 0xE4;
                            ArayTmp[11] = 0x47;
                            ArayTmp[12] = 0xE4;
                            break;

                        case 0xE3E7:    //温度读取(1 byte)
                            ArayTmp[5]  = 0xE3E7 % 256;
                            ArayTmp[6]  = 0xE3E7 / 256;
                            ArayTmp[7]  = 0xE3E8 % 256;
                            ArayTmp[8]  = 0xE3E8 / 256;
                            ArayTmp[9]  = 0xE3E5 % 256;
                            ArayTmp[10] = 0xE3E5 / 256;
                            ArayTmp[11] = 0xE3E5 % 256;
                            ArayTmp[12] = 0xE3E5 / 256;
                            break;

                        case 0x1948:    //温度读取(4 byte)
                            ArayTmp[5]  = 0x1948 % 256;
                            ArayTmp[6]  = 0x1948 / 256;
                            ArayTmp[7]  = 0x1949 % 256;
                            ArayTmp[8]  = 0x1949 / 256;
                            ArayTmp[9]  = 0xE3E5 % 256;
                            ArayTmp[10] = 0xE3E5 / 256;
                            ArayTmp[11] = 0xE3E5 % 256;
                            ArayTmp[12] = 0xE3E5 / 256;
                            break;

                        case 0xA008:    //DALI灯状态
                            ArayTmp[5]  = 0xA008 % 256;
                            ArayTmp[6]  = 0xA008 / 256;
                            ArayTmp[7]  = 0xA009 % 256;
                            ArayTmp[8]  = 0xA009 / 256;
                            ArayTmp[9]  = 0xA008 % 256;
                            ArayTmp[10] = 0xA008 / 256;
                            ArayTmp[11] = 0xA009 % 256;
                            ArayTmp[12] = 0xA009 / 256;
                            break;
                        }
                        #endregion
                        ArayTmp[13] = Convert.ToByte(oTmp.strDevName.Split('/')[0].ToString());
                        ArayTmp[14] = Convert.ToByte(oTmp.strDevName.Split('/')[1].ToString());
                        ArayTmp[15] = oTmp.Param1;
                        ArayTmp[16] = oTmp.Param2;
                        ArayTmp[17] = oTmp.Param3;
                        ArayTmp[18] = oTmp.Param4;
                        ArayTmp[20] = 1;
                        ArayTmp[21] = 20;
                        ArayTmp[22] = 0;

                        arayTmpRemark = new byte[40];
                        arayTmpRemark = HDLUDP.StringToByte(oTmp.Remark);
                        if (arayTmpRemark.Length > 40)
                        {
                            Array.Copy(arayTmpRemark, 0, ArayTmp, 23, 40);
                        }
                        else
                        {
                            Array.Copy(arayTmpRemark, 0, ArayTmp, 23, arayTmpRemark.Length);
                        }


                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xBAC2, bytSubID, bytDevID, false, true, true, false) == true)
                        {
                            CsConst.myRevBuf = new byte[1200];
                        }
                        else
                        {
                            return(false);
                        }
                        bytID++;
                        if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                        {
                            CsConst.calculationWorker.ReportProgress(100 / otherInfo.Count * bytID);
                        }
                    }
                    #endregion
                }
            }

            MyRead2UpFlags[1] = true;
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100);
            }
            return(true);
        }
Пример #23
0
        /// <summary>
        /// 上传设置到窗帘模块
        /// </summary>
        /// <param name="DIndex"></param>
        /// <param name="DevID"></param>
        /// <param name="DeviceType"></param>
        /// <param name="DevName"></param>
        /// <returns></returns>
        public bool UploadCurtainInfosToDevice(string DevName, int PageIndex, int DeviceType)
        {
            string strMainRemark = DevName.Split('\\')[1].Trim().Split('(')[0].Trim();
            String TmpDevName    = DevName.Split('\\')[0].Trim();

            //保存basic informations
            byte SubNetID = byte.Parse(TmpDevName.Split('-')[0].ToString());
            byte DeviceID = byte.Parse(TmpDevName.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, SubNetID, DeviceID, false, true, true, false) == false)
            {
                return(false);
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(10, null);
            }
            if (PageIndex == 0 || PageIndex == 1)
            {
                netWork.ModifyNetworkInfomation(SubNetID, DeviceID);
                #region
                byte[] arayTmp = new byte[57];
                arayTmp[0] = bytWorkType;

                arayTmpRemark = HDLUDP.StringToByte(strGroup);
                Array.Copy(arayTmpRemark, 0, arayTmp, 1, arayTmpRemark.Length);
                arayTmpRemark = HDLUDP.StringToByte(strPrjName);
                Array.Copy(arayTmpRemark, 0, arayTmp, 21, arayTmpRemark.Length);
                arayTmpRemark = HDLUDP.StringToByte(strUser);
                Array.Copy(arayTmpRemark, 0, arayTmp, 41, arayTmpRemark.Length);
                arayTmpRemark = HDLUDP.StringToByte(strPWD);
                Array.Copy(arayTmpRemark, 0, arayTmp, 49, arayTmpRemark.Length);

                if (CsConst.mySends.AddBufToSndList(arayTmp, 0x3003, SubNetID, DeviceID, false, true, true, false) == false)
                {
                    return(false);
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(20, null);
                }

                arayTmp = new byte[14];
                string[] strTmp = strServer1.Split('.');
                for (int i = 0; i < 4; i++)
                {
                    arayTmp[i] = byte.Parse(strTmp[i].ToString());
                }
                arayTmp[4] = (byte)(intPort1 / 256);
                arayTmp[5] = (byte)(intPort1 % 256);

                strTmp = strServer2.Split('.');
                for (int i = 0; i < 4; i++)
                {
                    arayTmp[i + 6] = byte.Parse(strTmp[i].ToString());
                }
                arayTmp[10] = (byte)(intPort2 / 256);
                arayTmp[11] = (byte)(intPort2 % 256);
                arayTmp[12] = bytEnDHCP;
                arayTmp[13] = bytTimer;


                if (CsConst.mySends.AddBufToSndList(arayTmp, 0x3005, SubNetID, DeviceID, false, true, true, false) == false)
                {
                    return(false);
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(30, null);
                }
                #endregion
            }

            if (PageIndex == 0 || PageIndex == 2)
            {
                //上传拦截列表
                #region
                byte bytI = 0;
                if (MyBlocks != null)
                {
                    foreach (RFBlock Tmp in MyBlocks)
                    {
                        Tmp.ModifyfBlockSetupInformation(SubNetID, DeviceID, bytI);
                        if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                        {
                            CsConst.calculationWorker.ReportProgress(50 + bytI);
                        }
                        bytI++;
                    }
                }
                #endregion
            }

            if (PageIndex == 0 || PageIndex == 3) // 无线遥控器或者无源开关
            {
                #region
                // 上传无源开关的地址
                byte[] RemoteAddress = new Byte[11];
                RemoteControllers.CopyTo(RemoteAddress, 3);
                if (CsConst.mySends.AddBufToSndList(RemoteAddress, 0xE012, SubNetID, DeviceID, false, true, true, false))
                {
                    return(false);
                }

                Byte ValidRemoteNumber = 4;
                //判断地址是不是全部一样 一样保存一个即可
                if (((RemoteAddress[3] == RemoteAddress[5]) && (RemoteAddress[5] == RemoteAddress[7]) && (RemoteAddress[7] == RemoteAddress[9])) &&
                    ((RemoteAddress[4] == RemoteAddress[6]) && (RemoteAddress[6] == RemoteAddress[8]) && (RemoteAddress[8] == RemoteAddress[10])))
                {
                    ValidRemoteNumber = 1;
                }

                for (Byte i = 0; i < ValidRemoteNumber; i++)
                {
                    //无效地址不保存
                    if (RemoteAddress[3 + i * 2] == 0 && RemoteAddress[4 + i * 2] == 0)
                    {
                        continue;
                    }
                    if (RemoteAddress[3 + i * 2] == 255 && RemoteAddress[4 + i * 2] == 255)
                    {
                        continue;
                    }

                    Byte[] arayKeyMode   = new Byte[IPmoduleDeviceTypeList.HowManyButtonsEachPage];
                    Byte[] arayKeyMutex  = new Byte[IPmoduleDeviceTypeList.HowManyButtonsEachPage];
                    Byte[] arayKeyDimmer = new Byte[IPmoduleDeviceTypeList.HowManyButtonsEachPage];
                    Byte[] arayKeyLED    = new Byte[IPmoduleDeviceTypeList.HowManyButtonsEachPage];

                    for (int j = 0; j < IPmoduleDeviceTypeList.HowManyButtonsEachPage; j++)
                    {
                        HDLButton TmpKey = MyRemoteControllers[i * IPmoduleDeviceTypeList.HowManyButtonsEachPage + j];
                        // key mode and dimmer valid
                        arayKeyMode[TmpKey.ID - 1]   = TmpKey.Mode;
                        arayKeyMutex[TmpKey.ID - 1]  = TmpKey.bytMutex;
                        arayKeyDimmer[TmpKey.ID - 1] = byte.Parse(((TmpKey.IsDimmer << 4) + TmpKey.SaveDimmer).ToString());
                        arayKeyLED[TmpKey.ID - 1]    = (byte)(TmpKey.IsLEDON);

                        if (TmpKey.Mode == 0 || TmpKey.Mode > 30)
                        {
                            continue;
                        }

                        TmpKey.UploadButtonRemarkAndCMDToDevice(SubNetID, DeviceID, DeviceType, i + 1, 255);
                        if (TmpKey.ID + 2 < 15)
                        {
                            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                            {
                                CsConst.calculationWorker.ReportProgress(2 + TmpKey.ID);
                            }
                        }
                    }
                    // upload all key mode
                    if (CsConst.mySends.AddBufToSndList(arayKeyMode, 0xE00A, SubNetID, DeviceID, false, true, true, true) == false)
                    {
                        return(false);
                    }
                    HDLUDP.TimeBetwnNext(64);

                    SaveButtonDimFlagToDeviceFrmBuf(i, SubNetID, DeviceID, DeviceType);
                    CsConst.myRevBuf = new byte[1200];
                }
                #endregion
            }

            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100, null);
            }
            return(true);
        }
Пример #24
0
        public bool UploadInfosToDeviceNetVersion(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[] ArayMain      = new byte[20];
            byte[] arayTmpRemark = HDLUDP.StringToByte(strMainRemark);
            //ruby test
            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);
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(5, null);
            }
            if (intActivePage == 0 || intActivePage == 1)
            {
                byte[] ArayTmp = new byte[8];
                ArayTmp[0] = 0;
                if (Enable)
                {
                    ArayTmp[1] = 1;
                }
                ArayTmp[2] = Convert.ToByte(strIP.Split('.')[0].ToString());
                ArayTmp[3] = Convert.ToByte(strIP.Split('.')[1].ToString());
                ArayTmp[4] = Convert.ToByte(strIP.Split('.')[2].ToString());
                ArayTmp[5] = Convert.ToByte(strIP.Split('.')[3].ToString());
                ArayTmp[6] = Convert.ToByte(Port / 256);
                ArayTmp[7] = Convert.ToByte(Port % 256);
                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1386, bytSubID, bytDevID, false, true, true, false) == true)
                {
                    CsConst.myRevBuf = new byte[1200];
                    HDLUDP.TimeBetwnNext(ArayTmp.Length);
                }
                else
                {
                    return(false);
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(10, null);
                }
                for (int i = 0; i < myACSetting.Count; i++)
                {
                    ArayTmp    = new byte[8];
                    ArayTmp[0] = myACSetting[i].ID;
                    ArayTmp[1] = myACSetting[i].Enable;
                    ArayTmp[2] = myACSetting[i].ACNO;
                    ArayTmp[3] = myACSetting[i].GroupID;
                    if (myACSetting[i].arayACinfo == null || myACSetting[i].arayACinfo.Length < 3)
                    {
                        myACSetting[i].arayACinfo    = new byte[3];
                        myACSetting[i].arayACinfo[0] = 41;
                    }
                    Array.Copy(myACSetting[i].arayACinfo, 0, ArayTmp, 4, 3);
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1386, bytSubID, bytDevID, false, true, true, false) == true)
                    {
                        CsConst.myRevBuf = new byte[1200];
                        HDLUDP.TimeBetwnNext(ArayTmp.Length);
                        if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                        {
                            CsConst.calculationWorker.ReportProgress(10 + i, null);
                        }
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100, null);
            }
            return(true);
        }
Пример #25
0
        /// <summary>
        ///upload all information to IR sender
        /// </summary>
        /// <param name="DIndex"></param>
        /// <param name="DevID"></param>
        /// <param name="DeviceType"></param>
        /// <param name="DevName"></param>
        /// <returns></returns>
        public bool UploadPanelInfosToDevice(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[] ArayMain      = new byte[20];
            byte[] arayTmpRemark = HDLUDP.StringToByte(strMainRemark);
            //ruby test
            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, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == false)
            {
                return(false);
            }

            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(5);
            }
            if (intActivePage == 0 || intActivePage == 1)
            {
                #region
                if (wdDeviceType == 306 || wdDeviceType == 319 || wdDeviceType == 313)
                {
                    byte[] arayTmp = new byte[2];
                    arayTmp[0] = 255;
                    arayTmp[1] = RemoteEnable;
                    if (CsConst.mySends.AddBufToSndList(arayTmp, 0xE01C, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                    {
                        CsConst.myRevBuf = new byte[1200];
                        HDLUDP.TimeBetwnNext(arayTmp.Length);
                    }
                }

                if (IRCodes == null)
                {
                    return(false);
                }
                int count = IRCodes.Count;
                int Int   = 0;
                foreach (UVCMD.IRCode TmpIRcode in IRCodes)
                {
                    Int++;
                    if (TmpIRcode.Codes != "" && TmpIRcode.Codes != null)
                    {
                        string[] strTmp = TmpIRcode.Codes.Split(';');
                        //上传红外码
                        #region
                        byte[] arayTmp1 = new byte[3];
                        arayTmp1[0] = byte.Parse((TmpIRcode.KeyID - 1).ToString());
                        int IRSize = Convert.ToInt32(strTmp[0].Split(' ')[2] + strTmp[0].Split(' ')[3], 16);
                        arayTmp1[1] = byte.Parse((IRSize / 256).ToString());
                        arayTmp1[2] = byte.Parse((IRSize % 256).ToString());    // ask for enough space for IR code
                        if (CsConst.mySends.AddBufToSndList(arayTmp1, 0xD900, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                        {
                            HDLUDP.TimeBetwnNext(arayTmp1.Length);

                            for (int i = 0; i < strTmp.Length; i++)
                            {
                                byte[] arayIR = new byte[16];

                                string[] araystrIR = strTmp[i].Split(' ');
                                for (int j = 0; j < 16; j++)
                                {
                                    arayIR[j] = HDLPF.StringToByte(araystrIR[j].ToString());
                                }
                                if (CsConst.mySends.AddBufToSndList(arayIR, 0xD906, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                                {
                                    HDLUDP.TimeBetwnNext(arayIR.Length);
                                }
                                else
                                {
                                    return(false);
                                }
                            }

                            byte[] arayRemark = new byte[20];
                            string strRemark  = TmpIRcode.Remark1;
                            byte[] arayTmp2   = HDLUDP.StringToByte(strRemark);
                            //arayTmp2.CopyTo(arayRemark, 0);
                            if (arayTmp2.Length > 20)
                            {
                                Array.Copy(arayTmp2, 0, arayRemark, 0, 20);
                            }
                            else
                            {
                                Array.Copy(arayTmp2, 0, arayRemark, 0, arayTmp2.Length);
                            }
                            byte[] araySendIR = new byte[12];
                            araySendIR[0] = byte.Parse((TmpIRcode.KeyID - 1).ToString());
                            araySendIR[1] = 0; //save the remark first time
                            for (int K = 0; K <= 9; K++)
                            {
                                araySendIR[2 + K] = arayRemark[K];
                            }
                            if (CsConst.mySends.AddBufToSndList(araySendIR, 0xD90E, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                            {
                                HDLUDP.TimeBetwnNext(araySendIR.Length);
                            }
                            else
                            {
                                return(false);
                            }

                            araySendIR[1] = 1;    //save the remark then
                            for (int K = 0; K <= 9; K++)
                            {
                                araySendIR[2 + K] = arayRemark[10 + K];
                            }

                            if (CsConst.mySends.AddBufToSndList(araySendIR, 0xD90E, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                            {
                                HDLUDP.TimeBetwnNext(araySendIR.Length);
                            }
                            else
                            {
                                return(false);
                            }
                            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                            {
                                CsConst.calculationWorker.ReportProgress(Int * (90 / count) + 5, null);
                            }
                        }
                        else
                        {
                            return(false);
                        }
                        #endregion
                    }
                }
                #endregion
            }
            if (intActivePage == 0)
            {
                #region
                if (CsConst.isRestore)
                {
                    byte[] ArayTmp = new byte[2];
                    //发送第一个开关
                    ArayTmp[0] = 0;
                    ArayTmp[1] = mbytOne;
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xD960, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                    {
                        HDLUDP.TimeBetwnNext(ArayTmp.Length);
                    }
                    else
                    {
                        return(false);
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(91);
                    }
                    //发送第二个开关
                    ArayTmp[0] = 1;
                    if (mbytTwo != 0)
                    {
                        ArayTmp[1] = mbytTwo;
                    }
                    else
                    {
                        ArayTmp[1] = 0;
                    }
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xD960, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                    {
                        HDLUDP.TimeBetwnNext(ArayTmp.Length);
                    }
                    else
                    {
                        return(false);
                    }
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(92);
                    }
                }
                #endregion
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100);
            }
            return(true);
        }
Пример #26
0
        /// <summary>
        /// 将调光模块设备上传
        /// </summary>
        /// <param name="DIndex"></param>
        /// <param name="DevID"></param>
        /// <param name="DeviceType"></param>
        /// <param name="DevName"></param>
        /// <returns></returns>
        public bool UploadDimmerInfosToDevice(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)
            {
                MessageBox.Show("This module is not online or the address is another one, please check it !!");
                return(false);
            }

            byte bytChID = 1;

            byte[] arayTmp = new byte[16];

            foreach (Chn ch in Chans)
            {                                    // modify the chns remark
                byte[] arayRemark = new byte[8]; // 初始化数组
                arayRemark[0] = bytChID;
                arayRemark[1] = ch.bytTheType;
                arayRemark[2] = ch.bytRValue[0];
                arayRemark[3] = ch.bytRValue[1];
                arayRemark[4] = ch.bytRValue[2];
                arayRemark[5] = ch.bytRValue[3];
                arayRemark[6] = ch.bytRValue[4];
                arayRemark[7] = ch.bytRValue[5];

                CsConst.mySends.AddBufToSndList(arayRemark, 0x1C06, bytSubID, bytDevID, false, true, true, false);
                HDLUDP.TimeBetwnNext(arayRemark.Length);

                if (ch.blnBroadTemp == true)
                {
                    arayTmp[(bytChID - 1) * 4] = 1;
                }
                else
                {
                    arayTmp[(bytChID - 1) * 4] = 0;
                }
                arayTmp[(bytChID - 1) * 4 + 1] = ch.bytSubID;
                arayTmp[(bytChID - 1) * 4 + 2] = ch.bytDevID;
                arayTmp[(bytChID - 1) * 4 + 3] = ch.byAdjustVal;

                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(bytChID * 25, null);
                }
                bytChID++;
            }

            // modify the load type
            CsConst.mySends.AddBufToSndList(arayTmp, 0xF014, bytSubID, bytDevID, false, true, true, false);
            HDLUDP.TimeBetwnNext(arayTmp.Length);
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100, null);
            }
            MyRead2UpFlags[1] = true;
            return(true);
        }
Пример #27
0
        public bool UploadNewIRInfosToDevice(string DevName, int intDeviceType, int intActivePage)
        {
            //保存basic informations
            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.isRestore)
            {
                if (CsConst.mySends.AddBufToSndList(ArayMain, 0x0010, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(intDeviceType)) == true)
                {
                    HDLUDP.TimeBetwnNext(20);
                }
                else
                {
                    return(false);
                }
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(5);
            }
            byte[] ArayTmp = new byte[0];
            if (intActivePage == 0 || intActivePage == 1)
            {
                if (IRCodes != null && IRCodes.Count != 0)
                {
                    #region
                    for (int i = 0; i < IRCodes.Count; i++)  //IRCodes.Count
                    {
                        NewIRCode temp = IRCodes[i];
                        ArayTmp = new byte[26];
                        if (intDeviceType == 1301 || intDeviceType == 1300 || intDeviceType == 6100)
                        {
                            ArayTmp = new byte[27];
                        }
                        ArayTmp[0]    = Convert.ToByte(temp.KeyID);
                        ArayTmp[1]    = 0;
                        ArayTmp[2]    = temp.DevID;
                        ArayTmp[3]    = (byte)(temp.IRIndex / 256);
                        ArayTmp[4]    = (byte)(temp.IRIndex % 256);
                        ArayTmp[5]    = (byte)temp.IRLength;
                        arayTmpRemark = new Byte[20];
                        arayTmpRemark = HDLUDP.StringToByte(temp.Remark);
                        if (arayTmpRemark.Length > 20)
                        {
                            Array.Copy(arayTmpRemark, 0, ArayTmp, 6, 20);
                        }
                        else
                        {
                            Array.Copy(arayTmpRemark, 0, ArayTmp, 6, arayTmpRemark.Length);
                        }

                        if (intDeviceType == 1301 || intDeviceType == 1300)
                        {
                            if (temp.DevID < 4)
                            {
                                ArayTmp[26] = 0;
                            }
                            else
                            {
                                ArayTmp[26] = 1;
                            }
                            if (temp.DevID != 5)
                            {
                                ArayTmp[0] = Convert.ToByte(ArayTmp[0] - 4);
                            }
                        }
                        else if (intDeviceType == 6100)
                        {
                            if (i < 3 && temp.DevID == 255)
                            {
                                ArayTmp[2] = 1;
                            }
                            else if (temp.DevID == 255)
                            {
                                ArayTmp[2] = 0;
                            }
                            // 空调设置标识,固定存储为1
                            if (i < 3)
                            {
                                ArayTmp[26] = 1;
                            }
                            else
                            {
                                ArayTmp[26] = 0;
                            }
                        }

                        if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                        {
                            CsConst.calculationWorker.ReportProgress(5 + i);
                        }
                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x137A, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(intDeviceType)) == true) //请求空间
                        {
                            byte[] arayCodes = GlobalClass.HexToByte(temp.Codes);
                            if (arayCodes.Length > 62)
                            {
                                #region
                                int Count = arayCodes.Length / 62;
                                if (arayCodes.Length % 124 != 0)
                                {
                                    Count = Count + 1;
                                }
                                for (int j = 0; j < Count; j++)
                                {
                                    if (arayCodes.Length % 62 != 0)
                                    {
                                        if (i == (Count - 1))
                                        {
                                            ArayTmp    = new byte[2 + arayCodes.Length % 124];
                                            ArayTmp[0] = Convert.ToByte(temp.KeyID);
                                            ArayTmp[1] = Convert.ToByte(j + 1);
                                            for (int k = 0; k < arayCodes.Length % 62; k++)
                                            {
                                                ArayTmp[2 + k] = arayCodes[j * 62 + k];
                                            }
                                        }
                                        else
                                        {
                                            ArayTmp    = new byte[2 + 62];
                                            ArayTmp[0] = Convert.ToByte(temp.KeyID);
                                            ArayTmp[1] = Convert.ToByte(j + 1);
                                            for (int k = 0; k < 62; k++)
                                            {
                                                ArayTmp[2 + k] = arayCodes[j * 62 + k];
                                            }
                                        }
                                    }
                                    else
                                    {
                                        ArayTmp    = new byte[2 + 62];
                                        ArayTmp[0] = Convert.ToByte(temp.KeyID);
                                        ArayTmp[1] = Convert.ToByte(j + 1);
                                        for (int k = 0; k < 62; k++)
                                        {
                                            ArayTmp[2 + k] = arayCodes[j * 62 + k];
                                        }
                                        ;
                                    }
                                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x137A, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(intDeviceType)) == true)
                                    {
                                    }
                                    else
                                    {
                                        return(false);
                                    }
                                }
                                #endregion
                            }
                            else if (arayCodes.Length > 0)
                            {
                                #region
                                ArayTmp    = new byte[2 + arayCodes.Length];
                                ArayTmp[0] = Convert.ToByte(temp.KeyID);
                                ArayTmp[1] = 1;

                                arayCodes.CopyTo(ArayTmp, 2);
                                // 上传试红外码
                                if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x137A, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(intDeviceType)) == true)
                                {
                                }
                                #endregion
                            }
                        }
                    }
                    #endregion
                }
                if (intDeviceType == 729 || intDeviceType == 1300)
                {
                    ArayTmp = new byte[4];
                    for (int i = 0; i < 4; i++)
                    {
                        ArayTmp[i] = arayBrocast[i];
                    }
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xE0FA, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(intDeviceType)) == true)
                    {
                    }
                    else
                    {
                        return(false);
                    }
                }
                if (intDeviceType == 6100)
                {
                    ArayTmp = new byte[7];
                    for (int i = 0; i < 7; i++)
                    {
                        ArayTmp[i] = arayTime[i];
                    }
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xDA02, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(intDeviceType)) == true)
                    {
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(40);
            }
            if (intActivePage == 0 || intActivePage == 6)
            {
                #region
                if (intDeviceType == 6100)
                {
                    for (int i = 0; i < Clocks.Count; i++)
                    {
                        ArayTmp    = new byte[9];
                        ArayTmp[0] = Clocks[i].ID;
                        ArayTmp[1] = Clocks[i].Enable;
                        ArayTmp[2] = Clocks[i].Type;
                        Array.Copy(Clocks[i].arayParam, 0, ArayTmp, 3, 5);
                        ArayTmp[8] = Clocks[i].SceneID;
                        if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xE46C, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(intDeviceType)) == true)
                        {
                            HDLUDP.TimeBetwnNext(20);
                        }
                        else
                        {
                            return(false);
                        }
                        if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                        {
                            CsConst.calculationWorker.ReportProgress(40 + i);
                        }
                    }
                    if (CsConst.isRestore)
                    {
                        if (Scenes != null && Scenes.Count == 8)
                        {
                            #region
                            for (int i = 1; i <= 8; i++)
                            {
                                Scene temp = Scenes[i - 1];
                                if (temp.Targets != null && temp.Targets.Count > 0)
                                {
                                    foreach (UVCMD.ControlTargets TmpCmd in temp.Targets)
                                    {
                                        if (TmpCmd.Type != 0 && TmpCmd.Type != 255)
                                        {
                                            byte[] arayCMD = new byte[9];
                                            arayCMD[0] = Convert.ToByte(i);
                                            arayCMD[1] = Convert.ToByte(TmpCmd.ID);
                                            arayCMD[2] = TmpCmd.Type;
                                            arayCMD[3] = TmpCmd.SubnetID;
                                            arayCMD[4] = TmpCmd.DeviceID;
                                            arayCMD[5] = TmpCmd.Param1;
                                            arayCMD[6] = TmpCmd.Param2;
                                            arayCMD[7] = TmpCmd.Param3;   // save targets
                                            arayCMD[8] = TmpCmd.Param4;
                                            if (CsConst.mySends.AddBufToSndList(arayCMD, 0x1400, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(intDeviceType)) == true)
                                            {
                                                HDLUDP.TimeBetwnNext(20);
                                            }
                                            else
                                            {
                                                return(false);
                                            }
                                        }
                                    }
                                }
                                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                                {
                                    CsConst.calculationWorker.ReportProgress(60 + i);
                                }
                            }
                            #endregion
                        }
                    }
                }
                #endregion
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100);
            }
            return(true);
        }
Пример #28
0
        public override void UploadMS04ToDevice(string strDevName, int DeviceType, int intActivePage, int num1, int num2)// 0 mean all, else that tab only
        {
            String strTmpDevName = strDevName.Split('\\')[0].Trim();
            byte   bytSubID      = byte.Parse(strTmpDevName.Split('-')[0].ToString());
            byte   bytDevID      = byte.Parse(strTmpDevName.Split('-')[1].ToString());

            try
            {
                base.UploadMS04ToDevice(strDevName, DeviceType, intActivePage, 0, 0);
                if (ChnList == null || ChnList.Count == 0)
                {
                    return;
                }
                int wdMaxValue = ChnList.Count;

                if (intActivePage == 0 || intActivePage == 7 || intActivePage == 8)
                {
                    //修改区域信息
                    #region
                    if (intActivePage == 7 || (intActivePage == 8 && (Areas == null || Areas.Count == 0)))
                    {
                        byte[] arayArea = new byte[wdMaxValue + 3];
                        arayArea[0] = bytSubID;
                        arayArea[1] = bytDevID;

                        if (Areas == null || Areas.Count == 0)
                        {
                            arayArea[2] = 1;
                        }
                        else
                        {
                            arayArea[2] = (byte)Areas.Count;

                            foreach (Channel chn in ChnList)
                            {
                                arayArea[2 + chn.ID] = Convert.ToByte(chn.intBelongs);
                            }
                        }

                        // modify area first or nothing can be go on after that
                        if (CsConst.mySends.AddBufToSndList(arayArea, 0x0006, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == false)
                        {
                            return;
                        }
                        CsConst.myRevBuf = new byte[1200];
                        HDLUDP.TimeBetwnNext(10);
                    }
                    #endregion

                    #region
                    Byte   bytI       = 0;
                    Byte[] arayRemark = new Byte[0];
                    Byte[] bytSceFlag = new Byte[Areas.Count];
                    Byte[] bytSceIDs  = new Byte[Areas.Count];
                    foreach (Area area in Areas)
                    {
                        // modify area remark
                        arayRemark = new byte[21]; // 初始化数组
                        string strRemark = area.Remark;
                        byte[] arayTmp   = HDLUDP.StringToByte(strRemark);
                        arayRemark[0] = area.ID;
                        arayTmp.CopyTo(arayRemark, 1);
                        if (CsConst.mySends.AddBufToSndList(arayRemark, 0xF00C, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == false)
                        {
                            return;
                        }
                        CsConst.myRevBuf = new byte[1200];
                        HDLUDP.TimeBetwnNext(20);

                        if (area.bytDefaultSce != 13)
                        {
                            bytSceFlag[bytI] = 1;
                            bytSceIDs[bytI]  = area.bytDefaultSce;
                        }
                        bytI++;
                        if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                        {
                            CsConst.calculationWorker.ReportProgress(20 + 10 * bytI / Areas.Count);
                        }
                    }
                    if (CsConst.mySends.AddBufToSndList(bytSceFlag, 0xF053, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == false)
                    {
                        return;
                    }
                    CsConst.myRevBuf = new byte[1200];
                    HDLUDP.TimeBetwnNext(20);

                    if (CsConst.mySends.AddBufToSndList(bytSceIDs, 0xF057, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == false)
                    {
                        return;
                    }
                    CsConst.myRevBuf = new byte[1200];
                    HDLUDP.TimeBetwnNext(20);
                    MyRead2UpFlags[6] = true;
                    #endregion
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(30);
                    }

                    if (intActivePage == 8)
                    {
                        foreach (Area area in Areas)
                        {    // scene
                            #region
                            bytI = 1;
                            foreach (Scene scen in area.Scen)
                            {
                                string strRemark = scen.Remark;
                                byte[] arayTmp   = HDLUDP.StringToByte(strRemark);

                                byte[] arayRemark1 = new byte[22];
                                arayRemark1[0] = area.ID;
                                arayRemark1[1] = scen.ID;
                                if (arayTmp != null)
                                {
                                    arayTmp.CopyTo(arayRemark1, 2);
                                }
                                if (CsConst.mySends.AddBufToSndList(arayRemark1, 0xF026, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == false)
                                {
                                    return;
                                }
                                CsConst.myRevBuf = new byte[1200];
                                HDLUDP.TimeBetwnNext(20);

                                // modify scene running time and lights
                                byte[] araySce = new byte[4 + wdMaxValue];
                                araySce[0] = area.ID;
                                araySce[1] = scen.ID;
                                araySce[2] = byte.Parse((scen.Time / 256).ToString());
                                araySce[3] = byte.Parse((scen.Time % 256).ToString());

                                int intTmp = 0;
                                foreach (Channel ch in ChnList)
                                {   //添加所在区域的亮度值
                                    if (ch.intBelongs == area.ID)
                                    {
                                        araySce[4 + intTmp] = scen.light[ch.ID - 1];
                                        intTmp++;
                                    }
                                }

                                if (CsConst.mySends.AddBufToSndList(araySce, 0x0008, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(DeviceType)) == false)
                                {
                                    return;
                                }
                                CsConst.myRevBuf = new byte[1200];
                                HDLUDP.TimeBetwnNext(20);
                                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                                {
                                    CsConst.calculationWorker.ReportProgress(30 + bytI * 10 / area.Scen.Count);
                                }
                                bytI++;
                            }
                            #endregion
                            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                            {
                                CsConst.calculationWorker.ReportProgress(40);
                            }
                        }
                    }
                }
            }
            catch { }

            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100);
            }
        }
Пример #29
0
        public bool UploadInfosToDevice(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());
            int  wdMaxValue = DeviceTypeList.GetMaxValueFromPublicModeGroup(wdDeviceType);

            byte[] arayTmp = new byte[20];

            if (HDLSysPF.ModifyDeviceMainRemark(bytSubID, bytDevID, strMainRemark, wdDeviceType) == true)
            {
                HDLUDP.TimeBetwnNext(20);
            }
            else
            {
                return(false);
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(5, null);
            }
            if (intActivePage == 0 || intActivePage == 1)
            {
                if (strNO == "")
                {
                    strNO = "0000";
                }
                if (strPassword == "")
                {
                    strPassword = "******";
                }
                if (strNO.Length < 4)
                {
                    strNO = GlobalClass.AddLeftZero(strNO, 4);
                }
                if (strPassword.Length < 4)
                {
                    strPassword = GlobalClass.AddLeftZero(strPassword, 6);
                }
                arayTmp = HDLUDP.StringToByte(strNO + strPassword);
                if (CsConst.mySends.AddBufToSndList(arayTmp, 0x352F, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                {
                    HDLUDP.TimeBetwnNext(20);
                }
                else
                {
                    return(false);
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(6, null);
                }


                if (CsConst.mySends.AddBufToSndList(arayBasic, 0x3527, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                {
                    HDLUDP.TimeBetwnNext(20);
                }
                else
                {
                    return(false);
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(6, null);
                }

                arayTmp    = new byte[2];
                arayTmp[0] = arayInfo[0];
                arayTmp[1] = arayInfo[1];
                if (CsConst.mySends.AddBufToSndList(arayTmp, 0x350E, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                {
                    HDLUDP.TimeBetwnNext(20);
                }
                else
                {
                    return(false);
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(7, null);
                }

                arayTmp = new byte[11];
                Array.Copy(arayCall, 0, arayTmp, 0, 11);
                if (CsConst.mySends.AddBufToSndList(arayTmp, 0x138C, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                {
                    HDLUDP.TimeBetwnNext(20);
                }
                else
                {
                    return(false);
                }
                if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                {
                    CsConst.calculationWorker.ReportProgress(8, null);
                }

                arayTmp    = new byte[2];
                arayTmp[0] = arayInfo[3];
                arayTmp[1] = arayInfo[4];
                if (CsConst.mySends.AddBufToSndList(arayTmp, 0x353D, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                {
                    HDLUDP.TimeBetwnNext(20);
                }
                else
                {
                    return(false);
                }

                arayTmp    = new byte[2];
                arayTmp[0] = arayInfo[5];
                arayTmp[1] = arayInfo[6];
                if (CsConst.mySends.AddBufToSndList(arayTmp, 0x3340, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                {
                    HDLUDP.TimeBetwnNext(20);
                }
                else
                {
                    return(false);
                }

                arayTmp = new byte[1] {
                    arayInfo[2]
                };
                if (CsConst.mySends.AddBufToSndList(arayTmp, 0x3535, bytSubID, bytDevID, false, false, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                {
                    HDLUDP.TimeBetwnNext(20);
                }

                arayTmp = new byte[1] {
                    bEnableCard
                };
                if (CsConst.mySends.AddBufToSndList(arayTmp, 0x3346, bytSubID, bytDevID, false, false, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                {
                    HDLUDP.TimeBetwnNext(20);
                }
            }

            if (CsConst.isRestore)
            {
                if (intActivePage == 0 || intActivePage == 2)
                {
                    for (int i = 0; i < MyCardInfo.Count; i++)
                    {
                        if (MyCardInfo[i].CardType != 0 && MyCardInfo[i].CardType != 0xFF)
                        {
                            CardInfo tmp = MyCardInfo[i];
                            arayTmp    = new byte[64];
                            arayTmp[0] = tmp.UIDL;
                            Array.Copy(tmp.UID, 0, arayTmp, 1, tmp.UIDL);
                            arayTmp[11] = tmp.CardType;
                            arayTmp[12] = Convert.ToByte(tmp.CardNum / 256);
                            arayTmp[13] = Convert.ToByte(tmp.CardNum % 256);
                            arayTmp[14] = Convert.ToByte(tmp.BuildingNO / 256);
                            arayTmp[15] = Convert.ToByte(tmp.BuildingNO % 256);
                            arayTmp[16] = Convert.ToByte(tmp.UnitNO / 256);
                            arayTmp[17] = Convert.ToByte(tmp.UnitNO % 256);
                            arayTmp[18] = Convert.ToByte(tmp.RoomNO / 256);
                            arayTmp[19] = Convert.ToByte(tmp.RoomNO % 256);
                            Array.Copy(tmp.arayDate, 0, arayTmp, 20, tmp.arayDate.Length);
                            Array.Copy(tmp.arayName, 0, arayTmp, 25, tmp.arayName.Length);
                            Array.Copy(tmp.arayPhone, 0, arayTmp, 35, tmp.arayPhone.Length);

                            Byte[] arayTmpRemark = HDLUDP.StringToByte(tmp.Remark);
                            if (arayTmpRemark.Length > 18)
                            {
                                Array.Copy(arayTmpRemark, 0, arayTmp, 46, 18);
                            }
                            else
                            {
                                Array.Copy(arayTmpRemark, 0, arayTmp, 46, arayTmpRemark.Length);
                            }

                            if (CsConst.mySends.AddBufToSndList(arayTmp, 0x3518, bytSubID, bytDevID, false, false, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true)
                            {
                                HDLUDP.TimeBetwnNext(20);
                            }
                            else
                            {
                                return(false);
                            }
                            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                            {
                                CsConst.calculationWorker.ReportProgress(15 + i, null);
                            }
                        }
                    }
                }
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100, null);
            }
            return(true);
        }
Пример #30
0
        /// <summary>
        ///上传设置
        /// </summary>
        public bool UploadCurtainInfosToDevice(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);
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(1);
            }
            // 修改基本信息物理地址设置
            byte[]   ArayTmp = new byte[2];
            string[] ArayStr = Address.Split('/').ToArray();

            ArayTmp[0] = Convert.ToByte(Convert.ToByte(ArayStr[0]) << 4 | Convert.ToByte(ArayStr[1]));
            ArayTmp[1] = Convert.ToByte(ArayStr[2]);

            if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xF257, bytSubID, bytDevID, false, true, true, false) == true)
            {
                CsConst.myRevBuf = new byte[1200];
            }
            else
            {
                return(false);
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(2);
            }
            // 修改转换列表
            if (otherInfo != null && otherInfo.Count != 0)
            {
                byte bytID = 0;
                ArayTmp = new byte[11];
                foreach (OtherInfo oTmp in otherInfo)
                {
                    ArayTmp[0] = bytID;
                    ArayStr    = oTmp.GroupAddress.Split('/').ToArray();

                    ArayTmp[1]  = Convert.ToByte(Convert.ToByte(ArayStr[0]) << 3 | Convert.ToByte(ArayStr[1]));
                    ArayTmp[2]  = Convert.ToByte(ArayStr[2]);
                    ArayTmp[3]  = oTmp.Type;
                    ArayTmp[4]  = Convert.ToByte(oTmp.strDevName.Split('/')[0].ToString());
                    ArayTmp[5]  = Convert.ToByte(oTmp.strDevName.Split('/')[1].ToString());
                    ArayTmp[6]  = oTmp.ControlType;
                    ArayTmp[7]  = oTmp.Param1;
                    ArayTmp[8]  = oTmp.Param2;
                    ArayTmp[9]  = oTmp.Param3;
                    ArayTmp[10] = oTmp.Param4;
                    if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xC082, bytSubID, bytDevID, false, true, true, false) == true)
                    {
                        CsConst.myRevBuf = new byte[1200];
                    }
                    else
                    {
                        return(false);
                    }
                    bytID++;
                    if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
                    {
                        CsConst.calculationWorker.ReportProgress(3 + 100 / otherInfo.Count * bytID);
                    }
                }
            }
            if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy)
            {
                CsConst.calculationWorker.ReportProgress(100);
            }
            MyRead2UpFlags[1] = true;
            return(true);
        }