Exemplo n.º 1
0
        /// <summary>
        /// 全年调光计划设置(0x09) 组包
        /// </summary>
        public static byte[] GetBytes_Cmd09(SingleLightDimmingScheme SingleLightDimmingScheme)
        {
            var byteList      = new List <byte>();
            var bytePD        = new List <byte>();
            var bytesDateTime = GetBytes_DateTime(DateTime.Now);

            //Head
            byteList.Add(IotToDevice_HeadByte);

            //FrameType
            byteList.Add(GetByte_DefaultCommandFrameType());

            //Time
            byteList.AddRange(bytesDateTime);

            //UUID
            byteList.AddRange(GetBytes_NewUUID());

            //Cmd
            byteList.Add(0x03);

            //MessageID
            byteList.AddRange(GetBytes_RandMessageID());

            //Ack
            byteList.Add(0x00);

            //PD
            //经度、纬度
            bytePD.AddRange(DataHelper.UIntToByte4((int)(SingleLightDimmingScheme.Lon * 100 * 10000)));
            bytePD.AddRange(DataHelper.UIntToByte4((int)(SingleLightDimmingScheme.Lat * 100 * 10000)));

            //网关时区,例如 +-8
            bytePD.Add((byte)SingleLightDimmingScheme.BaseUtcOffset);

            foreach (var m in SingleLightDimmingScheme.SchemeItems)
            {
                // 夏令时
                if (m.Item_Mode == 7)
                {
                    //模式
                    //bytePD.Add((byte)m.Item_Mode);

                    //周掩码
                    //bytePD.Add((byte)m.Item_Week);

                    //夏令时
                    //if (SingleLightDimmingScheme.RuleForDayLight.IsFixedDateRule)
                    //{
                    //    var hstr = $"{SingleLightDimmingScheme.RuleForDayLight.StartMonth.ToString("X")}"
                    //        + $"{ SingleLightDimmingScheme.RuleForDayLight.StartDay.ToString("X2") }"
                    //        + $"{SingleLightDimmingScheme.RuleForDayLight.EndMonth.ToString("X")}"
                    //        + $"{ SingleLightDimmingScheme.RuleForDayLight.EndDay.ToString("X2") }";
                    //    bytePD.AddRange(DataHelper.HexStringToByte(hstr));
                    //    bytePD.Add((byte)SingleLightDimmingScheme.RuleForDayLight.DaylightDelta);
                    //}
                    //else
                    //{
                    //    var hstr = $"{SingleLightDimmingScheme.RuleForDayLight.StartMonth.ToString("X")}{SingleLightDimmingScheme.RuleForDayLight.StartWeekofMonth.ToString("X")}"
                    //        + $"{SingleLightDimmingScheme.RuleForDayLight.StartDayOfWeek.ToString("X")}{SingleLightDimmingScheme.RuleForDayLight.EndMonth.ToString("X")}"
                    //        + $"{SingleLightDimmingScheme.RuleForDayLight.EndWeekofMonth.ToString("X")}{SingleLightDimmingScheme.RuleForDayLight.EndDayOfWeek.ToString("X")}";
                    //    bytePD.AddRange(DataHelper.HexStringToByte(hstr));
                    //    bytePD.Add((byte)SingleLightDimmingScheme.RuleForDayLight.DaylightDelta);
                    //}
                }
                else
                {
                    bytePD.Add((byte)m.Item_Mode);
                    bytePD.Add((byte)m.Item_Week);
                    bytePD.AddRange(DataHelper.UInt16ToByte2(m.Item_Time));
                    bytePD.Add((byte)m.Item_Channel);
                    bytePD.Add((byte)m.Item_DimmingValue);
                }
            }

            //Length
            byteList.AddRange(DataHelper.UInt16ToByte2(bytePD.Count));

            //PD
            byteList.AddRange(bytePD);

            //CRC
            byteList.AddRange(DataHelper.GetCRC16_2Bytes(byteList.ToArray()));

            //结束标志
            byteList.Add(IotToDevice_TailByte);

            bytePD = null;

            return(byteList.ToArray());
        }
Exemplo n.º 2
0
 public static byte[] GetBytes_SingleLightTimePlan(SingleLightDimmingScheme SingleLightDimmingScheme)
 {
     return(GetBytes_Cmd09(SingleLightDimmingScheme));
 }