示例#1
0
 private void LoadKeyTable(GXXmlReader reader)
 {
     KeyTable.Clear();
     if (reader.IsStartElement("KeyTable", true))
     {
         while (reader.IsStartElement("Item", true))
         {
             byte   k = (byte)reader.ReadElementContentAsInt("Key");
             byte[] d = GXDLMSTranslator.HexToBytes(reader.ReadElementContentAsString("Data"));
             KeyTable.Add(new GXKeyValuePair <byte, byte[]>(k, d));
         }
         reader.ReadEndElement("KeyTable");
     }
 }
示例#2
0
        private IPAddress[] LoadIPAddress(GXXmlReader reader, string name)
        {
            List <IPAddress> list = new List <IPAddress>();

            if (reader.IsStartElement(name, true))
            {
                while (reader.IsStartElement("Value", false))
                {
                    list.Add(IPAddress.Parse(reader.ReadElementContentAsString("Value")));
                }
                reader.ReadEndElement(name);
            }
            return(list.ToArray());
        }
 private void LoadBlacklistTable(GXXmlReader reader)
 {
     BlacklistTable.Clear();
     if (reader.IsStartElement("BlacklistTable", true))
     {
         while (reader.IsStartElement("Item", false))
         {
             ushort k = (ushort)reader.ReadElementContentAsInt("Key");
             ushort v = (ushort)reader.ReadElementContentAsInt("Value");
             BlacklistTable.Add(new GXKeyValuePair <ushort, ushort>(k, v));
         }
         reader.ReadEndElement("BlacklistTable");
     }
 }
示例#4
0
 private void LoadBlacklistTable(GXXmlReader reader)
 {
     BlacklistTable.Clear();
     if (reader.IsStartElement("BlacklistTable", true))
     {
         while (reader.IsStartElement("Item", false))
         {
             UInt16 k = (UInt16)reader.ReadElementContentAsInt("Key");
             UInt16 v = (UInt16)reader.ReadElementContentAsInt("Value");
             BlacklistTable.Add(new GXKeyValuePair <UInt16, UInt16>(k, v));
         }
         reader.ReadEndElement("BlacklistTable");
     }
 }
        private void LoadGroupTable(GXXmlReader reader)
        {
            List <ushort> list = new List <ushort>();

            if (reader.IsStartElement("GroupTable", true))
            {
                while (reader.IsStartElement("Value", false))
                {
                    list.Add((ushort)reader.ReadElementContentAsInt("Value"));
                }
                reader.ReadEndElement("GroupTable");
            }
            GroupTable = list.ToArray();
        }
示例#6
0
        private Int16[] LoadSwitchTable(GXXmlReader reader)
        {
            List <Int16> list = new List <Int16>();

            if (reader.IsStartElement("SwitchTable", true))
            {
                while (reader.IsStartElement("Item", false))
                {
                    list.Add((Int16)reader.ReadElementContentAsInt("Item"));
                }
                reader.ReadEndElement("SwitchTable");
            }
            return(list.ToArray());
        }
        private void LoadPrefixTable(GXXmlReader reader)
        {
            List <object> list = new List <object>();

            if (reader.IsStartElement("PrefixTable", true))
            {
                while (reader.IsStartElement("Value", false))
                {
                    list.Add(reader.ReadElementContentAsObject("Value", null));
                }
                reader.ReadEndElement("PrefixTable");
            }
            PrefixTable = list.ToArray();
        }
