Пример #1
0
 private static void UpdateOBISCodeInfo(GXStandardObisCodeCollection codes, GXDLMSObject it)
 {
     if (!string.IsNullOrEmpty(it.Description))
     {
         return;
     }
     GXStandardObisCode code = codes.Find(it.LogicalName, it.ObjectType)[0];
     it.Description = code.Description;
     //If string is used
     if (code.DataType.Contains("10"))
     {
         code.UIDataType = "10";
     }
     //If date time is used.
     else if (code.DataType.Contains("25") || code.DataType.Contains("26"))
     {
         code.UIDataType = code.DataType = "25";
     }
     //Time stamps of the billing periods objects (first scheme if there are two)
     else if (code.DataType.Contains("9"))
     {
         if ((GXStandardObisCodeCollection.EqualsMask("0.0-64.96.7.10-14.255", it.LogicalName) ||
                 //Time stamps of the billing periods objects (second scheme)
                 GXStandardObisCodeCollection.EqualsMask("0.0-64.0.1.5.0-99,255", it.LogicalName) ||
                 //Time of power failure
                 GXStandardObisCodeCollection.EqualsMask("0.0-64.0.1.2.0-99,255", it.LogicalName) ||
                 //Time stamps of the billing periods objects (first scheme if there are two)
                 GXStandardObisCodeCollection.EqualsMask("1.0-64.0.1.2.0-99,255", it.LogicalName) ||
                 //Time stamps of the billing periods objects (second scheme)
                 GXStandardObisCodeCollection.EqualsMask("1.0-64.0.1.5.0-99,255", it.LogicalName) ||
                 //Time expired since last end of billing period
                 GXStandardObisCodeCollection.EqualsMask("1.0-64.0.9.0.255", it.LogicalName) ||
                 //Time of last reset
                 GXStandardObisCodeCollection.EqualsMask("1.0-64.0.9.6.255", it.LogicalName) ||
                 //Date of last reset
                 GXStandardObisCodeCollection.EqualsMask("1.0-64.0.9.7.255", it.LogicalName) ||
                 //Time expired since last end of billing period (Second billing period scheme)
                 GXStandardObisCodeCollection.EqualsMask("1.0-64.0.9.13.255", it.LogicalName) ||
                 //Time of last reset (Second billing period scheme)
                 GXStandardObisCodeCollection.EqualsMask("1.0-64.0.9.14.255", it.LogicalName) ||
                 //Date of last reset (Second billing period scheme)
                 GXStandardObisCodeCollection.EqualsMask("1.0-64.0.9.15.255", it.LogicalName)))
         {
             code.UIDataType = "25";
         }
         //Local time
         else if (GXStandardObisCodeCollection.EqualsMask("1.0-64.0.9.1.255", it.LogicalName))
         {
             code.UIDataType = "27";
         }
         //Local date
         else if (GXStandardObisCodeCollection.EqualsMask("1.0-64.0.9.2.255", it.LogicalName))
         {
             code.UIDataType = "26";
         }
         //Active firmware identifier
         else if (GXStandardObisCodeCollection.EqualsMask("1.0.0.2.0.255", it.LogicalName))
         {
             code.UIDataType = "10";
         }
     }
     if (code.DataType != "*" && code.DataType != string.Empty && !code.DataType.Contains(","))
     {
         DataType type = (DataType)int.Parse(code.DataType);
         switch (it.ObjectType)
         {
             case ObjectType.Data:
             case ObjectType.Register:
             case ObjectType.RegisterActivation:
             case ObjectType.ExtendedRegister:
                 it.SetDataType(2, type);
                 break;
             default:
                 break;
         }
     }
     if (!string.IsNullOrEmpty(code.UIDataType))
     {
         DataType uiType = (DataType)int.Parse(code.UIDataType);
         switch (it.ObjectType)
         {
             case ObjectType.Data:
             case ObjectType.Register:
             case ObjectType.RegisterActivation:
             case ObjectType.ExtendedRegister:
                 it.SetUIDataType(2, uiType);
                 break;
             default:
                 break;
         }
     }
 }
