public void TestReading()
        {
            var wrapper = new ConnectionWrapper(480);
            var conn    = new PLCConnection(new PLCConnectionConfiguration(), wrapper);
            var listTag = new List <PLCTag>();

            listTag.Add(new PLCTag("P#DB60.DBX0 BYTE 300"));
            listTag.Add(new PLCTag("P#DB10.DBX10 BYTE 300"));
            conn.ReadValues(listTag, true);
            var    pdus = wrapper.PDUs;
            string req  = string.Join(Environment.NewLine, pdus);
            string t    =
                @"READ  Area:132, DBnum:10, Start:10, Bytes:300
READ  Area:132, DBnum:60, Start:0, Bytes:300";

            Assert.AreEqual(req, t);

            var wrapper2 = new ConnectionWrapper(480);
            var conn2    = new PLCConnection(new PLCConnectionConfiguration(), wrapper2);
            var listTag2 = new List <PLCTag>();

            listTag2.Add(new PLCTag("P#DB60.DBX0 BYTE 300"));
            listTag2.Add(new PLCTag("P#DB10.DBX10 BYTE 300"));
            conn2._TestNewReadValues(listTag2, true);
            var    pdus2 = wrapper2.PDUs;
            string req2  = string.Join(Environment.NewLine, pdus2);
            string t2    = "READ  Area:132, DBnum:10, Start:10, Bytes:300\r\nREAD  Area:132, DBnum:60, Start:0, Bytes:300";

            Assert.AreEqual(req2, t2);

            var wrapper3 = new ConnectionWrapper(480);
            var conn3    = new PLCConnection(new PLCConnectionConfiguration(), wrapper3);
            var listTag3 = new List <PLCTag>();

            listTag3.Add(new PLCTag("P#DB60.DBX0 BYTE 300")
            {
                DontSplitValue = false
            });
            listTag3.Add(new PLCTag("P#DB10.DBX10 BYTE 300")
            {
                DontSplitValue = false
            });
            conn3.ReadValues(listTag3, true);
            var    pdus3 = wrapper3.PDUs;
            string req3  = string.Join(Environment.NewLine, pdus3);
            string t3    = "READ  Area:132, DBnum:10, Start:10, Bytes:300\r\nREAD  Area:132, DBnum:60, Start:0, Bytes:140\r\nREAD  Area:132, DBnum:60, Start:140, Bytes:160";

            Assert.AreEqual(req3, t3);

            var wrapper4 = new ConnectionWrapper(480);
            var conn4    = new PLCConnection(new PLCConnectionConfiguration(), wrapper4);
            var listTag4 = new List <PLCTag>();

            listTag4.Add(new PLCTag("P#DB1.DBX0 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag4.Add(new PLCTag("P#DB1.DBX8 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag4.Add(new PLCTag("P#DB1.DBX10 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag4.Add(new PLCTag("P#DB1.DBX30 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag4.Add(new PLCTag("P#DB1.DBX50 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag4.Add(new PLCTag("P#DB1.DBX80 BYTE 4")
            {
                DontSplitValue = false
            });
            conn4.ReadValues(listTag4, true);
            var    pdus4 = wrapper4.PDUs;
            string req4  = string.Join(Environment.NewLine, pdus4);
            string t4    = "READ  Area:132, DBnum:1, Start:0, Bytes:14\r\nREAD  Area:132, DBnum:1, Start:30, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:50, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:80, Bytes:4";

            Assert.AreEqual(req4, t4);

            var wrapper5 = new ConnectionWrapper(240);
            var conn5    = new PLCConnection(new PLCConnectionConfiguration(), wrapper5);
            var listTag5 = new List <PLCTag>();

            listTag5.Add(new PLCTag("P#DB1.DBX0 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX8 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX10 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX30 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX50 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX80 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX90 BYTE 30")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX100 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX140 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX160 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX180 BYTE 44")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX230 BYTE 20")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX240 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX250 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX260 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX270 BYTE 4")
            {
                DontSplitValue = false
            });
            conn5.ReadValues(listTag5, true);
            var    pdus5 = wrapper5.PDUs;
            string req5  = string.Join(Environment.NewLine, pdus5);
            string t5    = "READ  Area:132, DBnum:1, Start:0, Bytes:14\r\nREAD  Area:132, DBnum:1, Start:30, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:50, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:80, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:90, Bytes:30\r\nREAD  Area:132, DBnum:1, Start:140, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:160, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:180, Bytes:44\r\nREAD  Area:132, DBnum:1, Start:230, Bytes:24\r\nREAD  Area:132, DBnum:1, Start:260, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:270, Bytes:4";

            Assert.AreEqual(req5, t5);
        }
        public void TestReading()
        {
            var wrapper = new ConnectionWrapper(480);
            var conn = new PLCConnection(new PLCConnectionConfiguration(), wrapper);
            var listTag = new List<PLCTag>();
            listTag.Add(new PLCTag("P#DB60.DBX0 BYTE 300"));
            listTag.Add(new PLCTag("P#DB10.DBX10 BYTE 300"));
            conn.ReadValues(listTag, true);
            var pdus = wrapper.PDUs;
            string req = string.Join(Environment.NewLine, pdus);
            string t =
            @"READ  Area:132, DBnum:10, Start:10, Bytes:300
            READ  Area:132, DBnum:60, Start:0, Bytes:300";
            Assert.AreEqual(req, t);

            var wrapper2 = new ConnectionWrapper(480);
            var conn2 = new PLCConnection(new PLCConnectionConfiguration(), wrapper2);
            var listTag2 = new List<PLCTag>();
            listTag2.Add(new PLCTag("P#DB60.DBX0 BYTE 300"));
            listTag2.Add(new PLCTag("P#DB10.DBX10 BYTE 300"));
            conn2._TestNewReadValues(listTag2, true);
            var pdus2 = wrapper2.PDUs;
            string req2 = string.Join(Environment.NewLine, pdus2);
            string t2 = "READ  Area:132, DBnum:10, Start:10, Bytes:300\r\nREAD  Area:132, DBnum:60, Start:0, Bytes:300";
            Assert.AreEqual(req2, t2);

            var wrapper3 = new ConnectionWrapper(480);
            var conn3 = new PLCConnection(new PLCConnectionConfiguration(), wrapper3);
            var listTag3 = new List<PLCTag>();
            listTag3.Add(new PLCTag("P#DB60.DBX0 BYTE 300") { DontSplitValue = false });
            listTag3.Add(new PLCTag("P#DB10.DBX10 BYTE 300") { DontSplitValue = false });
            conn3.ReadValues(listTag3, true);
            var pdus3 = wrapper3.PDUs;
            string req3 = string.Join(Environment.NewLine, pdus3);
            string t3 = "READ  Area:132, DBnum:10, Start:10, Bytes:300\r\nREAD  Area:132, DBnum:60, Start:0, Bytes:140\r\nREAD  Area:132, DBnum:60, Start:140, Bytes:160";
            Assert.AreEqual(req3, t3);

            var wrapper4 = new ConnectionWrapper(480);
            var conn4 = new PLCConnection(new PLCConnectionConfiguration(), wrapper4);
            var listTag4 = new List<PLCTag>();
            listTag4.Add(new PLCTag("P#DB1.DBX0 BYTE 4") { DontSplitValue = false });
            listTag4.Add(new PLCTag("P#DB1.DBX8 BYTE 4") { DontSplitValue = false });
            listTag4.Add(new PLCTag("P#DB1.DBX10 BYTE 4") { DontSplitValue = false });
            listTag4.Add(new PLCTag("P#DB1.DBX30 BYTE 4") { DontSplitValue = false });
            listTag4.Add(new PLCTag("P#DB1.DBX50 BYTE 4") { DontSplitValue = false });
            listTag4.Add(new PLCTag("P#DB1.DBX80 BYTE 4") { DontSplitValue = false });
            conn4.ReadValues(listTag4, true);
            var pdus4 = wrapper4.PDUs;
            string req4 = string.Join(Environment.NewLine, pdus4);
            string t4 = "READ  Area:132, DBnum:1, Start:0, Bytes:14\r\nREAD  Area:132, DBnum:1, Start:30, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:50, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:80, Bytes:4";
            Assert.AreEqual(req4, t4);

            var wrapper5 = new ConnectionWrapper(240);
            var conn5 = new PLCConnection(new PLCConnectionConfiguration(), wrapper5);
            var listTag5 = new List<PLCTag>();
            listTag5.Add(new PLCTag("P#DB1.DBX0 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX8 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX10 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX30 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX50 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX80 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX90 BYTE 30") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX100 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX140 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX160 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX180 BYTE 44") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX230 BYTE 20") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX240 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX250 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX260 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX270 BYTE 4") { DontSplitValue = false });
            conn5.ReadValues(listTag5, true);
            var pdus5 = wrapper5.PDUs;
            string req5 = string.Join(Environment.NewLine, pdus5);
            string t5 = "READ  Area:132, DBnum:1, Start:0, Bytes:14\r\nREAD  Area:132, DBnum:1, Start:30, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:50, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:80, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:90, Bytes:30\r\nREAD  Area:132, DBnum:1, Start:140, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:160, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:180, Bytes:44\r\nREAD  Area:132, DBnum:1, Start:230, Bytes:24\r\nREAD  Area:132, DBnum:1, Start:260, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:270, Bytes:4";
            Assert.AreEqual(req5, t5);

            //var tag=new PLCNckTag() { TagDataType = TagDataType.Float, NckArea = 0xa, NckUnit = 0x8,NckColumn = 0x23, NckLine = 0x1,NckModule = 0x1a,NckLinecount = 0x1};
        }