예제 #1
0
        public JT809_0x1500_0x1502 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x1500_0x1502 value = new JT809_0x1500_0x1502();

            value.PhotoRspFlag              = (JT809_0x1502_PhotoRspFlag)reader.ReadByte();
            value.VehiclePosition.Encrypt   = (JT809_VehiclePositionEncrypt)reader.ReadByte();
            value.VehiclePosition.Day       = reader.ReadByte();
            value.VehiclePosition.Month     = reader.ReadByte();
            value.VehiclePosition.Year      = reader.ReadUInt16();
            value.VehiclePosition.Hour      = reader.ReadByte();
            value.VehiclePosition.Minute    = reader.ReadByte();
            value.VehiclePosition.Second    = reader.ReadByte();
            value.VehiclePosition.Lon       = reader.ReadUInt32();
            value.VehiclePosition.Lat       = reader.ReadUInt32();
            value.VehiclePosition.Vec1      = reader.ReadUInt16();
            value.VehiclePosition.Vec2      = reader.ReadUInt16();
            value.VehiclePosition.Vec3      = reader.ReadUInt32();
            value.VehiclePosition.Direction = reader.ReadUInt16();
            value.VehiclePosition.Altitude  = reader.ReadUInt16();
            value.VehiclePosition.State     = reader.ReadUInt32();
            value.VehiclePosition.Alarm     = reader.ReadUInt32();
            value.LensID   = reader.ReadByte();
            value.PhotoLen = reader.ReadUInt32();
            value.SizeType = (JT809__0x9502_SizeType)reader.ReadByte();
            value.Type     = (JT809__0x9502_ImageType)reader.ReadByte();
            if (value.PhotoLen > 0)
            {
                value.Photo = reader.ReadArray((int)value.PhotoLen).ToArray();
            }
            return(value);
        }
예제 #2
0
        public JT809_0x1400_0x1402 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            var value = new JT809_0x1400_0x1402();

            if (config.Version == JT809Version.JTT2011)
            {
                value.WarnSrc = (JT809WarnSrc)reader.ReadByte();
            }
            else
            {
                value.SourcePlatformId = reader.ReadString(11);
            }
            value.WarnType = (JT809WarnType)reader.ReadUInt16();
            value.WarnTime = reader.ReadUTCDateTime();
            if (config.Version == JT809Version.JTT2011)
            {
                value.InfoID = reader.ReadUInt32();
            }
            else
            {
                value.StartTime = reader.ReadUTCDateTime();
                value.EndTime   = reader.ReadUTCDateTime();
#warning 此处车牌号文档长度有误,使用旧版长度21
                value.VehicleNo             = reader.ReadString(21);
                value.VehicleColor          = (JT809VehicleColorType)reader.ReadByte();
                value.DestinationPlatformId = reader.ReadString(11);
                value.DRVLineId             = reader.ReadUInt32();
            }
            value.InfoLength  = reader.ReadUInt32();
            value.InfoContent = reader.ReadString((int)value.InfoLength);
            return(value);
        }
예제 #3
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_JT1078_0x9B00 value = new JT809_JT1078_0x9B00();
            var virtualHex            = reader.ReadVirtualArray(21);

            value.VehicleNo = reader.ReadString(21);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]车牌号", value.VehicleNo);
            value.VehicleColor = (JT809VehicleColorType)reader.ReadByte();
            writer.WriteString($"[{((byte)value.VehicleColor).ReadNumber()}]车牌颜色", value.VehicleColor.ToString());
            value.SubBusinessType = reader.ReadUInt16();
            writer.WriteString($"[{value.SubBusinessType.ReadNumber()}]子业务类型标识", ((JT809SubBusinessType)value.SubBusinessType).ToString());
            value.DataLength = reader.ReadUInt32();
            writer.WriteNumber($"[{value.DataLength.ReadNumber()}]后续数据长度", value.DataLength);
            try
            {
                if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance))
                {
                    if (instance is JT809SubBodies subBodies)
                    {
                        if (!subBodies.SkipSerialization)
                        {
                            writer.WriteStartObject("子业务类型");
                            instance.Analyze(ref reader, writer, config);
                            writer.WriteEndObject();
                        }
                    }
                }
            }
            catch
            {
                throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}");
            }
        }
