Example #1
0
 void IGXDLMSBase.SetValue(GXDLMSSettings settings, ValueEventArgs e)
 {
     if (e.Index == 1)
     {
         LogicalName = GXCommon.ToLogicalName(e.Value);
     }
     else if (e.Index == 2)
     {
         if (e.Value != null)
         {
             string ln = GXCommon.ToLogicalName(((object[])e.Value)[0]);
             Target = (GXDLMSScriptTable)settings.Objects.FindByLN(ObjectType.ScriptTable, ln);
             if (Target == null)
             {
                 Target = new GXDLMSScriptTable(ln);
             }
             ExecutedScriptSelector = Convert.ToUInt16(((object[])e.Value)[1]);
         }
         else
         {
             Target = null;
             ExecutedScriptSelector = 0;
         }
     }
     else if (e.Index == 3)
     {
         Type = (SingleActionScheduleType)Convert.ToInt32(e.Value);
     }
     else if (e.Index == 4)
     {
         ExecutionTime = null;
         if (e.Value != null)
         {
             List <GXDateTime> items = new List <GXDateTime>();
             foreach (object[] it in (object[])e.Value)
             {
                 GXDateTime time = (GXDateTime)GXDLMSClient.ChangeType((byte[])it[0], DataType.Time, settings.UseUtc2NormalTime);
                 time.Skip &= ~(DateTimeSkips.Year | DateTimeSkips.Month | DateTimeSkips.Day | DateTimeSkips.DayOfWeek);
                 GXDateTime date = (GXDateTime)GXDLMSClient.ChangeType((byte[])it[1], DataType.Date, settings.UseUtc2NormalTime);
                 date.Skip &= ~(DateTimeSkips.Hour | DateTimeSkips.Minute | DateTimeSkips.Second | DateTimeSkips.Ms);
                 GXDateTime tmp = new DLMS.GXDateTime(date);
                 tmp.Value = tmp.Value.AddHours(time.Value.Hour);
                 tmp.Value = tmp.Value.AddMinutes(time.Value.Minute);
                 tmp.Value = tmp.Value.AddSeconds(time.Value.Second);
                 tmp.Skip  = date.Skip | time.Skip;
                 items.Add(tmp);
             }
             ExecutionTime = items.ToArray();
         }
     }
     else
     {
         e.Error = ErrorCode.ReadWriteDenied;
     }
 }
        void IGXDLMSBase.SetValue(GXDLMSSettings settings, ValueEventArgs e)
        {
            if (e.Index == 1)
            {
                LogicalName = GXCommon.ToLogicalName(e.Value);
            }
            else if (e.Index == 2)
            {
                if (e.Value != null)
                {
                    List <object> arr;
                    if (e.Value is List <object> )
                    {
                        arr = (List <object>)e.Value;
                    }
                    else
                    {
                        arr = new List <object>((object[])e.Value);
                    }

                    String ln = GXCommon.ToLogicalName(arr[0]);
                    Target = (GXDLMSScriptTable)settings.Objects.FindByLN(ObjectType.ScriptTable, ln);
                    if (Target == null)
                    {
                        Target = new GXDLMSScriptTable(ln);
                    }
                    ExecutedScriptSelector = Convert.ToUInt16(arr[1]);
                }
                else
                {
                    Target = null;
                    ExecutedScriptSelector = 0;
                }
            }
            else if (e.Index == 3)
            {
                Type = (SingleActionScheduleType)Convert.ToInt32(e.Value);
            }
            else if (e.Index == 4)
            {
                ExecutionTime = null;
                if (e.Value != null)
                {
                    List <GXDateTime> items = new List <GXDateTime>();
                    List <object>     it;
                    foreach (object tmp2 in (IEnumerable <object>)e.Value)
                    {
                        if (tmp2 is List <object> )
                        {
                            it = (List <object>)tmp2;
                        }
                        else
                        {
                            it = new List <object>((object[])tmp2);
                        }
                        GXDateTime time;
                        if (it[0] is byte[])
                        {
                            time = (GXDateTime)GXDLMSClient.ChangeType((byte[])it[0], DataType.Time, settings.UseUtc2NormalTime);
                        }
                        else if (it[0] is GXDateTime)
                        {
                            time = (GXDateTime)it[0];
                        }
                        else
                        {
                            throw new Exception("Invalid time.");
                        }
                        time.Skip &= ~(DateTimeSkips.Year | DateTimeSkips.Month | DateTimeSkips.Day | DateTimeSkips.DayOfWeek);
                        GXDateTime date;
                        if (it[1] is byte[])
                        {
                            date = (GXDateTime)GXDLMSClient.ChangeType((byte[])it[1], DataType.Date, settings.UseUtc2NormalTime);
                        }
                        else if (it[1] is GXDateTime)
                        {
                            date = (GXDateTime)it[1];
                        }
                        else
                        {
                            throw new Exception("Invalid date.");
                        }
                        date.Skip &= ~(DateTimeSkips.Hour | DateTimeSkips.Minute | DateTimeSkips.Second | DateTimeSkips.Ms);
                        GXDateTime tmp = new DLMS.GXDateTime(date);
                        tmp.Value = tmp.Value.AddHours(time.Value.Hour);
                        tmp.Value = tmp.Value.AddMinutes(time.Value.Minute);
                        tmp.Value = tmp.Value.AddSeconds(time.Value.Second);
                        tmp.Skip  = date.Skip | time.Skip;
                        items.Add(tmp);
                    }
                    ExecutionTime = items.ToArray();
                }
            }
            else
            {
                e.Error = ErrorCode.ReadWriteDenied;
            }
        }