UpdateOBISCodeInformation() public method

Update standard OBIS codes description and type if defined.
public UpdateOBISCodeInformation ( GXDLMSObject target ) : void
target Gurux.DLMS.Objects.GXDLMSObject COSEM object.
return void
 public GXDLMSObjectCollection GetObjects()
 {
     GXLogWriter.WriteLog("--- Collecting objects. ---");
     GXReplyData reply = new GXReplyData(){Peek = false};
     try
     {
         ReadDataBlock(client.GetObjectsRequest(), "Collecting objects", 3, reply);
     }
     catch (Exception Ex)
     {
         throw new Exception("GetObjects failed. " + Ex.Message);
     }
     GXDLMSObjectCollection objs = client.ParseObjects(reply.Data, true);
     //Update OBIS code description.
     GXDLMSConverter c = new GXDLMSConverter();
     c.UpdateOBISCodeInformation(objs);
     GXLogWriter.WriteLog("--- Collecting " + objs.Count.ToString() + " objects. ---");
     return objs;
 }
Esempio n. 2
0
     ParsePush(Object[] data)
 {
     int index;
     GXDLMSObject obj;
     object value;
     DataType dt;
     List<KeyValuePair<GXDLMSObject, int>> items = new List<KeyValuePair<GXDLMSObject, int>>();
     if (data != null)
     {
         GXDLMSConverter c = new GXDLMSConverter();
         GXDLMSObjectCollection objects = new GXDLMSObjectCollection();
         foreach (Object it in (Object[])data[0])
         {
             Object[] tmp = (Object[])it;
             int classID = ((UInt16)(tmp[0])) & 0xFFFF;
             if (classID > 0)
             {
                 GXDLMSObject comp;
                 comp = this.Objects.FindByLN((ObjectType)classID, GXDLMSObject.ToLogicalName(tmp[1] as byte[]));
                 if (comp == null)
                 {
                     comp = GXDLMSClient.CreateDLMSObject(classID, 0, 0, tmp[1], null);
                     c.UpdateOBISCodeInformation(comp);
                     objects.Add(comp);
                 }
                 if ((comp is IGXDLMSBase))
                 {
                     items.Add(new KeyValuePair<GXDLMSObject, int>(comp, (sbyte)tmp[2]));
                 }
                 else
                 {
                     System.Diagnostics.Debug.WriteLine(string.Format("Unknown object : {0} {1}",
                         classID, GXDLMSObject.ToLogicalName((byte[])tmp[1])));
                 }
             }
         }
         for (int pos = 0; pos < data.Length; ++pos)
         {
             obj = items[pos].Key as GXDLMSObject;
             value = data[pos];
             index = items[pos].Value;
             if (value is byte[] && (dt = obj.GetUIDataType(index)) != DataType.None)
             {
                 value = GXDLMSClient.ChangeType(value as byte[], dt);
             }
             ValueEventArgs e = new ValueEventArgs(Settings, obj, index, 0, null);
             e.Value = value;
             (obj as IGXDLMSBase).SetValue(Settings, e);
         }
     }
     return items;
 }