예제 #4
0
        public JT809_0x9002 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x9002 jT809_0X9002 = new JT809_0x9002();

            jT809_0X9002.Result = (JT809_0x9002_Result)reader.ReadByte();
            return(jT809_0X9002);
        }
예제 #5
0
        public JT809_0x9007 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x9007 value = new JT809_0x9007();

            value.ErrorCode = (JT809_0x1007_ErrorCode)reader.ReadByte();
            return(value);
        }
예제 #6
0
        public JT809_0x9200_0x9206 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x9200_0x9206 value = new JT809_0x9200_0x9206();

            value.ReasonCode = (JT809_0x9206_ReasonCode)reader.ReadByte();
            return(value);
        }
예제 #7
0
 public byte[] AnalyzeJsonBuffer <T>(ReadOnlySpan <byte> bytes, JsonWriterOptions options = default, int minBufferSize = 8096)
 {
     byte[] buffer = JT809ArrayPool.Rent(minBufferSize);
     try
     {
         JT809MessagePackReader jT809MessagePackReader = new JT809MessagePackReader(bytes);
         if (CheckPackageType(typeof(T)))
         {
             jT809MessagePackReader.Decode(buffer);
         }
         var analyze = jT809Config.GetAnalyze <T>();
         using (MemoryStream memoryStream = new MemoryStream())
             using (Utf8JsonWriter utf8JsonWriter = new Utf8JsonWriter(memoryStream, options))
             {
                 if (!CheckPackageType(typeof(T)))
                 {
                     utf8JsonWriter.WriteStartObject();
                 }
                 analyze.Analyze(ref jT809MessagePackReader, utf8JsonWriter, jT809Config);
                 if (!CheckPackageType(typeof(T)))
                 {
                     utf8JsonWriter.WriteEndObject();
                 }
                 utf8JsonWriter.Flush();
                 return(memoryStream.ToArray());
             }
     }
     finally
     {
         JT809ArrayPool.Return(buffer);
     }
 }
예제 #8
0
        public JT809_0x1200_0x1201 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x1200_0x1201 value = new JT809_0x1200_0x1201();

            if (config.Version == JT809Version.JTT2011)
            {
                value.PlateformId       = reader.ReadString(11);
                value.ProducerId        = reader.ReadString(11);
                value.TerminalModelType = reader.ReadString(20);
                value.TerminalId        = reader.ReadString(7);
                value.TerminalId        = value.TerminalId.ToUpper();
                value.TerminalSimCode   = reader.ReadString(12);
            }
            else
            {
                value.PlateformId       = reader.ReadString(11);
                value.ProducerId        = reader.ReadString(11);
                value.TerminalModelType = reader.ReadString(30);
                value.IMIEId            = reader.ReadString(15);
                value.TerminalId        = reader.ReadString(30);
                value.TerminalId        = value.TerminalId.ToUpper();
                value.TerminalSimCode   = reader.ReadString(13);
            }
            return(value);
        }
예제 #9
0
        public JT809_0x9200_0x9204 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x9200_0x9204 value = new JT809_0x9200_0x9204();

            value.CarInfo = reader.ReadRemainStringContent();
            return(value);
        }
예제 #10
0
        public JT809_0x9001 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x9001 jT809_0X9001 = new JT809_0x9001();

            jT809_0X9001.VerifyCode = reader.ReadUInt32();
            return(jT809_0X9001);
        }