示例#8
0
 void IGXDLMSBase.Load(GXXmlReader reader)
 {
     SapAssignmentList.Clear();
     if (reader.IsStartElement("SapAssignmentList", true))
     {
         while (reader.IsStartElement("Item", true))
         {
             UInt16 sap = (UInt16)reader.ReadElementContentAsInt("SAP");
             string ldn = reader.ReadElementContentAsString("LDN");
             SapAssignmentList.Add(new KeyValuePair <UInt16, string>(sap, ldn));
         }
         reader.ReadEndElement("SapAssignmentList");
     }
 }
        void IGXDLMSBase.Load(GXXmlReader reader)
        {
            ClientSAP = (byte)reader.ReadElementContentAsInt("ClientSAP");
            ServerSAP = (byte)reader.ReadElementContentAsInt("ServerSAP");
            if (reader.IsStartElement("ApplicationContextName", true))
            {
                ApplicationContextName.JointIsoCtt            = (byte)reader.ReadElementContentAsInt("JointIsoCtt");
                ApplicationContextName.Country                = (byte)reader.ReadElementContentAsInt("Country");
                ApplicationContextName.CountryName            = (UInt16)reader.ReadElementContentAsInt("CountryName");
                ApplicationContextName.IdentifiedOrganization = (byte)reader.ReadElementContentAsInt("IdentifiedOrganization");
                ApplicationContextName.DlmsUA             = (byte)reader.ReadElementContentAsInt("DlmsUA");
                ApplicationContextName.ApplicationContext = (byte)reader.ReadElementContentAsInt("ApplicationContext");
                ApplicationContextName.ContextId          = (byte)reader.ReadElementContentAsInt("ContextId");
                reader.ReadEndElement("ApplicationContextName");
            }

            if (reader.IsStartElement("XDLMSContextInfo", true))
            {
                XDLMSContextInfo.Conformance       = (Conformance)reader.ReadElementContentAsInt("Conformance");
                XDLMSContextInfo.MaxReceivePduSize = (UInt16)reader.ReadElementContentAsInt("MaxReceivePduSize");
                XDLMSContextInfo.MaxSendPduSize    = (UInt16)reader.ReadElementContentAsInt("MaxSendPduSize");
                XDLMSContextInfo.DlmsVersionNumber = (byte)reader.ReadElementContentAsInt("DlmsVersionNumber");
                XDLMSContextInfo.QualityOfService  = (sbyte)reader.ReadElementContentAsInt("QualityOfService");
                XDLMSContextInfo.CypheringInfo     = GXDLMSTranslator.HexToBytes(reader.ReadElementContentAsString("CypheringInfo"));
                reader.ReadEndElement("XDLMSContextInfo");
            }
            if (reader.IsStartElement("XDLMSContextInfo", true))
            {
                AuthenticationMechanismName.JointIsoCtt            = (byte)reader.ReadElementContentAsInt("JointIsoCtt");
                AuthenticationMechanismName.Country                = (byte)reader.ReadElementContentAsInt("Country");
                AuthenticationMechanismName.CountryName            = (UInt16)reader.ReadElementContentAsInt("CountryName");
                AuthenticationMechanismName.IdentifiedOrganization = (byte)reader.ReadElementContentAsInt("IdentifiedOrganization");
                AuthenticationMechanismName.DlmsUA = (byte)reader.ReadElementContentAsInt("DlmsUA");
                AuthenticationMechanismName.AuthenticationMechanismName = (byte)reader.ReadElementContentAsInt("AuthenticationMechanismName");
                AuthenticationMechanismName.MechanismId = (Authentication)reader.ReadElementContentAsInt("MechanismId");
                reader.ReadEndElement("XDLMSContextInfo");
            }
            string str = reader.ReadElementContentAsString("Secret");

            if (str == null)
            {
                Secret = null;
            }
            else
            {
                Secret = GXDLMSTranslator.HexToBytes(str);
            }
            AssociationStatus      = (AssociationStatus)reader.ReadElementContentAsInt("AssociationStatus");
            SecuritySetupReference = reader.ReadElementContentAsString("SecuritySetupReference");
        }