Пример #2
0
 internal static void UpdateOBISCodes(GXDLMSObjectCollection objects)
 {
     GXStandardObisCodeCollection codes = new GXStandardObisCodeCollection();
     string[] rows = Gurux.DLMS.Properties.Resources.OBISCodes.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
     foreach (string it in rows)
     {
         string[] items = it.Split(new char[] { ';' });
         string[] obis = items[0].Split(new char[] { '.' });
         GXStandardObisCode code = new GXStandardObisCode(obis, items[3] + "; " + items[4] + "; " +
             items[5] + "; " + items[6] + "; " + items[7], items[1], items[2]);
         codes.Add(code);
     }
     foreach (GXDLMSObject it in objects)
     {
         if (!string.IsNullOrEmpty(it.Description))
         {
             continue;
         }
         GXStandardObisCode code = codes.Find(it.LogicalName, it.ObjectType);                
         if (code != null)
         {                    
             it.Description = code.Description;
             //If string is used
             if (code.DataType.Contains("10"))
             {
                 code.UIDataType = "10";
             }
             //If date time is used.
             else if (code.DataType.Contains("25") || code.DataType.Contains("26"))
             {
                 code.UIDataType = code.DataType = "25";
             }                    
             //Time stamps of the billing periods objects (first scheme if there are two)
             else if (code.DataType.Contains("9"))
             {
                 if ((GXStandardObisCodeCollection.EqualsMask("0.0-64.96.7.10-14.255", it.LogicalName) ||
                     //Time stamps of the billing periods objects (second scheme)
                 GXStandardObisCodeCollection.EqualsMask("0.0-64.0.1.5.0-99,255", it.LogicalName) ||
                     //Time of power failure
                 GXStandardObisCodeCollection.EqualsMask("0.0-64.0.1.2.0-99,255", it.LogicalName) ||
                     //Time stamps of the billing periods objects (first scheme if there are two)                        
                 GXStandardObisCodeCollection.EqualsMask("1.0-64.0.1.2.0-99,255", it.LogicalName) ||
                     //Time stamps of the billing periods objects (second scheme)
                 GXStandardObisCodeCollection.EqualsMask("1.0-64.0.1.5.0-99,255", it.LogicalName) ||
                     //Time expired since last end of billing period
                 GXStandardObisCodeCollection.EqualsMask("1.0-64.0.9.0.255", it.LogicalName) ||
                     //Time of last reset
                 GXStandardObisCodeCollection.EqualsMask("1.0-64.0.9.6.255", it.LogicalName) ||
                     //Date of last reset
                 GXStandardObisCodeCollection.EqualsMask("1.0-64.0.9.7.255", it.LogicalName) ||
                     //Time expired since last end of billing period (Second billing period scheme)
                 GXStandardObisCodeCollection.EqualsMask("1.0-64.0.9.13.255", it.LogicalName) ||
                     //Time of last reset (Second billing period scheme)
                 GXStandardObisCodeCollection.EqualsMask("1.0-64.0.9.14.255", it.LogicalName) ||
                     //Date of last reset (Second billing period scheme)
                 GXStandardObisCodeCollection.EqualsMask("1.0-64.0.9.15.255", it.LogicalName)))
                 {
                     code.UIDataType = "25";
                 }
                 //Local time
                 else if (GXStandardObisCodeCollection.EqualsMask("1.0-64.0.9.1.255", it.LogicalName))
                 {
                     code.UIDataType = "27";
                 }
                 //Local date
                 else if (GXStandardObisCodeCollection.EqualsMask("1.0-64.0.9.2.255", it.LogicalName))
                 {
                     code.UIDataType = "26";
                 }
                 //Active firmware identifier
                 else if (GXStandardObisCodeCollection.EqualsMask("1.0.0.2.0.255", it.LogicalName))
                 {
                     code.UIDataType = "10";
                 }
             }
             if (code.DataType != "*" && code.DataType != string.Empty && !code.DataType.Contains(","))
             {
                 DataType type = (DataType)int.Parse(code.DataType);                       
                 switch (it.ObjectType)
                 {                            
                     case ObjectType.Data:
                     case ObjectType.Register:
                     case ObjectType.RegisterActivation:
                     case ObjectType.ExtendedRegister:
                         it.SetDataType(2, type);
                         break;
                     default:
                         break;
                 }                        
             }                    
             if (!string.IsNullOrEmpty(code.UIDataType))
             {
                 DataType uiType = (DataType)int.Parse(code.UIDataType);
                 switch (it.ObjectType)
                 {
                     case ObjectType.Data:
                     case ObjectType.Register:
                     case ObjectType.RegisterActivation:
                     case ObjectType.ExtendedRegister:
                         it.SetUIDataType(2, uiType);
                         break;
                     default:
                         break;
                 }                      
             }                    
         }
         else
         {
             System.Diagnostics.Debug.WriteLine("Unknown OBIS Code: " + it.LogicalName + " Type: " + it.ObjectType);
         }
     }
 }
Пример #3
0
 /// <summary>
 /// Read standard OBIS code information from the file.
 /// </summary>
 /// <param name="codes">Collection of standard OBIS codes.</param>
 private static void ReadStandardObisInfo(GXStandardObisCodeCollection codes)
 {
     string[] rows = Gurux.DLMS.Properties.Resources.OBISCodes.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
     foreach (string it in rows)
     {
         string[] items = it.Split(new char[] { ';' });
         string[] obis = items[0].Split(new char[] { '.' });
         GXStandardObisCode code = new GXStandardObisCode(obis, items[3] + "; " + items[4] + "; " +
                 items[5] + "; " + items[6] + "; " + items[7], items[1], items[2]);
         codes.Add(code);
     }
 }