예제 #11
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x1103 value = new JT809_0x1103();

            value.SubBusinessType = reader.ReadUInt16();
            writer.WriteString($"[{value.SubBusinessType.ReadNumber()}]子业务类型标识", ((JT809SubBusinessType)value.SubBusinessType).ToString());
            value.DataLength = reader.ReadUInt32();
            writer.WriteNumber($"[{value.DataLength.ReadNumber()}]后续数据长度", value.DataLength);
            value.Count = reader.ReadByte();
            writer.WriteNumber($"[{value.Count.ReadNumber()}]个数", value.Count);
            writer.WriteStartArray("上传平台间消息序列号通知消息");
            for (int i = 0; i < value.Count; i++)
            {
                writer.WriteStartObject();
                JT809ManageMsgSNInform item = new JT809ManageMsgSNInform();
                item.SubBusinessType = reader.ReadUInt16();
                writer.WriteString($"[{item.SubBusinessType.ReadNumber()}]子业务类型标识", ((JT809SubBusinessType)item.SubBusinessType).ToString());
                item.MsgSN = reader.ReadUInt32();
                writer.WriteNumber($"[{item.MsgSN.ReadNumber()}]对应得子夜吴数据类型报文序列号", item.MsgSN);
                var virtualHex = reader.ReadVirtualArray(8);
                item.Time = reader.ReadUTCDateTime();
                writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]系统UTC时间", item.Time);
                writer.WriteEndObject();
            }
            writer.WriteEndArray();
        }
예제 #12
0
        public JT809_0x9200_0x9205 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x9200_0x9205 jT809_0X1200_0x9205 = new JT809_0x9200_0x9205();

            jT809_0X1200_0x9205.ReasonCode = (JT809_0x9205_ReasonCode)reader.ReadByte();
            return(jT809_0X1200_0x9205);
        }
예제 #13
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x1300 value = new JT809_0x1300();

            value.SubBusinessType = reader.ReadUInt16();
            writer.WriteString($"[{value.SubBusinessType.ReadNumber()}]子业务类型标识", ((JT809SubBusinessType)value.SubBusinessType).ToString());
            value.DataLength = reader.ReadUInt32();
            writer.WriteNumber($"[{value.DataLength.ReadNumber()}]后续数据长度", value.DataLength);
            try
            {
                if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance))
                {
                    if (instance is JT809SubBodies subBodies)
                    {
                        if (!subBodies.SkipSerialization)
                        {
                            instance.Analyze(ref reader, writer, config);
                        }
                    }
                }
            }
            catch
            {
                throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}");
            }
        }
예제 #14
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x9500_0x9505 value = new JT809_0x9500_0x9505();
            var virtualHex            = reader.ReadVirtualArray(10);

            value.AuthenticationCode = reader.ReadBCD(20);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]监管平台下发的鉴权码", value.AuthenticationCode);
            virtualHex            = reader.ReadVirtualArray(20);
            value.AccessPointName = reader.ReadString(20);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]拨号点名称", value.AccessPointName);
            virtualHex     = reader.ReadVirtualArray(49);
            value.UserName = reader.ReadString(49);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]拨号用户名", value.UserName);
            virtualHex     = reader.ReadVirtualArray(49);
            value.Password = reader.ReadString(22);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]拨号密码", value.Password);
            virtualHex     = reader.ReadVirtualArray(32);
            value.ServerIP = reader.ReadString(32);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]地址", value.ServerIP);
            value.TcpPort = reader.ReadUInt16();
            writer.WriteNumber($"[{value.TcpPort.ReadNumber()}]", value.TcpPort);
            value.UdpPort = reader.ReadUInt16();
            writer.WriteNumber($"[{value.UdpPort.ReadNumber()}]", value.UdpPort);
            virtualHex    = reader.ReadVirtualArray(8);
            value.EndTime = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]结束时间", value.EndTime);
        }
예제 #15
0
        public JT809_0x1500_0x1505 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x1500_0x1505 jT809_0X1500_0X1505 = new JT809_0x1500_0x1505();

            jT809_0X1500_0X1505.Result = (JT809_0x1505_Result)reader.ReadByte();
            return(jT809_0X1500_0X1505);
        }
예제 #16
0
        public JT809_0x9008 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x9008 jT809_0X9008 = new JT809_0x9008();

            jT809_0X9008.ReasonCode = (JT809_0x9008_ReasonCode)reader.ReadByte();
            return(jT809_0X9008);
        }
        public JT809_JT1078_0x1800_0x1802 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_JT1078_0x1800_0x1802 jT808_JT1078_0x1800_0x1802 = new JT809_JT1078_0x1800_0x1802();

            jT808_JT1078_0x1800_0x1802.Result = reader.ReadByte();
            return(jT808_JT1078_0x1800_0x1802);
        }