示例#10
0
        void IGXDLMSBase.Load(GXXmlReader reader)
        {
            DataLinkLayerReference = reader.ReadElementContentAsString("DataLinkLayerReference");
            IPAddress = reader.ReadElementContentAsString("IPAddress");
            List <string> list = new List <string>();

            if (reader.IsStartElement("MulticastIPAddress", true))
            {
                while (reader.IsStartElement("Value", false))
                {
                    list.Add(reader.ReadElementContentAsString("Value"));
                }
                reader.ReadEndElement("MulticastIPAddress");
            }
            MulticastIPAddress = list.ToArray();

            List <GXDLMSIp4SetupIpOption> ipOptions = new List <GXDLMSIp4SetupIpOption>();

            if (reader.IsStartElement("IPOptions", true))
            {
                while (reader.IsStartElement("IPOptions", true))
                {
                    GXDLMSIp4SetupIpOption it = new GXDLMSIp4SetupIpOption();
                    it.Type   = (Ip4SetupIpOptionType)reader.ReadElementContentAsInt("Type");
                    it.Length = (byte)reader.ReadElementContentAsInt("Length");
                    it.Data   = GXDLMSTranslator.HexToBytes(reader.ReadElementContentAsString("Data"));
                    ipOptions.Add(it);
                }
                reader.ReadEndElement("IPOptions");
            }
            IPOptions        = ipOptions.ToArray();
            SubnetMask       = reader.ReadElementContentAsString("SubnetMask");
            GatewayIPAddress = reader.ReadElementContentAsString("GatewayIPAddress");
            if (string.IsNullOrEmpty(GatewayIPAddress))
            {
                GatewayIPAddress = "0.0.0.0";
            }
            UseDHCP           = reader.ReadElementContentAsInt("UseDHCP") != 0;
            PrimaryDNSAddress = reader.ReadElementContentAsString("PrimaryDNSAddress");
            if (string.IsNullOrEmpty(PrimaryDNSAddress))
            {
                PrimaryDNSAddress = "0.0.0.0";
            }
            SecondaryDNSAddress = reader.ReadElementContentAsString("SecondaryDNSAddress");
            if (string.IsNullOrEmpty(SecondaryDNSAddress))
            {
                SecondaryDNSAddress = "0.0.0.0";
            }
        }
示例#11
0
 private static void LoadTokenGatewayConfigurations(GXXmlReader reader, List <GXTokenGatewayConfiguration> list)
 {
     list.Clear();
     if (reader.IsStartElement("TokenGatewayConfigurations", true))
     {
         while (reader.IsStartElement("Item", true))
         {
             GXTokenGatewayConfiguration it = new GXTokenGatewayConfiguration();
             it.CreditReference = reader.ReadElementContentAsString("Credit");
             it.TokenProportion = (byte)reader.ReadElementContentAsInt("Token");
             list.Add(it);
         }
         reader.ReadEndElement("TokenGatewayConfigurations");
     }
 }
示例#12
0
 private static void LoadCreditChargeConfigurations(GXXmlReader reader, List <GXCreditChargeConfiguration> list)
 {
     list.Clear();
     if (reader.IsStartElement("CreditChargeConfigurations", true))
     {
         while (reader.IsStartElement("Item", true))
         {
             GXCreditChargeConfiguration it = new GXCreditChargeConfiguration();
             it.CreditReference         = reader.ReadElementContentAsString("Credit");
             it.ChargeReference         = reader.ReadElementContentAsString("Charge");
             it.CollectionConfiguration = (CreditCollectionConfiguration)reader.ReadElementContentAsInt("Configuration");
             list.Add(it);
         }
         reader.ReadEndElement("CreditChargeConfigurations");
     }
 }
 private void LoadBroadcastLogTable(GXXmlReader reader)
 {
     BroadcastLogTable.Clear();
     if (reader.IsStartElement("BroadcastLogTable", true))
     {
         while (reader.IsStartElement("Item", false))
         {
             GXDLMSBroadcastLogTable it = new GXDLMSBroadcastLogTable();
             BroadcastLogTable.Add(it);
             it.SourceAddress  = (UInt16)reader.ReadElementContentAsInt("SourceAddress");
             it.SequenceNumber = (byte)reader.ReadElementContentAsInt("SequenceNumber");
             it.ValidTime      = (UInt16)reader.ReadElementContentAsInt("ValidTime");
         }
         reader.ReadEndElement("BroadcastLogTable");
     }
 }
 void IGXDLMSBase.Load(GXXmlReader reader)
 {
     CommunicationSpeed = (BaudRate)reader.ReadElementContentAsInt("CommunicationSpeed");
     if (reader.IsStartElement("InitialisationStrings", true))
     {
         while (reader.IsStartElement("Initialisation", true))
         {
             GXDLMSModemInitialisation it = new GXDLMSModemInitialisation();
             it.Request  = reader.ReadElementContentAsString("Request");
             it.Response = reader.ReadElementContentAsString("Response");
             it.Delay    = (UInt16)reader.ReadElementContentAsInt("Delay");
         }
         reader.ReadEndElement("InitialisationStrings");
     }
     ModemProfile = reader.ReadElementContentAsString("ModemProfile", "").Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
 }
