Exemplo n.º 1
0
        //public static CommonMessage<IMessageBody> unpack(byte[] a)
        //{
        //    if (a[0] == 126 && a[a.Length - 1] == 126)
        //    {
        //        bool var2 = Check(a = reverseEscapeData(a)) == a[a.Length - 2];
        //        if (!var2)
        //        {
        //            throw new Exception("校验位出错");
        //        }
        //        else
        //        {
        //            T808_MessageHeader var5 = getHeader(a);
        //            CommonMessageBody var4 = var5.getSubpackage() ? var3.getBody(var5, BytesUtil.cutBytes(17, a.length - 19, a)): (var4 = var3.getBody(var5, BytesUtil.cutBytes(13, a.length - 15, a)));

        //        }
        //    }
        //    else
        //    {
        //        throw new Exception("不是7E开头7E结尾");
        //    }
        //}

        public static T808_MessageHeader getHeader(byte[] a)
        {
            T808_MessageHeader var1 = new T808_MessageHeader();

            byte[] var2  = cutBytes(1, 12, a);     //截取出消息头
            var    msgid = getWord(0, var2);
            int    var3  = parseBytesToInt(msgid); //messageid

            byte[] var4  = getBigWord(2, var2);
            int    var5  = ToolHelper.Bytes2Int(var4); //getBitsValue(0, 9, var4);//
            int    var6  = getBitsValue(10, 3, var4);
            bool   var12 = getBooleanValue(1, 2, var4);
            String var7  = bcdToStr(cutBytes(4, 6, var2));
            int    var11 = parseBytesToInt(getWord(10, var2));
            int    var8  = 0;
            int    var9  = 0;

            if (var12)
            {
                byte[] var10    = getWord(13, a);
                byte[] var10000 = getWord(15, a);
                var8 = parseBytesToInt(var10);
                var9 = parseBytesToInt(var10000);
            }

            var1.setBodyLength(var5);
            var1.setEncrypt(var6);
            var1.setMessageID(var3);
            var1.setPackageCounts(var8);
            var1.setPackageNum(var9);
            var1.setRunningNum(var11);
            var1.setSimNum(var7);
            var1.setSubpackage(var12);
            return(var1);
        }
Exemplo n.º 2
0
        public static byte[] reverseEscapeData(byte[] data)
        {
            byte[] result;
            try
            {
                int    i      = 0;
                Stream stream = new MemoryStream();
                while (true)
                {
                    if (i >= data.Length - 1)
                    {
                        if (data[data.Length - 2] != 125)
                        {
                            if (data[data.Length - 1] == 125)
                            {
                                throw new Exception("错误的协议无法转义!");
                            }

                            stream.WriteByte(data[data.Length - 1]);
                        }

                        result = ToolHelper.StreamToBytes(stream);
                        break;
                    }
                    if (data[i] == 125 && data[i + 1] == 2)
                    {
                        ++i;
                        stream.WriteByte(126);
                    }
                    else if (data[i] == 125 && data[i + 1] == 1)
                    {
                        ++i;
                        stream.WriteByte(125);
                    }
                    else
                    {
                        if (data[i] == 125 && data[i + 1] != 2 || data[i] == 125 && data[i + 1] != 1)
                        {
                            throw new Exception("错误的协议无法转义!");
                        }

                        stream.WriteByte(data[i]);
                    }

                    ++i;
                }
            }
            catch
            {
                throw;
            }

            return(result);
        }
Exemplo n.º 3
0
        public static byte[] getHeaderBytes <T>(CommonMessage <T> a) where T : IMessageBody
        {
            byte[] var1 = getInitNoPackHeadr();
            byte[] var2 = ToolHelper.Int2Bytes2((int)a.getMessageID());
            var1[0] = var2[0];
            var1[1] = var2[1];

            T808_MessageHeader head = (T808_MessageHeader)a.getMessageHeader();

            if (head.getSimNum() != null && !head.getSimNum().Equals(""))
            {
                if (head.getSimNum().Length > 12)
                {
                    head.setSimNum(head.getSimNum().Substring(0, 12));
                }
                else
                {
                    if (head.getSimNum().Length < 12)
                    {
                        head.setSimNum(formatString(head.getSimNum()));
                    }
                }
            }
            else
            {
                head.setSimNum("000000000000");
            }

            var2 = strToBcd(head.getSimNum());
            byte[] var10001 = var1;
            byte[] var4     = var1;
            byte[] var10002 = var1;
            var1[4]      = var2[0];
            var1[5]      = var2[1];
            var1[6]      = var2[2];
            var1[7]      = var2[3];
            var1[8]      = var2[4];
            var1[9]      = var2[5];
            var1         = ToolHelper.Int2Bytes2(getRunningNum());
            var10002[10] = var1[0];
            var10001[11] = var1[1];
            return(var4);
        }
Exemplo n.º 4
0
        public static byte[] escapeData(byte[] data)
        {
            Stream stream = new MemoryStream();

            byte[] result;
            try
            {
                int i = 0;

                while (true)
                {
                    if (i >= data.Length)
                    {
                        result = ToolHelper.StreamToBytes(stream);
                        break;
                    }

                    if (data[i] == 126)
                    {
                        stream.WriteByte(125);
                        stream.WriteByte(2);
                    }
                    else if (data[i] == 125)
                    {
                        stream.WriteByte(125);
                        stream.WriteByte(1);
                    }
                    else
                    {
                        stream.WriteByte(data[i]);
                    }

                    ++i;
                }
            }
            catch
            {
                throw;
            }

            return(result);
        }