예제 #18
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x9007 value = new JT809_0x9007();

            value.ErrorCode = (JT809_0x1007_ErrorCode)reader.ReadByte();
            writer.WriteString($"[{value.ErrorCode.ToByteValue()}错误代码]", value.ErrorCode.ToString());
        }
예제 #19
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x1200_0x1203 value = new JT809_0x1200_0x1203();

            value.GNSSCount = reader.ReadByte();
            writer.WriteNumber($"[{value.GNSSCount.ReadNumber()}]卫星定位数据个数", value.GNSSCount);
            value.GNSS = new List <JT809_0x1200_0x1202>();
            writer.WriteStartArray("实时上传车辆定位信息消息");
            if (value.GNSSCount > 0)
            {
                for (int i = 0; i < value.GNSSCount; i++)
                {
                    try
                    {
                        writer.WriteStartObject();
                        config.GetMessagePackFormatter <JT809_0x1200_0x1202>().Analyze(ref reader, writer, config);
                        writer.WriteEndObject();
                    }
                    catch (Exception)
                    {
                    }
                }
            }
            writer.WriteEndArray();
        }
예제 #20
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x9200_0x9206 value = new JT809_0x9200_0x9206();

            value.ReasonCode = (JT809_0x9206_ReasonCode)reader.ReadByte();
            writer.WriteString($"[{value.ReasonCode.ToByteValue()}]结束车辆定位信息交换请求原因", value.ReasonCode.ToString());
        }
예제 #21
0
        public JT809_0x9200_0x9204 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x9200_0x9204 jT809_0X1200_0x9204 = new JT809_0x9200_0x9204();

            jT809_0X1200_0x9204.CarInfo = reader.ReadRemainStringContent();
            return(jT809_0X1200_0x9204);
        }
예제 #22
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x9400_0x9401 value = new JT809_0x9400_0x9401();

            value.WarnSrc = (JT809WarnSrc)reader.ReadByte();
            writer.WriteString($"[{value.WarnSrc.ToByteValue()}]报警信息来源", value.WarnSrc.ToString());
            value.WarnType = reader.ReadUInt16();
            writer.WriteNumber($"[{value.WarnType.ReadNumber()}]报警类型", value.WarnType);
            var virtualHex = reader.ReadVirtualArray(8);

            value.WarnTime = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]报警时间", value.WarnTime);
            virtualHex          = reader.ReadVirtualArray(4);
            value.SupervisionID = reader.ReadHex(4);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]报警督办ID", value.SupervisionID);
            virtualHex = reader.ReadVirtualArray(8);
            value.SupervisionEndTime = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]督办截止时间", value.SupervisionEndTime);
            value.SupervisionLevel = (JT809_9401_SupervisionLevel)reader.ReadByte();
            writer.WriteString($"[{value.SupervisionLevel.ToByteValue()}]督办级别", value.SupervisionLevel.ToString());
            virtualHex       = reader.ReadVirtualArray(16);
            value.Supervisor = reader.ReadString(16);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]督办人", value.Supervisor);
            virtualHex          = reader.ReadVirtualArray(20);
            value.SupervisorTel = reader.ReadString(20);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]督办联系电话", value.SupervisorTel);
            virtualHex            = reader.ReadVirtualArray(32);
            value.SupervisorEmail = reader.ReadString(32);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]督办联系电子邮件", value.SupervisorEmail);
        }
예제 #23
0
        public JT809_0x1200 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x1200 value = new JT809_0x1200();

            value.VehicleNo       = reader.ReadString(21);
            value.VehicleColor    = (JT809VehicleColorType)reader.ReadByte();
            value.SubBusinessType = reader.ReadUInt16();
            value.DataLength      = reader.ReadUInt32();
            try
            {
                if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance))
                {
                    if (instance is JT809SubBodies subBodies)
                    {
                        if (!subBodies.SkipSerialization)
                        {
                            value.SubBodies = JT809MessagePackFormatterResolverExtensions.JT809DynamicDeserialize(
                                instance,
                                ref reader, config);
                        }
                    }
                }
            }
            catch
            {
                throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}");
            }
            return(value);
        }