示例#15
0
        /// <summary>
        ///  Load COSEM objects from the file.
        /// </summary>
        /// <param name="stream">Stream.</param>
        /// <returns>Collection of serialized COSEM objects.</returns>
        public static GXDLMSObjectCollection Load(Stream stream)
        {
            GXDLMSObject obj = null;
            String       target;
            ObjectType   type;

            using (GXXmlReader reader = new GXXmlReader(stream))
            {
                while (!reader.EOF)
                {
                    if (reader.IsStartElement())
                    {
                        target = reader.Name;
                        if (string.Compare("Objects", target, true) == 0)
                        {
                            //Skip.
                            reader.Read();
                        }
                        else if (string.Compare("Object", target, true) == 0)
                        {
                            int    r   = 0;
                            string str = reader.GetAttribute(0);
                            if (int.TryParse(str, out r))
                            {
                                type = (ObjectType)r;
                            }
                            else
                            {
                                type = (ObjectType)Enum.Parse(typeof(ObjectType), str);
                            }
                            reader.Read();
                            obj = GXDLMSClient.CreateObject(type);
                            reader.Objects.Add(obj);
                        }
                        else if (string.Compare("SN", target, true) == 0)
                        {
                            obj.ShortName = (UInt16)reader.ReadElementContentAsInt("SN");
                        }
                        else if (string.Compare("LN", target, true) == 0)
                        {
                            obj.LogicalName = reader.ReadElementContentAsString("LN");
                        }
                        else if (string.Compare("Description", target, true) == 0)
                        {
                            obj.Description = reader.ReadElementContentAsString("Description");
                        }
                        else
                        {
                            (obj as IGXDLMSBase).Load(reader);
                            obj = null;
                        }
                    }
                    else
                    {
                        reader.Read();
                    }
                }
                return(reader.Objects);
            }
        }
示例#16
0
        private GXMacMulticastEntry[] LoadMulticastEntries(GXXmlReader reader)
        {
            List <GXMacMulticastEntry> list = new List <GXMacMulticastEntry>();

            if (reader.IsStartElement("MulticastEntries", true))
            {
                while (reader.IsStartElement("Item", true))
                {
                    GXMacMulticastEntry it = new GXMacMulticastEntry();
                    list.Add(it);
                    it.Id      = (sbyte)reader.ReadElementContentAsInt("Id");
                    it.Members = (Int16)reader.ReadElementContentAsInt("Members");
                }
                reader.ReadEndElement("MulticastEntries");
            }
            return(list.ToArray());
        }
 private void LoadContextInformationTable(GXXmlReader reader)
 {
     ContextInformationTable.Clear();
     if (reader.IsStartElement("ContextInformationTable", true))
     {
         while (reader.IsStartElement("Item", false))
         {
             GXDLMSContextInformationTable it = new GXDLMSContextInformationTable();
             ContextInformationTable.Add(it);
             it.CID           = reader.ReadElementContentAsString("CID");
             it.Context       = GXDLMSTranslator.HexToBytes(reader.ReadElementContentAsString("Context"));
             it.Compression   = reader.ReadElementContentAsInt("Compression") != 0;
             it.ValidLifetime = (UInt16)reader.ReadElementContentAsInt("ValidLifetime");
         }
         reader.ReadEndElement("ContextInformationTable");
     }
 }
