public byte[] ConvertTransportProtocolToByte()
        {
            var list = new List <byte>
            {
                Utils.StrHexToByte(SendTransportProtocol.DeviceAddr),
                Utils.StrHexToByte(SendTransportProtocol.FunctionType),
                SendSequence
            };

            byte[] collection = null;
            collection = CurrentSendTaskType == 3 ? SendTransportProtocolBuf : Utils.StrHexArrToByte(SendTransportProtocol.SbData);
            list.Add(Convert.ToByte(SendTransportProtocol.DataLength));
            if (Convert.ToByte(SendTransportProtocol.DataLength) != 0)
            {
                list.AddRange(collection);
            }
            var protocol = new CheckTransportProtocol
            {
                ByteArray = list
            };
            var bytes = BitConverter.GetBytes(protocol.CalculateChecksum(SendTransportProtocol.ChecksumMethod));

            if (SendTransportProtocol.ChecksumMethod != 5)
            {
                list.Add(bytes[0]);
            }
            else
            {
                list.Add(bytes[1]);
                list.Add(bytes[0]);
            }

            return(list.ToArray());
        }
        public TransportProtocol ConvertByteToTransportProtocol()
        {
            if (RevTransportProtocolBuf.Length < 5 || RevTransportProtocolBuf.Length > 0x105)
            {
                RevTransportProtocol.Result  = "帧格式错误,解析失败!";
                RevTransportProtocol.IsValid = false;
                if (!IsDispOriginalData)
                {
                    RevTransportProtocol.SbData = "";
                }
                else
                {
                    var builder = new StringBuilder();
                    var index   = 0;
                    while (true)
                    {
                        if (index >= RevTransportProtocolBuf.Length)
                        {
                            RevTransportProtocol.SbData = builder.ToString();
                            break;
                        }

                        builder.Append(Convert.ToString(RevTransportProtocolBuf[index], 0x10).ToUpper().PadLeft(2, '0') + " ");
                        index++;
                    }
                }

                return(RevTransportProtocol);
            }

            var num2 = RevTransportProtocolBuf[2];

            if (Convert.ToByte(SendTransportProtocol.Sequence) != num2)
            {
                RevTransportProtocol.Result  = "帧序列错误,解析失败!";
                RevTransportProtocol.IsValid = false;
                if (!IsDispOriginalData)
                {
                    RevTransportProtocol.SbData = "";
                }
                else
                {
                    var builder2 = new StringBuilder();
                    var index    = 0;
                    while (true)
                    {
                        if (index >= RevTransportProtocolBuf.Length)
                        {
                            RevTransportProtocol.SbData = builder2.ToString();
                            break;
                        }

                        builder2.Append(Convert.ToString(RevTransportProtocolBuf[index], 0x10).ToUpper().PadLeft(2, '0') + " ");
                        index++;
                    }
                }

                return(RevTransportProtocol);
            }

            int num4  = RevTransportProtocolBuf[3];
            var count = RevTransportProtocolBuf.Length - 4 - num4;

            if (count < 1 || count > 2)
            {
                RevTransportProtocol.Result  = "校验值长度错误,解析失败!";
                RevTransportProtocol.IsValid = false;
                if (!IsDispOriginalData)
                {
                    RevTransportProtocol.SbData = "";
                }
                else
                {
                    var builder3 = new StringBuilder();
                    var index    = 0;
                    while (true)
                    {
                        if (index >= RevTransportProtocolBuf.Length)
                        {
                            RevTransportProtocol.SbData = builder3.ToString();
                            break;
                        }

                        builder3.Append(Convert.ToString(RevTransportProtocolBuf[index], 0x10).ToUpper().PadLeft(2, '0') + " ");
                        index++;
                    }
                }

                return(RevTransportProtocol);
            }

            var dst = new byte[RevTransportProtocolBuf.Length - count];

            Buffer.BlockCopy(RevTransportProtocolBuf, 0, dst, 0, RevTransportProtocolBuf.Length - count);
            var list = new List <byte>();

            list.AddRange(dst);
            var num7 = new CheckTransportProtocol {
                ByteArray = list
            }.CalculateChecksum(RevTransportProtocol.ChecksumMethod);
            var buffer2 = new byte[count];

            Buffer.BlockCopy(RevTransportProtocolBuf, RevTransportProtocolBuf.Length - count, buffer2, 0, count);
            uint num8 = 0;

            if (count == 1)
            {
                num8 = buffer2[0];
            }
            else if (count == 2)
            {
                num8 = (uint)((buffer2[0] << 8) + buffer2[1]);
            }
            if (num8 != num7)
            {
                RevTransportProtocol.Result  = "校验错误,解析失败!";
                RevTransportProtocol.IsValid = false;
                if (!IsDispOriginalData)
                {
                    RevTransportProtocol.SbData = "";
                }
                else
                {
                    var builder4 = new StringBuilder();
                    var index    = 0;
                    while (true)
                    {
                        if (index >= RevTransportProtocolBuf.Length)
                        {
                            RevTransportProtocol.SbData = builder4.ToString();
                            break;
                        }

                        builder4.Append(Convert.ToString(RevTransportProtocolBuf[index], 0x10).ToUpper().PadLeft(2, '0') + " ");
                        index++;
                    }
                }

                return(RevTransportProtocol);
            }

            RevTransportProtocol.Result       = "解析成功!";
            RevTransportProtocol.IsValid      = true;
            RevTransportProtocol.DeviceAddr   = Convert.ToString(RevTransportProtocolBuf[0], 0x10).ToUpper().PadLeft(2, '0');
            RevTransportProtocol.FunctionType = Convert.ToString(RevTransportProtocolBuf[1], 0x10).ToUpper().PadLeft(2, '0');
            RevTransportProtocol.Sequence     = RevTransportProtocolBuf[2].ToString();
            RecieveSequence = RevTransportProtocolBuf[2];
            RevTransportProtocol.DataLength = RevTransportProtocolBuf[3].ToString();
            if (RevTransportProtocolBuf[3] == 0)
            {
                if (!IsDispOriginalData)
                {
                    RevTransportProtocol.SbData = "";
                }
                else
                {
                    var builder5 = new StringBuilder();
                    var index    = 0;
                    while (true)
                    {
                        if (index >= RevTransportProtocolBuf.Length)
                        {
                            RevTransportProtocol.SbData = builder5.ToString();
                            break;
                        }

                        builder5.Append(Convert.ToString(RevTransportProtocolBuf[index], 0x10).ToUpper().PadLeft(2, '0') + " ");
                        index++;
                    }
                }
            }
            else if (IsDispOriginalData)
            {
                var builder7 = new StringBuilder();
                var index    = 0;
                while (true)
                {
                    if (index >= RevTransportProtocolBuf.Length)
                    {
                        RevTransportProtocol.SbData = builder7.ToString();
                        break;
                    }

                    builder7.Append(Convert.ToString(RevTransportProtocolBuf[index], 0x10).ToUpper().PadLeft(2, '0') + " ");
                    index++;
                }
            }
            else
            {
                var buffer3 = new byte[RevTransportProtocolBuf[3]];
                Buffer.BlockCopy(RevTransportProtocolBuf, 4, buffer3, 0, RevTransportProtocolBuf[3]);
                var builder6 = new StringBuilder();
                var index    = 0;
                while (true)
                {
                    if (index >= buffer3.Length)
                    {
                        RevTransportProtocol.SbData = builder6.ToString();
                        break;
                    }

                    builder6.Append(Convert.ToString(buffer3[index], 0x10).ToUpper().PadLeft(2, '0') + " ");
                    index++;
                }
            }

            if (IsAutoNewLine)
            {
                RevTransportProtocol.SbData = RevTransportProtocol.SbData + "\r\n";
            }
            RevTransportProtocol.Checksum = num8.ToString();
            IsRevTransportProtocolSuccess = true;
            return(RevTransportProtocol);
        }