예제 #24
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            var value      = new JT809_0x1400_0x1413();
            var virtualHex = reader.ReadVirtualArray(11);

            value.SourcePlatformId = reader.ReadBigNumber(11);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]发起报警平台唯一编码", value.SourcePlatformId);
            virtualHex     = reader.ReadVirtualArray(8);
            value.WarnTime = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]报警时间", value.WarnTime);
            value.SourceDataType = reader.ReadUInt16();
            writer.WriteString($"[{value.SourceDataType.ReadNumber()}]对应启动车辆定位信息交换请求消息源子业务类型标识", ((JT809SubBusinessType)value.SourceDataType).ToString());
            value.SourceMsgSn = reader.ReadUInt32();
            writer.WriteNumber($"[{value.SourceMsgSn.ReadNumber()}对应启动车辆定位信息交换请求消息源报文序列号]", value.SourceMsgSn);
            virtualHex = reader.ReadVirtualArray(8);
            value.SupervisionEndTime = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]督办截止时间", value.SupervisionEndTime);
            value.SupervisionLevel = (JT809_0x1413_SupervisionLevel)reader.ReadByte();
            writer.WriteString($"[{value.SupervisionLevel.ToByteValue()}]督办级别", value.SupervisionLevel.ToString());
            virtualHex       = reader.ReadVirtualArray(16);
            value.Supervisor = reader.ReadString(16);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]督办人", value.Supervisor);
            virtualHex          = reader.ReadVirtualArray(20);
            value.SupervisorTel = reader.ReadString(20);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]督办人联系电话", value.SupervisorTel);
            virtualHex            = reader.ReadVirtualArray(32);
            value.SupervisorEmail = reader.ReadString(32);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]督办人联系电子邮件", value.SupervisorTel);
        }
예제 #25
0
        public JT809_0x1200_0x1207 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x1200_0x1207 jT809_0X1200_0X1207 = new JT809_0x1200_0x1207();

            jT809_0X1200_0X1207.StartTime = reader.ReadUTCDateTime();
            jT809_0X1200_0X1207.EndTime   = reader.ReadUTCDateTime();
            return(jT809_0X1200_0X1207);
        }
예제 #26
0
        public JT809_0x1002 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x1002 value = new JT809_0x1002();

            value.Result     = (JT809_0x1002_Result)reader.ReadByte();
            value.VerifyCode = reader.ReadUInt32();
            return(value);
        }
        public JT809_JT1078_0x9900_0x9901 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_JT1078_0x9900_0x9901 jT808_JT1078_0x9900_0x9901 = new JT809_JT1078_0x9900_0x9901();

            jT808_JT1078_0x9900_0x9901.Result     = reader.ReadByte();
            jT808_JT1078_0x9900_0x9901.ItemNumber = reader.ReadByte();
            return(jT808_JT1078_0x9900_0x9901);
        }
예제 #28
0
        public JT809_0x1500_0x1503 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x1500_0x1503 jT809_0X1500_0X1503 = new JT809_0x1500_0x1503();

            jT809_0X1500_0X1503.MsgID  = reader.ReadUInt32();
            jT809_0X1500_0X1503.Result = (JT809_0x1503_Result)reader.ReadByte();
            return(jT809_0X1500_0X1503);
        }
예제 #29
0
        public JT809_JT1078_0x9B00_0x9B02 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_JT1078_0x9B00_0x9B02 value = new JT809_JT1078_0x9B00_0x9B02();

            value.Result    = (JT809_JT1078_0x9B00_0x9B02_Result)reader.ReadByte();
            value.SessionId = reader.ReadUInt16();
            return(value);
        }
예제 #30
0
        public JT809_0x1200_0x120D Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x1200_0x120D value = new JT809_0x1200_0x120D();

            value.EwaybillLength = reader.ReadUInt32();
            value.EwaybillInfo   = reader.ReadString((int)value.EwaybillLength);
            return(value);
        }