示例#18
0
        void IGXDLMSBase.Load(GXXmlReader reader)
        {
            DataLinkLayerReference = reader.ReadElementContentAsString("DataLinkLayerReference");
            IPAddress = GetIpaddress(reader.ReadElementContentAsString("IPAddress"));
            List <IPAddress> list = new List <IPAddress>();

            if (reader.IsStartElement("MulticastIPAddress", true))
            {
                while (reader.IsStartElement("Value", false))
                {
                    list.Add(GetIpaddress(reader.ReadElementContentAsString("Value")));
                }
                reader.ReadEndElement("MulticastIPAddress");
            }
            MulticastIPAddress = list.ToArray();
            List <GXDLMSIp4SetupIpOption> ipOptions = new List <GXDLMSIp4SetupIpOption>();

            if (reader.IsStartElement("IPOptions", true))
            {
                while (reader.IsStartElement("IPOption", true))
                {
                    GXDLMSIp4SetupIpOption it = new GXDLMSIp4SetupIpOption();
                    it.Type   = (Ip4SetupIpOptionType)reader.ReadElementContentAsInt("Type");
                    it.Length = (byte)reader.ReadElementContentAsInt("Length");
                    it.Data   = GXDLMSTranslator.HexToBytes(reader.ReadElementContentAsString("Data"));
                    ipOptions.Add(it);
                }
                //OLD. This can remove in the future.
                while (reader.IsStartElement("IPOptions", true))
                {
                    GXDLMSIp4SetupIpOption it = new GXDLMSIp4SetupIpOption();
                    it.Type   = (Ip4SetupIpOptionType)reader.ReadElementContentAsInt("Type");
                    it.Length = (byte)reader.ReadElementContentAsInt("Length");
                    it.Data   = GXDLMSTranslator.HexToBytes(reader.ReadElementContentAsString("Data"));
                    ipOptions.Add(it);
                }
                reader.ReadEndElement("IPOptions");
            }
            IPOptions           = ipOptions.ToArray();
            SubnetMask          = GetIpaddress(reader.ReadElementContentAsString("SubnetMask"));
            GatewayIPAddress    = GetIpaddress(reader.ReadElementContentAsString("GatewayIPAddress"));
            UseDHCP             = reader.ReadElementContentAsInt("UseDHCP") != 0;
            PrimaryDNSAddress   = GetIpaddress(reader.ReadElementContentAsString("PrimaryDNSAddress"));
            SecondaryDNSAddress = GetIpaddress(reader.ReadElementContentAsString("SecondaryDNSAddress"));
        }
 void IGXDLMSBase.Load(GXXmlReader reader)
 {
     ChangedParameter = new GXDLMSTarget();
     if (reader.IsStartElement("ChangedParameter", true))
     {
         ObjectType ot = (ObjectType)reader.ReadElementContentAsInt("Type");
         string     ln = reader.ReadElementContentAsString("LN");
         ChangedParameter.Target = reader.Objects.FindByLN(ot, ln);
         if (ChangedParameter.Target == null)
         {
             ChangedParameter.Target             = GXDLMSClient.CreateObject(ot);
             ChangedParameter.Target.LogicalName = ln;
         }
         ChangedParameter.AttributeIndex = (byte)reader.ReadElementContentAsInt("Index");
         ChangedParameter.Value          = reader.ReadElementContentAsObject("Value", null);
         reader.ReadEndElement("ChangedParameter");
     }
     if (string.Compare("Time", reader.Name, true) == 0)
     {
         CaptureTime = new GXDateTime(reader.ReadElementContentAsString("Time"), CultureInfo.InvariantCulture);
     }
     else
     {
         CaptureTime = DateTime.MinValue;
     }
     Parameters.Clear();
     if (reader.IsStartElement("Parameters", true))
     {
         while (reader.IsStartElement("Item", true))
         {
             GXDLMSTarget obj = new GXDLMSTarget();
             ObjectType   ot  = (ObjectType)reader.ReadElementContentAsInt("Type");
             string       ln  = reader.ReadElementContentAsString("LN");
             obj.Target = reader.Objects.FindByLN(ot, ln);
             if (obj.Target == null)
             {
                 obj.Target             = GXDLMSClient.CreateObject(ot);
                 obj.Target.LogicalName = ln;
             }
             obj.AttributeIndex = (byte)reader.ReadElementContentAsInt("Index");
             Parameters.Add(obj);
         }
         reader.ReadEndElement("Parameters");
     }
 }
        void IGXDLMSBase.Load(GXXmlReader reader)
        {
            List <GXDLMSSpecialDay> list = new List <GXDLMSSpecialDay>();

            if (reader.IsStartElement("Entries", true))
            {
                while (reader.IsStartElement("Entry", true))
                {
                    GXDLMSSpecialDay it = new GXDLMSSpecialDay();
                    it.Index = (UInt16)reader.ReadElementContentAsInt("Index");
                    it.Date  = new GXDate(reader.ReadElementContentAsString("Date"), CultureInfo.InvariantCulture);
                    it.DayId = (byte)reader.ReadElementContentAsInt("DayId");
                    list.Add(it);
                }
                reader.ReadEndElement("Entries");
            }
            Entries = list.ToArray();
        }
 void IGXDLMSBase.Load(GXXmlReader reader)
 {
     Mode            = (AutoConnectMode)reader.ReadElementContentAsInt("Mode");
     Repetitions     = reader.ReadElementContentAsInt("Repetitions");
     RepetitionDelay = reader.ReadElementContentAsInt("RepetitionDelay");
     CallingWindow.Clear();
     if (reader.IsStartElement("CallingWindow", true))
     {
         while (reader.IsStartElement("Item", true))
         {
             GXDateTime start = new GXDateTime(reader.ReadElementContentAsString("Start"), CultureInfo.InvariantCulture);
             GXDateTime end   = new GXDateTime(reader.ReadElementContentAsString("End"), CultureInfo.InvariantCulture);
             CallingWindow.Add(new KeyValuePair <DLMS.GXDateTime, DLMS.GXDateTime>(start, end));
         }
         reader.ReadEndElement("CallingWindow");
     }
     Destinations = reader.ReadElementContentAsString("Destinations", "").Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
 }
        private static GXDLMSSeasonProfile[] LoadSeasonProfile(GXXmlReader reader, string name)
        {
            List <GXDLMSSeasonProfile> list = new List <GXDLMSSeasonProfile>();

            if (reader.IsStartElement(name, true))
            {
                while (reader.IsStartElement("Item", true))
                {
                    GXDLMSSeasonProfile it = new GXDLMSSeasonProfile();
                    it.Name     = GXDLMSTranslator.HexToBytes(reader.ReadElementContentAsString("Name"));
                    it.Start    = new GXDateTime(reader.ReadElementContentAsString("Start"), CultureInfo.InvariantCulture);
                    it.WeekName = GXDLMSTranslator.HexToBytes(reader.ReadElementContentAsString("WeekName"));
                    list.Add(it);
                }
                reader.ReadEndElement(name);
            }
            return(list.ToArray());
        }
