Ejemplo n.º 1
0
 public object ReadElementContentAsObject(string name, object defaultValue)
 {
     GetNext();
     if (string.Compare(name, reader.Name, true) == 0)
     {
         object   ret;
         DataType tp = (DataType)Enum.Parse(typeof(DataType), reader.GetAttribute(0));
         if (tp == DataType.Array)
         {
             reader.Read();
             GetNext();
             ret = ReadArray();
             ReadEndElement(name);
             return(ret);
         }
         else
         {
             string str = reader.ReadElementContentAsString();
             ret = GXDLMSConverter.ChangeType(str, tp, CultureInfo.InvariantCulture);
         }
         while (!(reader.NodeType == XmlNodeType.Element || reader.NodeType == XmlNodeType.EndElement))
         {
             reader.Read();
         }
         return(ret);
     }
     return(defaultValue);
 }
        private void OkBtn_Click(object sender, EventArgs e)
        {
            try
            {
                if (TargetCb.SelectedItem == null)
                {
                    throw new Exception("Target is not selected.");
                }
                if (IndexTB.Text == "")
                {
                    throw new Exception("Invalid index.");
                }

                action.Type              = (ScriptActionType)TypeCb.SelectedItem;
                action.Target            = TargetCb.SelectedItem as GXDLMSObject;
                action.Index             = int.Parse(IndexTB.Text);
                action.ParameterDataType = (DataType)ParameterTypeTb.SelectedItem;
                action.Parameter         = GXDLMSConverter.ChangeType(ParameterTb.Text, action.ParameterDataType, null);
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                DialogResult = DialogResult.None;
            }
        }
Ejemplo n.º 3
0
 public object ReadElementContentAsObject(string name, object defaultValue, GXDLMSObject obj, byte index)
 {
     GetNext();
     if (string.Compare(name, reader.Name, true) == 0)
     {
         object   ret;
         DataType uiType;
         DataType dt = (DataType)Enum.Parse(typeof(DataType), reader.GetAttribute(0));
         if (obj != null)
         {
             obj.SetDataType(index, dt);
         }
         if (reader.AttributeCount > 1)
         {
             uiType = (DataType)Enum.Parse(typeof(DataType), reader.GetAttribute(1));
         }
         else
         {
             uiType = dt;
         }
         if (obj != null && obj.GetUIDataType(index) == DataType.None)
         {
             obj.SetUIDataType(index, uiType);
         }
         if (dt == DataType.Array || dt == DataType.Structure)
         {
             reader.Read();
             GetNext();
             ret = ReadArray();
             ReadEndElement(name);
             return(ret);
         }
         else
         {
             string str = reader.ReadElementContentAsString();
             ret = GXDLMSConverter.ChangeType(str, uiType, CultureInfo.InvariantCulture);
         }
         while (!(reader.NodeType == XmlNodeType.Element || reader.NodeType == XmlNodeType.EndElement))
         {
             reader.Read();
         }
         return(ret);
     }
     return(defaultValue);
 }
Ejemplo n.º 4
0
 void IGXDLMSBase.Load(GXXmlReader reader)
 {
     Scripts.Clear();
     if (reader.IsStartElement("Scripts", true))
     {
         while (reader.IsStartElement("Script", true))
         {
             GXDLMSScript it = new GXDLMSScript();
             Scripts.Add(it);
             it.Id = reader.ReadElementContentAsInt("ID");
             if (reader.IsStartElement("Actions", true))
             {
                 while (reader.IsStartElement("Action", true))
                 {
                     GXDLMSScriptAction a = new Objects.GXDLMSScriptAction();
                     a.Type = (ScriptActionType)reader.ReadElementContentAsInt("Type");
                     ObjectType ot = (ObjectType)reader.ReadElementContentAsInt("ObjectType");
                     string     ln = reader.ReadElementContentAsString("LN");
                     a.Index  = reader.ReadElementContentAsInt("Index");
                     a.Target = reader.Objects.FindByLN(ot, ln);
                     if (a.Target == null)
                     {
                         a.Target             = GXDLMSClient.CreateObject(ot);
                         a.Target.LogicalName = ln;
                     }
                     a.ParameterDataType = (DataType)reader.ReadElementContentAsInt("ParameterDataType");
                     a.Parameter         = reader.ReadElementContentAsString("Parameter", null);
                     if (a.ParameterDataType != DataType.None)
                     {
                         a.Parameter = GXDLMSConverter.ChangeType(a.Parameter, a.ParameterDataType, CultureInfo.InvariantCulture);
                     }
                     it.Actions.Add(a);
                 }
                 reader.ReadEndElement("Actions");
             }
         }
         reader.ReadEndElement("Scripts");
     }
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Accept changes.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void OkBtn_Click(object sender, EventArgs e)
 {
     try
     {
         if (ValueTypeTb.SelectedItem == null || (DataType)ValueTypeTb.SelectedItem == DataType.None)
         {
             throw new Exception("Invalid value type.");
         }
         if (ValueTb.Text.Length == 0)
         {
             throw new Exception("Invalid value.");
         }
         byte up, down;
         if (!byte.TryParse(UpSelectorTb.Text, out up))
         {
             throw new Exception("Invalid action up selector.");
         }
         if (!byte.TryParse(DownSelectorTb.Text, out down))
         {
             throw new Exception("Invalid action down selector.");
         }
         if (UpNameCb.SelectedItem == null)
         {
             throw new Exception("Invalid action up script.");
         }
         if (DownNameCb.SelectedItem == null)
         {
             throw new Exception("Invalid action down script.");
         }
         if (Target.Thresholds != null && Index < Target.Thresholds.Length)
         {
             Target.Thresholds[Index] = GXDLMSConverter.ChangeType(ValueTb.Text, (DataType)ValueTypeTb.SelectedItem, null);
         }
         else
         {
             //We are adding new item.
             List <object> thresholds = new List <object>();
             if (Target.Thresholds != null)
             {
                 thresholds.AddRange(Target.Thresholds);
             }
             thresholds.Add(GXDLMSConverter.ChangeType(ValueTb.Text, (DataType)ValueTypeTb.SelectedItem, null));
             Target.Thresholds = thresholds.ToArray();
         }
         GXDLMSActionSet set1;
         if (Target.Actions != null && Index < Target.Actions.Length)
         {
             set1 = Target.Actions[Index];
         }
         else
         {
             //We are adding new item.
             List <GXDLMSActionSet> actions = new List <GXDLMSActionSet>();
             if (Target.Actions != null)
             {
                 actions.AddRange(Target.Actions);
             }
             set1 = new GXDLMSActionSet();
             actions.Add(set1);
             Target.Actions = actions.ToArray();
         }
         set1.ActionUp.LogicalName      = ((GXDLMSObject)UpNameCb.SelectedItem).LogicalName;
         set1.ActionUp.ScriptSelector   = up;
         set1.ActionDown.LogicalName    = ((GXDLMSObject)DownNameCb.SelectedItem).LogicalName;
         set1.ActionDown.ScriptSelector = down;
     }
     catch (Exception ex)
     {
         DialogResult = DialogResult.None;
         MessageBox.Show(this, ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }