Esempio n. 1
0
        public void Test_Package_simple_Type()
        {
            TRPackage tr = new TRPackage()
            {
                identifier         = (ushort)CommandIdentifier.Hello,
                content_identifier = 0
            };

            IByteBuffer bf = ByteStreamToObjectConverter.Serialize <TRPackage>(tr);

            byte[] content = new byte[bf.WriterIndex];
            bf.ReadBytes(content);

            tr.xor_check_code = TRPackage.getChekcCode(content);
            bf.WriteUnsignedShort(tr.xor_check_code);


            bf.ResetReaderIndex();


            TRPackage ar = ByteStreamToObjectConverter.Deserialize <TRPackage>(bf);

            Assert.AreEqual(ar.delimiter, 0xefef);
            Assert.AreEqual(ar.packageid, tr.packageid);
            Assert.AreEqual(ar.identifier, tr.identifier);
            Assert.AreEqual(ar.data_len, tr.data_len);
            Assert.AreEqual(ar.content_identifier, tr.content_identifier);
            Assert.AreEqual(ar.content_len, tr.content_len);
            Assert.AreEqual(ar.xor_check_code, tr.xor_check_code);
            Assert.AreEqual(ar.content_obj, null);
            //System.Console.ReadLine();
        }
        public void Test_Package_simple_Type()
        {
            PooledByteBufferAllocator pbba = new PooledByteBufferAllocator();
            IByteBuffer bf = pbba.CompositeBuffer();

            bf.WriteByte(0xef);
            bf.WriteByte(0xef);                                     // 超始标识
            bf.SetUnsignedInt(bf.WriterIndex, 2000);                // 数据包ID
            bf.SetWriterIndex(bf.WriterIndex + sizeof(UInt32));
            bf.WriteUnsignedShort((ushort)CommandIdentifier.Hello); // 命令标识
            bf.WriteInt(6);                                         // 数据长度
            bf.WriteUnsignedShort(2);                               // 内容标识
            bf.WriteInt(0);                                         // 内容长度
            bf.WriteUnsignedShort(20);

            TRPackage ar = ByteStreamToObjectConverter.Deserialize <TRPackage>(bf);

            Assert.AreEqual(ar.delimiter, 0xefef);
            Assert.AreEqual(ar.packageid, 2000);
            Assert.AreEqual(ar.identifier, (ushort)CommandIdentifier.Hello);
            Assert.AreEqual(ar.data_len, 6);
            Assert.AreEqual(ar.content_identifier, 2);
            Assert.AreEqual(ar.content_len, 0);
            Assert.AreEqual(ar.content_obj, null);
            //System.Console.ReadLine();
        }
        public void Test_content_maintaince_string()
        {
            PooledByteBufferAllocator pbba = new PooledByteBufferAllocator();
            IByteBuffer bf = pbba.CompositeBuffer();

            bf.WriteByte(0xef);                                               // 1
            bf.WriteByte(0xef);                                               // 超始标识 1
            bf.SetUnsignedInt(bf.WriterIndex, 2000);                          // 数据包ID 4
            bf.SetWriterIndex(bf.WriterIndex + sizeof(UInt32));
            bf.WriteUnsignedShort((ushort)CommandIdentifier.Report);          // 命令标识 2
            bf.WriteInt(6);                                                   // 数据长度 4
            bf.WriteUnsignedShort((ushort)PackageDataIdnetifier.Maintenance); // 内容标识 2
            bf.WriteInt(100);                                                 // 内容长度 4
            ////////////////写入内容/////////////////////
            bf.WriteByte(0x01);                                               // 1

            MemoryStream ms = new MemoryStream();
            BinaryWriter bw = new BinaryWriter(ms, encoding: Encoding.ASCII);
            string       bstring;

            bstring = "codes";
            bw.Write(bstring);
            ms.Seek(0, SeekOrigin.Begin);

            // Read the string as raw bytes using FileStream...
            // The first series of bytes is the UTF7 encoded length of the
            // string. In this case, however, it is just the first two bytes.
            int len = ms.ReadByte() & 0x7f;

            len += ms.ReadByte() & 0x80;

            byte[] code_str = new byte[len];
            ms.Read(code_str, 0, len);

            ms.Seek(0, SeekOrigin.Begin);
            bf.WriteByte(ms.ReadByte());
            bf.WriteByte(ms.ReadByte());



            string convertred = Encoding.ASCII.GetString(code_str);


            bf.WriteBytes(code_str);


            ms.Seek(0, SeekOrigin.Begin);
            bf.WriteByte(ms.ReadByte());
            bf.WriteByte(ms.ReadByte());
            bf.WriteBytes(code_str);

            ms.Close();
            ////////////////写入内容/////////////////////
            bf.WriteUnsignedShort(20); //2

            TRPackage ar = ByteStreamToObjectConverter.Deserialize <TRPackage>(bf);

            Assert.AreEqual(ar.delimiter, 0xefef);
            Assert.AreEqual(ar.packageid, 2000);
            Assert.AreEqual(ar.identifier, (ushort)CommandIdentifier.Report);
            Assert.AreEqual(ar.data_len, 6);
            Assert.AreEqual(ar.content_identifier, (ushort)PackageDataIdnetifier.Maintenance);
            Assert.AreEqual(ar.content_len, 100);
            Assert.AreEqual(ar.content_obj.GetType(), typeof(TRCloudMaintenance));
            Assert.AreEqual(20, ar.xor_check_code);
            //System.Console.ReadLine();
        }
        public void Test_content_analysis_result_list()
        {
            PooledByteBufferAllocator pbba = new PooledByteBufferAllocator();
            IByteBuffer bf = pbba.CompositeBuffer();

            bf.WriteByte(0xef);                                                  // 1
            bf.WriteByte(0xef);                                                  // 超始标识 1
            bf.SetUnsignedInt(bf.WriterIndex, 2000);                             // 数据包ID 4
            bf.SetWriterIndex(bf.WriterIndex + sizeof(UInt32));
            bf.WriteUnsignedShort((ushort)CommandIdentifier.Report);             // 命令标识 2
            bf.WriteInt(6);                                                      // 数据长度 4
            bf.WriteUnsignedShort((ushort)PackageDataIdnetifier.AnalyseResults); // 内容标识 2
            bf.WriteInt(100);                                                    // 内容长度 4
            ////////////////写入内容/////////////////////
            bf.WriteInt(23);                                                     // recordid
            bf.WriteInt(24);                                                     // type
            bf.WriteLong(25);                                                    // time
            bf.WriteInt(26);                                                     // analysiscount
            bf.WriteInt(27);                                                     // alarmcount
            bf.WriteBoolean(true);                                               // isalarm


            MemoryStream ms = new MemoryStream();
            BinaryWriter bw = new BinaryWriter(ms, encoding: Encoding.ASCII);
            string       bstring;

            bstring = "codes";
            bw.Write(bstring);
            ms.Seek(0, SeekOrigin.Begin);

            // Read the string as raw bytes using FileStream...
            // The first series of bytes is the UTF7 encoded length of the
            // string. In this case, however, it is just the first two bytes.
            int len = ms.ReadByte() & 0x7f;

            len += ms.ReadByte() & 0x80;

            byte[] code_str = new byte[len];
            ms.Read(code_str, 0, len);

            ms.Seek(0, SeekOrigin.Begin);
            bf.WriteByte(ms.ReadByte());
            bf.WriteByte(ms.ReadByte());
            bf.WriteBytes(code_str); // softversion


            ms.Seek(0, SeekOrigin.Begin);
            bf.WriteByte(ms.ReadByte());
            bf.WriteByte(ms.ReadByte());
            bf.WriteBytes(code_str);// algversion

            ms.Seek(0, SeekOrigin.Begin);
            bf.WriteByte(ms.ReadByte());
            bf.WriteByte(ms.ReadByte());
            bf.WriteBytes(code_str);// libversion


            ms.Seek(0, SeekOrigin.Begin);
            bf.WriteByte(ms.ReadByte());
            bf.WriteByte(ms.ReadByte());
            bf.WriteBytes(code_str);// username


            // alarm result
            bf.WriteInt(1); // count

            // alarm info
            bf.WriteInt(28);// masstype


            ms.Seek(0, SeekOrigin.Begin);
            bf.WriteByte(ms.ReadByte());
            bf.WriteByte(ms.ReadByte());
            bf.WriteBytes(code_str); //  massname
            bf.WriteFloat(29);       // identensity

            bf.WriteInt(30);

            bf.WriteFloat(31);
            bf.WriteFloat(32);
            bf.WriteFloat(33);
            bf.WriteFloat(34);
            bf.WriteFloat(35);


            bf.WriteFloat(36);
            bf.WriteFloat(37);
            bf.WriteFloat(38);
            bf.WriteFloat(39);
            bf.WriteFloat(40);



            ms.Close();
            ////////////////写入内容/////////////////////
            bf.WriteUnsignedShort(20); //2

            TRPackage ar = ByteStreamToObjectConverter.Deserialize <TRPackage>(bf);

            Assert.AreEqual(ar.delimiter, 0xefef);
            Assert.AreEqual(ar.packageid, 2000);
            Assert.AreEqual(ar.identifier, (ushort)CommandIdentifier.Report);
            Assert.AreEqual(ar.data_len, 6);
            Assert.AreEqual(ar.content_identifier, (ushort)PackageDataIdnetifier.AnalyseResults);
            Assert.AreEqual(ar.content_len, 100);
            Assert.AreEqual(ar.content_obj.GetType(), typeof(TRCloudAnalyseResult));
            Assert.AreEqual(20, ar.xor_check_code);
            //System.Console.ReadLine();
        }