示例#23
0
        private GXNeighborDiscoverySetup[] LoadNeighborDiscoverySetup(GXXmlReader reader, string name)
        {
            List <GXNeighborDiscoverySetup> list = new List <GXNeighborDiscoverySetup>();

            if (reader.IsStartElement(name, true))
            {
                while (reader.IsStartElement("Item", true))
                {
                    GXNeighborDiscoverySetup it = new GXNeighborDiscoverySetup();
                    list.Add(it);
                    it.MaxRetry      = (byte)reader.ReadElementContentAsInt("MaxRetry");
                    it.RetryWaitTime = (UInt16)reader.ReadElementContentAsInt("RetryWaitTime");
                    it.SendPeriod    = (UInt32)reader.ReadElementContentAsInt("SendPeriod");
                }
                reader.ReadEndElement(name);
            }
            return(list.ToArray());
        }
示例#24
0
 void IGXDLMSBase.Load(GXXmlReader reader)
 {
     Mode = (AutoAnswerMode)reader.ReadElementContentAsInt("Mode");
     ListeningWindow.Clear();
     if (reader.IsStartElement("ListeningWindow", true))
     {
         while (reader.IsStartElement("Item", true))
         {
             GXDateTime start = new GXDateTime(reader.ReadElementContentAsString("Start"));
             GXDateTime end   = new GXDateTime(reader.ReadElementContentAsString("End"));
             ListeningWindow.Add(new KeyValuePair <DLMS.GXDateTime, DLMS.GXDateTime>(start, end));
         }
         reader.ReadEndElement("ListeningWindow");
     }
     Status        = (AutoAnswerStatus)reader.ReadElementContentAsInt("Status");
     NumberOfCalls = reader.ReadElementContentAsInt("NumberOfCalls");
     NumberOfRingsInListeningWindow  = reader.ReadElementContentAsInt("NumberOfRingsInListeningWindow");
     NumberOfRingsOutListeningWindow = reader.ReadElementContentAsInt("NumberOfRingsOutListeningWindow");
 }
 private void LoadRoutingTable(GXXmlReader reader)
 {
     RoutingTable.Clear();
     if (reader.IsStartElement("RoutingTable", true))
     {
         while (reader.IsStartElement("Item", false))
         {
             GXDLMSRoutingTable it = new GXDLMSRoutingTable();
             RoutingTable.Add(it);
             it.DestinationAddress = (UInt16)reader.ReadElementContentAsInt("DestinationAddress");
             it.NextHopAddress     = (UInt16)reader.ReadElementContentAsInt("NextHopAddress");
             it.RouteCost          = (UInt16)reader.ReadElementContentAsInt("RouteCost");
             it.HopCount           = (byte)reader.ReadElementContentAsInt("HopCount");
             it.WeakLinkCount      = (byte)reader.ReadElementContentAsInt("WeakLinkCount");
             it.ValidTime          = (UInt16)reader.ReadElementContentAsInt("ValidTime");
         }
         reader.ReadEndElement("RoutingTable");
     }
 }
        void IGXDLMSBase.Load(GXXmlReader reader)
        {
            SecurityPolicy = (SecurityPolicy)reader.ReadElementContentAsInt("SecurityPolicy");
            //This is old functionality.It can be removed in some point.
            reader.ReadElementContentAsInt("SecurityPolicy0");
            SecuritySuite = (SecuritySuite)reader.ReadElementContentAsInt("SecuritySuite");
            string str = reader.ReadElementContentAsString("ClientSystemTitle");

            if (str == null)
            {
                ClientSystemTitle = null;
            }
            else
            {
                ClientSystemTitle = GXDLMSTranslator.HexToBytes(str);
            }
            str = reader.ReadElementContentAsString("ServerSystemTitle");
            if (str == null)
            {
                ServerSystemTitle = null;
            }
            else
            {
                ServerSystemTitle = GXDLMSTranslator.HexToBytes(str);
            }
            Certificates.Clear();
            if (reader.IsStartElement("Certificates", true))
            {
                while (reader.IsStartElement("Item", true))
                {
                    GXDLMSCertificateInfo it = new GXDLMSCertificateInfo();
                    Certificates.Add(it);
                    it.Entity         = (CertificateEntity)reader.ReadElementContentAsInt("Entity");
                    it.Type           = (CertificateType)reader.ReadElementContentAsInt("Type");
                    it.SerialNumber   = BigInteger.Parse(reader.ReadElementContentAsString("SerialNumber"));
                    it.Issuer         = reader.ReadElementContentAsString("Issuer");
                    it.Subject        = reader.ReadElementContentAsString("Subject");
                    it.SubjectAltName = reader.ReadElementContentAsString("SubjectAltName");
                }
                reader.ReadEndElement("Certificates");
            }
        }
        void IGXDLMSBase.Load(GXXmlReader reader)
        {
            PushObjectList.Clear();
            if (reader.IsStartElement("ObjectList", true))
            {
                while (reader.IsStartElement("Item", true))
                {
                    ObjectType ot = (ObjectType)reader.ReadElementContentAsInt("ObjectType");
                    string     ln = reader.ReadElementContentAsString("LN");
                    int        ai = reader.ReadElementContentAsInt("AI");
                    int        di = reader.ReadElementContentAsInt("DI");
                    reader.ReadEndElement("Item");
                    GXDLMSCaptureObject co  = new GXDLMSCaptureObject(ai, di);
                    GXDLMSObject        obj = reader.Objects.FindByLN(ot, ln);
                    if (obj == null)
                    {
                        obj             = GXDLMSClient.CreateObject(ot);
                        obj.LogicalName = ln;
                    }
                    PushObjectList.Add(new KeyValuePair <Objects.GXDLMSObject, Objects.GXDLMSCaptureObject>(obj, co));
                }
                reader.ReadEndElement("ObjectList");
            }

            Service     = (ServiceType)reader.ReadElementContentAsInt("Service");
            Destination = reader.ReadElementContentAsString("Destination");
            Message     = (MessageType)reader.ReadElementContentAsInt("Message");
            CommunicationWindow.Clear();
            if (reader.IsStartElement("CommunicationWindow", true))
            {
                while (reader.IsStartElement("Item", true))
                {
                    GXDateTime start = new GXDateTime(reader.ReadElementContentAsString("Start"), CultureInfo.InvariantCulture);
                    GXDateTime end   = new GXDateTime(reader.ReadElementContentAsString("End"), CultureInfo.InvariantCulture);
                    CommunicationWindow.Add(new KeyValuePair <DLMS.GXDateTime, DLMS.GXDateTime>(start, end));
                }
                reader.ReadEndElement("CommunicationWindow");
            }
            RandomisationStartInterval = (ushort)reader.ReadElementContentAsInt("RandomisationStartInterval");
            NumberOfRetries            = (byte)reader.ReadElementContentAsInt("NumberOfRetries");
            RepetitionDelay            = (ushort)reader.ReadElementContentAsInt("RepetitionDelay");
        }
