public void bcdTest()
        {
            SerialPhyLayer serial = new SerialPhyLayer();
            HdlcLinkLayer  hdlc   = new HdlcLinkLayer();
            DlmsClient     dlms   = new DlmsClient(hdlc);
            LnDescriptor   data   = new LnDescriptor(3, new Obis("1.0.1.2.0.255"), 2); //Active accumulated MD (+)

            HelperTest.connect(serial, hdlc, dlms, data);
            data.getRequestData();
            dlms.get(serial, data);
            var actual = data.getResponseData();

            byte[] expected = { 0x0D, 0x04, 0x00, 0x01, 0x02, 0x08 };
            HelperTest.disconnect(serial, dlms);
            CollectionAssert.AreEqual(expected, actual);

            data = new LnDescriptor(3, new Obis("1.0.1.14.0.255"), 2); //Active MD (+)
            HelperTest.connect(serial, hdlc, dlms, data);
            data.getRequestData();
            dlms.get(serial, data);
            actual   = data.getResponseData();
            expected = new byte[] { 0x0D, 0x03, 0x00, 0x00, 0x00 };
            HelperTest.disconnect(serial, dlms);
            CollectionAssert.AreEqual(expected, actual);
        }
        public void arrayTest()
        {
            SerialPhyLayer serial = new SerialPhyLayer();
            HdlcLinkLayer  hdlc   = new HdlcLinkLayer();
            DlmsClient     dlms   = new DlmsClient(hdlc);
            LnDescriptor   data   = new LnDescriptor(11, new Obis("0.0.11.0.0.255"), 2); //set Holidays

            HelperTest.connect(serial, hdlc, dlms, data);
            data.setRequestData(new byte[] { 0x01, 0x02, 0x02, 0x03, 0x12, 0x00, 0x01, 0x09, 0x05, 0x07, 0xE2, 0x02, 0x0D, 0xFE, 0x11,
                                             0x02, 0x02, 0x03, 0x12, 0x00, 0x02, 0x09, 0x05, 0xFF, 0xFF, 0x01, 0x01, 0xFF, 0x11, 0x02 });
            HelperTest.disconnect(serial, dlms);
            serial.close();

            Thread.Sleep(4000);

            data = new LnDescriptor(11, new Obis("0.0.11.0.0.255"), 2); //get Holidays
            HelperTest.connect(serial, hdlc, dlms, data);
            data.getRequestData();
            dlms.get(serial, data);
            var actual = data.getResponseData();

            byte[] expected = { 0x01, 0x02, 0x02, 0x03, 0x12, 0x00, 0x01, 0x09, 0x05, 0x07, 0xE2, 0x02, 0x0D, 0xFE, 0x11,
                                0x02, 0x02, 0x03, 0x12, 0x00, 0x02, 0x09, 0x05, 0xFF, 0xFF, 0x01, 0x01, 0xFF, 0x11, 0x02 };
            HelperTest.disconnect(serial, dlms);
            CollectionAssert.AreEqual(expected, actual);
        }
        public void boolTest()
        {
            SerialPhyLayer serial = new SerialPhyLayer();
            HdlcLinkLayer  hdlc   = new HdlcLinkLayer();
            DlmsClient     dlms   = new DlmsClient(hdlc);
            LnDescriptor   data   = new LnDescriptor(70, new Obis("0.0.96.3.10.255"), 2); //Get Relay Status

            HelperTest.connect(serial, hdlc, dlms, data);
            data.getRequestData();
            dlms.get(serial, data);
            var actual = data.getResponseData();

            byte[] expected = { 03, 01 };
            HelperTest.disconnect(serial, dlms);
            CollectionAssert.AreEqual(expected, actual);

            data = new LnDescriptor(18, new Obis("0.0.44.0.0.255"), 5); // image_transfer_enabled
            HelperTest.connect(serial, hdlc, dlms, data);
            data.getRequestData();
            dlms.get(serial, data);
            actual   = data.getResponseData();
            expected = new byte[] { 03, 01 };
            HelperTest.disconnect(serial, dlms);
            CollectionAssert.AreEqual(expected, actual);
        }
        public void visibleStringTest()
        {
            SerialPhyLayer serial = new SerialPhyLayer();
            HdlcLinkLayer  hdlc   = new HdlcLinkLayer();
            DlmsClient     dlms   = new DlmsClient(hdlc);
            LnDescriptor   data   = new LnDescriptor(1, new Obis("0.1.96.1.146.255"), 2); //Brazil firmware version number

            HelperTest.connect(serial, hdlc, dlms, data);
            data.getRequestData();
            dlms.get(serial, data);
            var actual = data.getResponseData();

            byte[] expected = { 0x0A, 0x06, 0x31, 0x37, 0x31, 0x31, 0x31, 0x34 };
            HelperTest.disconnect(serial, dlms);
            CollectionAssert.AreEqual(expected, actual);

            data = new LnDescriptor(1, new Obis("0.0.96.1.0.255"), 2); //Meter address for communication
            HelperTest.connect(serial, hdlc, dlms, data);
            data.setRequestData(new byte[] { 0x0A, 0x0A, 0x36, 0x30, 0x30, 0x39, 0x32, 0x39, 0x30, 0x39, 0x35, 0x38 });
            dlms.set(serial, data);
            data.getRequestData();
            dlms.get(serial, data);
            actual   = data.getResponseData();
            expected = new byte[] { 0x0A, 0x0A, 0x36, 0x30, 0x30, 0x39, 0x32, 0x39, 0x30, 0x39, 0x35, 0x38 };
            HelperTest.disconnect(serial, dlms);
            CollectionAssert.AreEqual(expected, actual);
        }
        public void float32Test()
        {
            SerialPhyLayer serial = new SerialPhyLayer();
            HdlcLinkLayer  hdlc   = new HdlcLinkLayer();
            DlmsClient     dlms   = new DlmsClient(hdlc);
            LnDescriptor   data   = new LnDescriptor(1, new Obis("1.0.31.128.57.255"), 2); //Zero line current

            HelperTest.connect(serial, hdlc, dlms, data);
            dlms.get(serial, data);
            var actual = data.getResponseData();

            byte[] expected = { 0x17, 0x00, 0x00, 0x00, 0x00 };
            HelperTest.disconnect(serial, dlms);
            CollectionAssert.AreEqual(expected, actual);
        }
        public void enumTest()
        {
            SerialPhyLayer serial = new SerialPhyLayer();
            HdlcLinkLayer  hdlc   = new HdlcLinkLayer();
            DlmsClient     dlms   = new DlmsClient(hdlc);
            LnDescriptor   data   = new LnDescriptor(18, new Obis("0.0.44.0.0.255"), 6); //image_transfer_status

            HelperTest.connect(serial, hdlc, dlms, data);
            dlms.get(serial, data);
            var actual = data.getResponseData();

            byte[] expected = { 0x16, 0x04 };
            HelperTest.disconnect(serial, dlms);
            CollectionAssert.AreEqual(expected, actual);
        }
        public void octetStringTest()
        {
            SerialPhyLayer serial = new SerialPhyLayer();
            HdlcLinkLayer  hdlc   = new HdlcLinkLayer();
            DlmsClient     dlms   = new DlmsClient(hdlc);
            LnDescriptor   data   = new LnDescriptor(1, new Obis("0.0.96.14.0.255"), 2); // Current tariff No.

            HelperTest.connect(serial, hdlc, dlms, data);
            //data.getRequestData();
            dlms.get(serial, data);
            var actual   = data.getResponseData();
            var expected = new byte[] { 09, 01 };

            HelperTest.disconnect(serial, dlms);
            CollectionAssert.AreEqual(expected, actual);
        }
        public void dateTimeTest()
        {
            SerialPhyLayer serial = new SerialPhyLayer();
            HdlcLinkLayer  hdlc   = new HdlcLinkLayer();
            DlmsClient     dlms   = new DlmsClient(hdlc);
            LnDescriptor   data   = new LnDescriptor(20, new Obis("0.0.13.0.0.255"), 10); //Date&time to activate the passive calendar

            HelperTest.connect(serial, hdlc, dlms, data);
            //data.getRequestData();
            dlms.get(serial, data);
            var actual = data.getResponseData();

            byte[] expected = { 0x09, 0x0C, 0x07, 0xE2, 0x05, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x02 };
            HelperTest.disconnect(serial, dlms);
            CollectionAssert.AreEqual(expected, actual);
        }
        public void structureTest()
        {
            SerialPhyLayer serial = new SerialPhyLayer();
            HdlcLinkLayer  hdlc   = new HdlcLinkLayer();
            DlmsClient     dlms   = new DlmsClient(hdlc);
            LnDescriptor   data   = new LnDescriptor(3, new Obis("1.0.1.8.128.255"), 2); //Forward total Active energy + 4 FEE

            HelperTest.connect(serial, hdlc, dlms, data);
            //data.getRequestData();
            dlms.get(serial, data);
            var actual = data.getResponseData();

            byte[] expected = { 0x02, 0x05, 0x06, 0x00, 0x11, 0x93, 0xF6, 0x06, 0x00, 0x03, 0x9B, 0x98, 0x06, 0x00,
                                0x0B, 0x63, 0x50, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x90, 0xEA };
            HelperTest.disconnect(serial, dlms);
            CollectionAssert.AreEqual(expected, actual);
        }
        public void doubleLongTest()
        {
            SerialPhyLayer serial = new SerialPhyLayer();
            HdlcLinkLayer  hdlc   = new HdlcLinkLayer();
            DlmsClient     dlms   = new DlmsClient(hdlc);
            LnDescriptor   data   = new LnDescriptor(1, new Obis("1.0.31.128.49.255"), 2); //Read Configure clock correction factor

            HelperTest.connect(serial, hdlc, dlms, data);
            data.setRequestData(new byte[] { 0x05, 0x00, 0x00, 0x00, 0x00 });
            dlms.set(serial, data);
            data.getRequestData();
            dlms.get(serial, data);
            var actual = data.getResponseData();

            byte[] expected = { 05, 00, 00, 00, 00 };
            HelperTest.disconnect(serial, dlms);
            CollectionAssert.AreEqual(expected, actual);
        }
