public static void LoadLanguageFile() { Descriptions.Clear(); var resource = $"AssetViewer.Resources.Assets.Texts_{Language.ToString("G")}.xml"; if (!Assembly.GetExecutingAssembly().GetManifestResourceNames().Contains(resource)) { Language = Data.Languages.English; resource = $"AssetViewer.Resources.Assets.Texts_{Language.ToString("G")}.xml"; } using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resource)) using (var reader = new StreamReader(stream)) { var document = XDocument.Parse(reader.ReadToEnd()).Root; foreach (var item in document.Elements()) { Descriptions.Add(int.Parse(item.Attribute("ID").Value), item.Value); } } }
void IGXDLMSBase.SetValue(GXDLMSSettings settings, ValueEventArgs e) { switch (e.Index) { case 1: LogicalName = GXCommon.ToLogicalName(e.Value); break; case 2: Token = (byte[])e.Value; break; case 3: Time = (GXDateTime)GXDLMSClient.ChangeType((byte[])e.Value, DataType.DateTime, settings.UseUtc2NormalTime); break; case 4: Descriptions.Clear(); if (e.Value != null) { foreach (object it in (object[])e.Value) { Descriptions.Add(ASCIIEncoding.ASCII.GetString((byte[])it)); } } break; case 5: DeliveryMethod = (TokenDelivery)e.Value; break; case 6: StatusCode = (TokenStatusCode)((object[])e.Value)[0]; DataValue = Convert.ToString(((object[])e.Value)[1]); break; default: e.Error = ErrorCode.ReadWriteDenied; break; } }
void IGXDLMSBase.Load(GXXmlReader reader) { Token = GXCommon.HexToBytes(reader.ReadElementContentAsString("Token")); string tmp = reader.ReadElementContentAsString("Time"); if (tmp != null) { Time = new GXDateTime(tmp, System.Globalization.CultureInfo.InvariantCulture); } Descriptions.Clear(); if (reader.IsStartElement("Descriptions", true)) { while (reader.IsStartElement("Item", true)) { Descriptions.Add(reader.ReadElementContentAsString("Name")); } reader.ReadEndElement("Descriptions"); } DeliveryMethod = (TokenDelivery)reader.ReadElementContentAsInt("DeliveryMethod"); StatusCode = (TokenStatusCode)reader.ReadElementContentAsInt("Status"); DataValue = reader.ReadElementContentAsString("Data"); }
void IGXDLMSBase.SetValue(GXDLMSSettings settings, ValueEventArgs e) { switch (e.Index) { case 1: LogicalName = GXCommon.ToLogicalName(e.Value); break; case 2: Token = (byte[])e.Value; break; case 3: if (e.Value is byte[]) { Time = (GXDateTime)GXDLMSClient.ChangeType((byte[])e.Value, DataType.DateTime, settings != null && settings.UseUtc2NormalTime); } else if (e.Value is string) { Time = new GXDateTime((string)e.Value); } else { Time = (GXDateTime)e.Value; } break; case 4: Descriptions.Clear(); if (e.Value != null) { foreach (object it in (IEnumerable <object>)e.Value) { Descriptions.Add(ASCIIEncoding.ASCII.GetString((byte[])it)); } } break; case 5: DeliveryMethod = (TokenDelivery)Convert.ToByte(e.Value); break; case 6: 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); } StatusCode = (TokenStatusCode)Convert.ToInt32(arr[0]); DataValue = Convert.ToString(arr[1]); } else { StatusCode = TokenStatusCode.FormatOk; DataValue = ""; } break; default: e.Error = ErrorCode.ReadWriteDenied; break; } }