示例#28
0
        private GXMacAvailableSwitch[] LoadAvailableSwitches(GXXmlReader reader)
        {
            List <GXMacAvailableSwitch> list = new List <GXMacAvailableSwitch>();

            if (reader.IsStartElement("AvailableSwitches", true))
            {
                while (reader.IsStartElement("Item", true))
                {
                    GXMacAvailableSwitch it = new GXMacAvailableSwitch();
                    list.Add(it);
                    it.Sna     = GXCommon.HexToBytes(reader.ReadElementContentAsString("Sna"));
                    it.LsId    = (Int16)reader.ReadElementContentAsInt("LsId");
                    it.Level   = (sbyte)reader.ReadElementContentAsInt("Level");
                    it.RxLevel = (sbyte)reader.ReadElementContentAsInt("RxLevel");
                    it.RxSnr   = (sbyte)reader.ReadElementContentAsInt("RxSnr");
                }
                reader.ReadEndElement("AvailableSwitches");
            }
            return(list.ToArray());
        }
        void IGXDLMSBase.Load(GXXmlReader reader)
        {
            List <object> thresholds = new List <object>();

            if (reader.IsStartElement("Thresholds", true))
            {
                while (reader.IsStartElement("Value", false))
                {
                    object it = reader.ReadElementContentAsObject("Value", null);
                    thresholds.Add(it);
                }
                reader.ReadEndElement("Thresholds");
            }
            Thresholds = thresholds.ToArray();
            if (reader.IsStartElement("MonitoredValue", true))
            {
                MonitoredValue.ObjectType     = (ObjectType)reader.ReadElementContentAsInt("ObjectType");
                MonitoredValue.LogicalName    = reader.ReadElementContentAsString("LN");
                MonitoredValue.AttributeIndex = reader.ReadElementContentAsInt("Index");
                reader.ReadEndElement("MonitoredValue");
            }

            List <GXDLMSActionSet> list = new List <GXDLMSActionSet>();

            if (reader.IsStartElement("Actions", true))
            {
                while (reader.IsStartElement("Item", true))
                {
                    GXDLMSActionSet it = new GXDLMSActionSet();
                    list.Add(it);
                    if (reader.IsStartElement("Up", true))
                    {
                        it.ActionUp.LogicalName = reader.ReadElementContentAsString("LN", null);
                        if (it.ActionUp.LogicalName == "")
                        {
                            it.ActionUp.LogicalName = "0.0.0.0.0.0";
                        }
                        it.ActionUp.ScriptSelector = (UInt16)reader.ReadElementContentAsInt("Selector");
                        reader.ReadEndElement("Up");
                    }
                    if (reader.IsStartElement("Down", true))
                    {
                        it.ActionDown.LogicalName = reader.ReadElementContentAsString("LN", null);
                        if (it.ActionDown.LogicalName == "")
                        {
                            it.ActionDown.LogicalName = "0.0.0.0.0.0";
                        }
                        it.ActionDown.ScriptSelector = (UInt16)reader.ReadElementContentAsInt("Selector");
                        reader.ReadEndElement("Down");
                    }
                }
                reader.ReadEndElement("Actions");
            }
            Actions = list.ToArray();
        }
示例#30
0
 void IGXDLMSBase.Load(GXXmlReader reader)
 {
     MBusPortReference = reader.ReadElementContentAsString("MBusPortReference");
     CaptureDefinition.Clear();
     if (reader.IsStartElement("CaptureDefinition", true))
     {
         while (reader.IsStartElement("Item", true))
         {
             string d = reader.ReadElementContentAsString("Data");
             string v = reader.ReadElementContentAsString("Value");
             CaptureDefinition.Add(new KeyValuePair <string, string>(d, v));
         }
         reader.ReadEndElement("CaptureDefinition");
     }
     CapturePeriod        = (UInt16)reader.ReadElementContentAsInt("CapturePeriod");
     PrimaryAddress       = reader.ReadElementContentAsInt("PrimaryAddress");
     IdentificationNumber = (UInt16)reader.ReadElementContentAsInt("IdentificationNumber");
     ManufacturerID       = (UInt16)reader.ReadElementContentAsInt("ManufacturerID");
     DataHeaderVersion    = reader.ReadElementContentAsInt("DataHeaderVersion");
     DeviceType           = reader.ReadElementContentAsInt("DeviceType");
     AccessNumber         = reader.ReadElementContentAsInt("AccessNumber");
 }