Пример #11
0
        public static void connect(SerialPhyLayer serial, HdlcLinkLayer hdlc, DlmsClient dlms, LnDescriptor data)
        {
            serial.open("COM3");
            serial.config(300, 7, System.IO.Ports.Parity.Even, System.IO.Ports.StopBits.One);
            try
            {
                Emode.connect(serial);
            }
            catch (Exception)
            {
            }

            serial.config(9600, 8, System.IO.Ports.Parity.None, System.IO.Ports.StopBits.One);
            hdlc.getParameters().setClientAddress(0x01);
            hdlc.getParameters().setServerAddress(0x01); //emode meter addr

            dlms.getParameters().setAuthenticationType(AuthenticationType.HLS_GMAC);
            dlms.getParameters().setSecurityType(SecurityType.AUTHENTICATION_ENCRYPTION);

            dlms.connect(serial);
        }
        public void unsignedTest()
        {
            SerialPhyLayer serial = new SerialPhyLayer();
            HdlcLinkLayer  hdlc   = new HdlcLinkLayer();
            DlmsClient     dlms   = new DlmsClient(hdlc);
            LnDescriptor   data   = new LnDescriptor(3, new Obis("1.0.0.9.11.255"), 2); //set Clock Set the maximum offset

            HelperTest.connect(serial, hdlc, dlms, data);
            data.setRequestData(new byte[] { 0x11, 0x1F });
            dlms.set(serial, data);
            HelperTest.disconnect(serial, dlms);

            data = new LnDescriptor(3, new Obis("1.0.0.9.11.255"), 2); //get Clock Set the maximum offset
            HelperTest.connect(serial, hdlc, dlms, data);
            data.getRequestData();
            dlms.get(serial, data);
            var actual = data.getResponseData();

            byte[] expected = { 0x11, 0x1F };
            HelperTest.disconnect(serial, dlms);
            CollectionAssert.AreEqual(expected, actual);
        }
        public void bitStringTest()
        {
            SerialPhyLayer serial = new SerialPhyLayer();
            HdlcLinkLayer  hdlc   = new HdlcLinkLayer();
            DlmsClient     dlms   = new DlmsClient(hdlc);
            LnDescriptor   data   = new LnDescriptor(18, new Obis("0.0.44.0.0.255"), 3);

            HelperTest.connect(serial, hdlc, dlms, data);
            Thread.Sleep(4000);
            //data.getRequestData();
            dlms.get(serial, data);
            byte[] actual   = data.getResponseData();
            byte[] expected = { 0x04, 0x82, 0x0A, 0x96, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
                                00,     00,   00,   00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
                                00,     00,   00,   00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
                                00,     00,   00,   00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
                                00,     00,   00,   00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
                                00,     00,   00,   00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
                                00,     00,   00,   00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 };
            HelperTest.disconnect(serial, dlms);
            CollectionAssert.AreEqual(expected, actual);
        }
        public void longUnsignedTest()
        {
            SerialPhyLayer serial = new SerialPhyLayer();
            HdlcLinkLayer  hdlc   = new HdlcLinkLayer();
            DlmsClient     dlms   = new DlmsClient(hdlc);
            LnDescriptor   data   = new LnDescriptor(3, new Obis("1.0.0.3.139.255"), 2); //set Auxiliary LED second pulse cycle

            HelperTest.connect(serial, hdlc, dlms, data);
            data.setRequestData(new byte[] { 0x12, 0x00, 0x00 });
            dlms.set(serial, data);
            HelperTest.disconnect(serial, dlms);

            data = new LnDescriptor(3, new Obis("1.0.0.3.139.255"), 2); //get Auxiliary LED second pulse cycle
            HelperTest.connect(serial, hdlc, dlms, data);
            data.getRequestData();
            dlms.get(serial, data);
            var actual = data.getResponseData();

            byte[] expected = { 0x12, 0x00, 0x00 };
            HelperTest.disconnect(serial, dlms);
            CollectionAssert.AreEqual(expected, actual);
        }
        public void doubleLongUnsignedTest()
        {
            SerialPhyLayer serial = new SerialPhyLayer();
            HdlcLinkLayer  hdlc   = new HdlcLinkLayer();
            DlmsClient     dlms   = new DlmsClient(hdlc);
            LnDescriptor   data   = new LnDescriptor(1, new Obis("1.0.1.8.0.255"), 2); //set Active energy import register

            HelperTest.connect(serial, hdlc, dlms, data);
            data.setRequestData(new byte[] { 0x06, 0x00, 0x01, 0xC1, 0x95 });
            dlms.set(serial, data);
            HelperTest.disconnect(serial, dlms);

            data = new LnDescriptor(3, new Obis("1.0.1.8.0.255"), 2); //get Active energy import register
            HelperTest.connect(serial, hdlc, dlms, data);
            data.getRequestData();
            dlms.get(serial, data);
            var actual = data.getResponseData();

            byte[] expected = { 0x06, 0x00, 0x01, 0xC1, 0x95 };
            HelperTest.disconnect(serial, dlms);
            CollectionAssert.AreEqual(expected, actual);

            data = new LnDescriptor(1, new Obis("1.0.1.8.0.255"), 2); //set Active energy import register
            HelperTest.connect(serial, hdlc, dlms, data);
            data.setRequestData(new byte[] { 0x06, 0x00, 0x01, 0xC1, 0xFF });
            dlms.set(serial, data);
            HelperTest.disconnect(serial, dlms);

            data = new LnDescriptor(3, new Obis("1.0.1.8.0.255"), 2); //get Active energy import register
            HelperTest.connect(serial, hdlc, dlms, data);
            data.getRequestData();
            dlms.get(serial, data);
            actual   = data.getResponseData();
            expected = new byte[] { 0x06, 0x00, 0x01, 0xC1, 0xFF };
            HelperTest.disconnect(serial, dlms);
            CollectionAssert.AreEqual(expected, actual);
        }
