/// <summary> /// Upload all information from hardware /// </summary> /// <param name="DevName"></param> public void UploadSMSFrmDeviceToBuf(string DevName, int wdDeviceType, int intActivePage)// 0 mean all, else that tab only { string strRemark = 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[] arayTmp = HDLUDP.StringToByte(strRemark); if (arayTmp.Length > 20) { Array.Copy(arayTmp, 0, ArayMain, 0, 20); } else { Array.Copy(arayTmp, 0, ArayMain, 0, arayTmp.Length); } if (CsConst.isRestore) { if (CsConst.mySends.AddBufToSndList(ArayMain, 0x0010, bytSubID, bytDevID, false, true, true, false) == true) { HDLUDP.TimeBetwnNext(20); } else { return; } } //save receive message and control HDL devices if (intActivePage == 0 || intActivePage == 1) { #region byte bytID = 0; if (MyControls != null) { foreach (SMSControls oTmpSMS in MyControls) { ArayMain = new byte[871]; //添加备注到缓存 ArayMain[0] = Convert.ToByte(oTmpSMS.ID); strRemark = oTmpSMS.strRemark; byte[] ArayRemark = HDLUDP.StringToByte(strRemark); if (ArayRemark.Length <= 20) { Array.Copy(ArayRemark, 0, ArayMain, 1, ArayRemark.Length); } else { Array.Copy(ArayRemark, 0, ArayMain, 1, 20); } //添加短信内容到缓存 ArayRemark = HDLUDP.StringTo2Byte(oTmpSMS.strSMSContent, true); Array.Copy(ArayRemark, 0, ArayMain, 21, ArayRemark.Length); //添加12组信息到缓存 类似与初始化数据 for (int intI = 0; intI < 12; intI++) { for (int intJ = 0; intJ < 20; intJ++) { ArayMain[53 + intI * 36 + intJ] = 0; } for (int intJ = 0; intJ < 16; intJ++) { ArayMain[73 + intI * 36 + intJ] = 0x45; } } if (oTmpSMS.MyVerify != null) { int intID = 0; foreach (PhoneInF oPhone in oTmpSMS.MyVerify) { ArayRemark = HDLUDP.StringToByte(oPhone.Remark); if (ArayRemark.Length <= 20) { Array.Copy(ArayRemark, 0, ArayMain, 53 + intID * 36, ArayRemark.Length); } else { Array.Copy(ArayRemark, 0, ArayMain, 53 + intID * 36, 20); } ArayRemark = HDLUDP.StringToByte(oPhone.PhoneNum); if (ArayRemark.Length <= 16) { Array.Copy(ArayRemark, 0, ArayMain, 73 + intID * 36, ArayRemark.Length); } else { Array.Copy(ArayRemark, 0, ArayMain, 73 + intID * 36, 16); } intID++; } } //先将48个目标变为无效 for (int intI = 0; intI < 48; intI++) { ArayMain[492 + intI * 8] = 0x55; } if (oTmpSMS.MyTargets != null && oTmpSMS.MyTargets.Count != 0) { int intID = 0; foreach (UVCMD.ControlTargets oCMD in oTmpSMS.MyTargets) { ArayMain[485 + intID * 8] = oCMD.SubnetID; ArayMain[486 + intID * 8] = oCMD.DeviceID; ArayMain[487 + intID * 8] = oCMD.Type; ArayMain[488 + intID * 8] = oCMD.Param1; ArayMain[489 + intID * 8] = oCMD.Param2; ArayMain[490 + intID * 8] = oCMD.Param3; ArayMain[491 + intID * 8] = oCMD.Param4; if (oCMD.IsValid == true) { ArayMain[492 + intID * 8] = 0xAA; } else { ArayMain[492 + intID * 8] = 0x55; } intID++; } } if (oTmpSMS.blnIsVerify) { ArayMain[869] = 0x11; } else { ArayMain[869] = 0x10; } if (oTmpSMS.blnReply) { ArayMain[870] = 0x11; } else { ArayMain[870] = 0x10; } //由于是大包 增加包头处理 arayTmp = new byte[873]; arayTmp[0] = 871 / 256; arayTmp[1] = 871 % 256; Array.Copy(ArayMain, 0, arayTmp, 2, 871); if (CsConst.mySends.AddBufToSndList(arayTmp, 0xC019, bytSubID, bytDevID, true, true, true, false) == true) { HDLUDP.TimeBetwnNext(20); } else { return; } bytID++; if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy) { CsConst.calculationWorker.ReportProgress(bytID / 2, null); } } } #endregion } //// send message when needs if (intActivePage == 0 || intActivePage == 2) { #region if (MySendSMS != null && MySendSMS.Count != 0) { foreach (SendSMS oSend in MySendSMS) { ArayMain = new byte[1794]; // 用于存放数据 // 20 bytes remark byte[] ArayRemark = HDLUDP.StringToByte(oSend.strRemark); if (ArayRemark.Length <= 20) { Array.Copy(ArayRemark, 0, ArayMain, 0, ArayRemark.Length); } else { Array.Copy(ArayRemark, 0, ArayMain, 0, 20); } // 判断接收的手机号码 #region for (int intJ = 0; intJ < 10; intJ++) { ArayMain[200 + intJ * 177] = 0x55; } if (oSend.MyGuests != null && oSend.MyGuests.Count != 0) { int intID = 0; foreach (PhoneInF oPhone in oSend.MyGuests) { if (oPhone.Valid) { ArayMain[200 + intID * 177] = 0xAA; } ArayRemark = HDLUDP.StringToByte(oPhone.Remark); if (ArayRemark.Length <= 20) { Array.Copy(ArayRemark, 0, ArayMain, 24 + intID * 177, ArayRemark.Length); } else { Array.Copy(ArayRemark, 0, ArayMain, 24 + intID * 177, 20); } ArayRemark = HDLUDP.StringToByte(oPhone.PhoneNum); if (ArayRemark.Length <= 16) { Array.Copy(ArayRemark, 0, ArayMain, 44 + intID * 177, ArayRemark.Length); } else { Array.Copy(ArayRemark, 0, ArayMain, 44 + intID * 177, 16); } ArayRemark = HDLUDP.StringTo2Byte(oPhone.strSMS, true); Array.Copy(ArayRemark, 0, ArayMain, 60 + intID * 177, ArayRemark.Length); intID++; } } #endregion //发送数据 byte[] ArayTmp = new byte[602]; ArayTmp[0] = Convert.ToByte(600 / 256); ArayTmp[1] = Convert.ToByte(600 % 256); if (wdDeviceType == 4001) { ArayTmp[2] = Convert.ToByte(oSend.ID); Array.Copy(ArayMain, 0, ArayTmp, 4, 598); if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xC062, bytSubID, bytDevID, true, true, true, false) == true) { HDLUDP.TimeBetwnNext(20); } else { return; } } else { for (int intI = 0; intI < 3; intI++) { ArayTmp[2] = Convert.ToByte(oSend.ID); ArayTmp[3] = Convert.ToByte(intI); Array.Copy(ArayMain, intI * 598, ArayTmp, 4, 598); if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xC062, bytSubID, bytDevID, true, true, true, false) == true) { HDLUDP.TimeBetwnNext(20); } else { return; } } } if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy) { CsConst.calculationWorker.ReportProgress(50 + (oSend.ID / 2), null); } } } #endregion } //更新缓存 arayTmp = null; if (CsConst.mySends.AddBufToSndList(arayTmp, 0xC01B, bytSubID, bytDevID, true, false, true, false) == true) { } if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy) { CsConst.calculationWorker.ReportProgress(100, null); } }
/// <summary> ///上传设置 /// </summary> public bool UploadFHInfosToDevice(string DevName, int wdDeviceType, 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); 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)) == true) { HDLUDP.TimeBetwnNext(20); } else { return(false); } byte[] ArayTmp = null; if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy) { CsConst.calculationWorker.ReportProgress(1); } if (intActivePage == 0 || intActivePage == 1) { #region ArayTmp = new byte[7]; Array.Copy(arayDateTime, 0, ArayTmp, 0, 7); if (CsConst.mySends.AddBufToSndList(ArayTmp, 0xD99C, 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(2); } ArayTmp = new byte[2]; Array.Copy(arayDateTime, 7, ArayTmp, 0, 2); if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1C10, 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(3); } ArayTmp = new byte[17]; Array.Copy(araySummer, 0, ArayTmp, 0, 16); ArayTmp[1] = Convert.ToByte(DateTime.Now.Year / 256); ArayTmp[2] = Convert.ToByte(DateTime.Now.Year % 256); ArayTmp[4] = HDLSysPF.GetDayofMonth(ArayTmp[3], ArayTmp[7], Convert.ToByte(ArayTmp[6] + 1)); ArayTmp[9] = Convert.ToByte(DateTime.Now.Year / 256); ArayTmp[10] = Convert.ToByte(DateTime.Now.Year % 256); ArayTmp[12] = HDLSysPF.GetDayofMonth(ArayTmp[11], ArayTmp[15], Convert.ToByte(ArayTmp[14] + 1)); if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1D18, 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(4); } if (CsConst.isRestore) { if (wdDeviceType == 211 || wdDeviceType == 208 || wdDeviceType == 209) { ArayTmp = new byte[4]; Array.Copy(arayOutdoor, 0, ArayTmp, 0, 4); if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1D04, 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(5); } #endregion } if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy) { CsConst.calculationWorker.ReportProgress(10); } if (intActivePage == 0 || intActivePage == 2) { #region if (myHeating != null) { for (int i = 0; i < myHeating.Count; i++) { FHeating temp = myHeating[i]; ArayTmp[0] = temp.ID; arayTmpRemark = HDLUDP.StringTo2Byte(temp.strRemark, true); if (arayTmpRemark.Length > 20) { Array.Copy(arayTmpRemark, 0, ArayTmp, 1, 20); } else { Array.Copy(arayTmpRemark, 0, ArayTmp, 1, arayTmpRemark.Length); } if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1D00, 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 + i * 5 + 1); } ArayTmp = new byte[10]; ArayTmp[0] = temp.ID; Array.Copy(temp.arayWorkControl, 0, ArayTmp, 1, 7); if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1C5C, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true) { Array.Copy(CsConst.myRevBuf, 26, temp.arayWorkControl, 0, 13); HDLUDP.TimeBetwnNext(1); } else { return(false); } if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy) { CsConst.calculationWorker.ReportProgress(10 + i * 5 + 2); } ArayTmp = new byte[18]; ArayTmp[0] = temp.ID; Array.Copy(temp.araySensorSetting, 0, ArayTmp, 1, 17); if (wdDeviceType == 210) { ArayTmp = new byte[14]; Array.Copy(temp.araySensorSetting, 0, ArayTmp, 1, 13); } if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1C54, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true) { HDLUDP.TimeBetwnNext(20); } else { return(false); } if (wdDeviceType == 211 || wdDeviceType == 208 || wdDeviceType == 209) { ArayTmp = new byte[2]; ArayTmp[0] = temp.ID; Array.Copy(temp.arayWorkSetting, 10, ArayTmp, 0, 1); if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1D08, 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 + i * 5 + 3); } ArayTmp = new byte[11]; ArayTmp[0] = temp.ID; Array.Copy(temp.arayWorkSetting, 0, ArayTmp, 1, 10); if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1C58, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true) { HDLUDP.TimeBetwnNext(20); } else { return(false); } ArayTmp = new byte[12]; ArayTmp[0] = temp.ID; Array.Copy(temp.arayFlush, 0, ArayTmp, 1, 11); if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1C60, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true) { HDLUDP.TimeBetwnNext(20); } else { return(false); } } } #endregion } if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy) { CsConst.calculationWorker.ReportProgress(40); } if (intActivePage == 0 || intActivePage == 3) { #region ArayTmp = new byte[6]; Array.Copy(araySynChannel, 0, ArayTmp, 0, 6); if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1C6c, 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(41); } ArayTmp = new byte[15]; Array.Copy(arayHost, 0, ArayTmp, 0, 15); if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1CE4, 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(42); } #endregion } if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy) { CsConst.calculationWorker.ReportProgress(50); } if (intActivePage == 0 || intActivePage == 4 || intActivePage == 6) { #region if (CsConst.isRestore) { if (myTargets1 != null) { for (int i = 0; i < myTargets1.Count; i++) { FHTargets temp = myTargets1[i]; ArayTmp = new byte[10]; ArayTmp[0] = temp.ID; ArayTmp[1] = temp.StatusIndex; for (int j = 0; j < temp.Targets.Count; j++) { ArayTmp[2] = temp.Targets[j].ID; ArayTmp[3] = temp.Targets[j].Type; ArayTmp[4] = temp.Targets[j].SubnetID; ArayTmp[5] = temp.Targets[j].DeviceID; ArayTmp[6] = temp.Targets[j].Param1; ArayTmp[7] = temp.Targets[j].Param2; ArayTmp[8] = temp.Targets[j].Param3; ArayTmp[9] = temp.Targets[j].Param4; if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1CE0, 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(50 + i); } } } } #endregion } if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy) { CsConst.calculationWorker.ReportProgress(60); } if (intActivePage == 0 || intActivePage == 5 || intActivePage == 6) { #region if (CsConst.isRestore) { if (myTargets2 != null) { for (int i = 0; i < myTargets2.Count; i++) { FHTargets temp = myTargets2[i]; ArayTmp = new byte[10]; ArayTmp[0] = temp.ID; ArayTmp[1] = temp.StatusIndex; for (int j = 0; j < temp.Targets.Count; j++) { ArayTmp[2] = temp.Targets[j].ID; ArayTmp[3] = temp.Targets[j].Type; ArayTmp[4] = temp.Targets[j].SubnetID; ArayTmp[5] = temp.Targets[j].DeviceID; ArayTmp[6] = temp.Targets[j].Param1; ArayTmp[7] = temp.Targets[j].Param2; ArayTmp[8] = temp.Targets[j].Param3; ArayTmp[9] = temp.Targets[j].Param4; if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1CE0, 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(60 + i); } } } } #endregion } if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy) { CsConst.calculationWorker.ReportProgress(70); } if (intActivePage == 0 || intActivePage == 7) { #region if (myPumps != null) { ArayTmp = new byte[1]; ArayTmp[0] = PumpsEnable; if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1D20, bytSubID, bytDevID, false, true, true, CsConst.minAllWirelessDeviceType.Contains(wdDeviceType)) == true) { HDLUDP.TimeBetwnNext(20); } else { return(false); } for (int i = 0; i < myPumps.Count; i++) { Pumps temp = myPumps[i]; ArayTmp = new byte[7]; ArayTmp[0] = temp.ID; ArayTmp[1] = temp.Enable; ArayTmp[2] = temp.ChooseChns; if (temp.ID == 6) { ArayTmp[2] = 63; } ArayTmp[3] = Convert.ToByte(temp.TrueDelay / 256); ArayTmp[4] = Convert.ToByte(temp.TrueDelay % 256); ArayTmp[5] = Convert.ToByte(temp.FalseDelay / 256); ArayTmp[6] = Convert.ToByte(temp.FalseDelay % 256); if (CsConst.mySends.AddBufToSndList(ArayTmp, 0x1D24, 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(70 + i); } } } #endregion } if (CsConst.calculationWorker != null && CsConst.calculationWorker.IsBusy) { CsConst.calculationWorker.ReportProgress(100); } return(true); }