/// <summary>
 /// Constructor.
 /// </summary>
 public GXBandDescriptor()
 {
     WorkingDayIntervals = new GXDLMSInterval[5];
     SaturdayIntervals   = new GXDLMSInterval[5];
     HolidayIntervals    = new GXDLMSInterval[5];
     for (int pos = 0; pos != 5; ++pos)
     {
         WorkingDayIntervals[pos] = new GXDLMSInterval();
         SaturdayIntervals[pos]   = new GXDLMSInterval();
         HolidayIntervals[pos]    = new GXDLMSInterval();
     }
 }
        private static void UpdateIntervals(GXDLMSInterval[] intervals, List <object> value)
        {
            int pos = 0;

            foreach (byte it in value)
            {
                GXDLMSInterval interval = intervals[pos];
                ++pos;
                interval.StartHour      = (byte)(it >> 3);
                interval.IntervalTariff = (DefaultTariffBand)((it >> 1) & 0x3);
                interval.UseInterval    = (it & 1) != 0;
            }
        }
        private static void UpdateInterval(GXDLMSInterval interval, byte[] value)
        {
            GXByteBuffer bb = new GXByteBuffer(value);
            byte         b  = bb.GetUInt8();

            interval.StartHour        = (byte)(b & 0x1F);
            interval.IntervalTariff   = (DefaultTariffBand)((b >> 5) & 0x3);
            interval.UseInterval      = (b >> 7) != 0;
            interval.WeeklyActivation = (WeeklyActivation)bb.GetUInt16();
            UInt16 v = bb.GetUInt16();

            interval.SpecialDayMonth   = (byte)(v & 0xF);
            interval.SpecialDay        = (byte)((v >> 8) & 0xF);
            interval.SpecialDayEnabled = (v >> 15) != 0;
        }
        private static void GetInterval(GXDLMSInterval interval, GXByteBuffer data)
        {
            data.SetUInt8((byte)DataType.Array);
            data.SetUInt8(5);
            byte b = interval.StartHour;

            b |= (byte)((byte)interval.IntervalTariff << 5);
            b |= (byte)((interval.UseInterval ? 1 : 0) << 7);
            data.SetUInt8(b);
            data.SetUInt16((UInt16)interval.WeeklyActivation);
            UInt16 v = interval.SpecialDayMonth;

            v |= (UInt16)(interval.SpecialDay << 8);
            v |= (UInt16)((interval.SpecialDayEnabled ? 1 : 0) << 15);
            data.SetUInt16(v);
        }
示例#5
0
 /// <summary>
 /// Constructor.
 /// </summary>
 public GXBandDescriptor()
 {
     WorkingDayIntervals = new GXDLMSInterval();
     SaturdayIntervals   = new GXDLMSInterval();
     HolidayIntervals    = new GXDLMSInterval();
 }