Пример #16
0
        static void Main(string[] args)
        {
            SerialPhyLayer serial = new SerialPhyLayer();
            HdlcLinkLayer  hdlc   = new HdlcLinkLayer();
            DlmsClient     dlms   = new DlmsClient(hdlc);
            LnDescriptor   data   = new LnDescriptor(18, new Obis("0.0.44.0.0.255"), 3);



            try
            {
                serial.open("COM3");
                serial.config(300, 7, System.IO.Ports.Parity.Even, System.IO.Ports.StopBits.One);

                try
                {
                    Emode.connect(serial);
                }
                catch (Exception)
                {
                }

                serial.config(9600, 8, System.IO.Ports.Parity.None, System.IO.Ports.StopBits.One);
                hdlc.getParameters().setClientAddress(0x01);
                //hdlc.getParameters().setServerAddress(0x0001, 0x3FFF);
                hdlc.getParameters().setServerAddress(0x01); //emode meter addr

                //dlms.getParameters().setAuthenticationType(AuthenticationType.LLS);

                dlms.getParameters().setAuthenticationType(AuthenticationType.HLS_GMAC);
                dlms.getParameters().setSecurityType(SecurityType.AUTHENTICATION_ENCRYPTION);

                dlms.connect(serial);

                for (int i = 0; i < 1; ++i)
                {
                    Console.WriteLine(i);
                    //data.getRequestData();
                    dlms.get(serial, data);
                    Console.Write(ByteArrayToString(data.getResponseData()));
                    Thread.Sleep(4000);
                }
                dlms.disconnect(serial);
            }
            catch (PhyLayerException e)
            {
                Console.WriteLine(e.getReason());
                Console.WriteLine(e.ToString());
                Console.Write(e.StackTrace);
            }
            catch (LinkLayerException e)
            {
                Console.WriteLine(e.getReason());
                Console.WriteLine(e.ToString());
                Console.Write(e.StackTrace);
            }
            catch (DlmsException e)
            {
                foreach (DlmsExceptionReason r in e.getReason())
                {
                    Console.WriteLine(r);
                }
                Console.WriteLine(e.Message);
                Console.WriteLine(e.ToString());
                Console.Write(e.StackTrace);
            }
            catch (ThreadInterruptedException e)
            {
                Console.WriteLine(e.ToString());
                Console.Write(e.StackTrace);
            }
            finally
            {
                serial.close();
            }
            Console.ReadLine();
        }
Пример #17
0
 public static void disconnect(SerialPhyLayer serial, DlmsClient dlms)
 {
     dlms.disconnect(serial);
     serial.close();
 }