public void Test1_1() { //7E //81 03 //00 0A //00 //01 23 45 67 89 00 //0A 01 //00 00 00 01 //04 // 00 00 00 0A //05 //7E byte[] bytes = "7E8103000A000123456789000A0100000001040000000A057E".ToHexBytes(); JT808Package jT808_0X8103 = JT808Serializer.Deserialize <JT808Package>(bytes); Assert.Equal(Enums.JT808MsgId.设置终端参数.ToUInt16Value(), jT808_0X8103.Header.MsgId); Assert.Equal(10, jT808_0X8103.Header.MsgNum); Assert.Equal("123456789", jT808_0X8103.Header.TerminalPhoneNo); JT808_0x8103 JT808Bodies = (JT808_0x8103)jT808_0X8103.Bodies; foreach (var item in JT808Bodies.ParamList) { Assert.Equal(0x0001u, ((JT808_0x8103_0x0001)item).ParamId); Assert.Equal(4, ((JT808_0x8103_0x0001)item).ParamLength); Assert.Equal(10u, ((JT808_0x8103_0x0001)item).ParamValue); } }
public void Test3() { var JT808_0x8103 = new JT808_0x8103 { ParamList = new List <JT808_0x8103_BodyBase>(), CustomParamList = new List <JT808_0x8103_CustomBodyBase> { new JT808_0x8103_0x0075() { AudioOutputEnabled = 1, OSD = 2, RTS_EncodeMode = 3, RTS_KF_Interval = 4, RTS_Resolution = 5, RTS_Target_CodeRate = 6, RTS_Target_FPS = 7, StreamStore_EncodeMode = 8, StreamStore_KF_Interval = 9, StreamStore_Resolution = 10, StreamStore_Target_CodeRate = 11, StreamStore_Target_FPS = 12 } } }; var customParams = Newtonsoft.Json.JsonConvert.SerializeObject(JT808_0x8103.CustomParamList); //"[{\"ParamId\":117,\"ParamLength\":21,\"RTS_EncodeMode\":3,\"RTS_Resolution\":5,\"RTS_KF_Interval\":4,\"RTS_Target_FPS\":7,\"RTS_Target_CodeRate\":6,\"StreamStore_EncodeMode\":8,\"StreamStore_Resolution\":10,\"StreamStore_KF_Interval\":9,\"StreamStore_Target_FPS\":12,\"StreamStore_Target_CodeRate\":11,\"OSD\":2,\"AudioOutputEnabled\":1}]" var hex = JT808Serializer.Serialize(JT808_0x8103).ToHexString(); //"010000007515030500040700000006080A00090C0000000B000201" Assert.Equal("010000007515030500040700000006080A00090C0000000B000201", hex); }
public void Test2_1() { byte[] bytes = "0200000001040000000A000000130D7777772E62616964752E636F6D".ToHexBytes(); JT808_0x8103 jT808_0X8103 = JT808Serializer.Deserialize <JT808_0x8103>(bytes); foreach (var item in jT808_0X8103.ParamList) { switch (item.ParamId) { case 0x0001: Assert.Equal(0x0001u, ((JT808_0x8103_0x0001)item).ParamId); Assert.Equal(4, ((JT808_0x8103_0x0001)item).ParamLength); Assert.Equal(10u, ((JT808_0x8103_0x0001)item).ParamValue); break; case 0x0013: Assert.Equal(0x0013u, ((JT808_0x8103_0x0013)item).ParamId); Assert.Equal("www.baidu.com", ((JT808_0x8103_0x0013)item).ParamValue); break; default: break; } } }
public void Serializer() { JT808_0x8103 jT808UploadLocationRequest = new JT808_0x8103 { ParamList = new List <JT808_0x8103_BodyBase> { new JT808_0x8103_0xF364 { ActiveDistancePhotographyDistanceInterval = 1, ActivelyTimePhotoInterval = 2, ActivePhotographyStrategy = 3, AlarmEnable = 4, AlarmJudgeSpeedThreshold = 5, AlarmPhotoVehicleCloseDistance = 6, AlarmPhotoVehicleCloseDistanceInterval = 7, BarrierAlarmPhotographs = 8, DistanceThresholdObstacleAlarm = 9, EventEnable = 10, ForwardCollisionAlarmInterval = 11, ForwardCollisionAlarmPhotographs = 12, ForwardCollisionWarningTimeThreshold = 13, FrequentAlarmJudgmentNumberChannelChange = 14, FrequentChannelChangeAlarmJudgmentTimePeriod = 15, FrequentChannelChangeAlarmPhotos = 16, FrequentLaneChangeAlarmInterval = 17, GradedSpeedThresholdLaneDeviationAlarm = 18, HierarchicalSpeedThresholdForwardCollisionWarning = 19, HierarchicalSpeedThresholdFrequentChannelChangeAlarm = 20, HierarchicalSpeedThresholdObstacleAlarm = 21, LaneDepartureAlarmPhoto = 22, LaneDepartureAlarmPhotoInterval = 23, ObstacleAlarmInterval = 24, PedestrianCollisionAlarmEnablingSpeedThreshold = 25, PedestrianCollisionAlarmInterval = 26, PedestrianCollisionAlarmPhotos = 27, PedestrianCollisionAlarmTimeThreshold = 28, PhotoResolution = 29, Placeholder1 = 30, Placeholder2 = new byte[] { 1, 2, 3, 4 }, RoadSignRecognitionPhotographs = 32, RoadSignRecognitionPhotographsInterval = 33, SingleInitiativePhotos = 34, SingleInitiativePhotosInterval = 35, VehicleDistanceMonitoringAlarmDistanceThreshold = 36, VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold = 37, VideoRecordingResolution = 38, VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity = 39, VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm = 40, VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm = 41, VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm = 42, VideoRecordingTimeBeforeAndAfterObstacleAlarm = 43, VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm = 44, WarningVolume = 45 } } }; var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); Assert.Equal("010000F36438052D030002000122231D26000000040000000A1E09152B08180F0E14291011122A16170D13280C0B1C192C1B1A2425270607202101020304", hex); }
public void Test3_1() { var customParams = "[{\"ParamId\":117,\"ParamLength\":21,\"RTS_EncodeMode\":3,\"RTS_Resolution\":5,\"RTS_KF_Interval\":4,\"RTS_Target_FPS\":7,\"RTS_Target_CodeRate\":6,\"StreamStore_EncodeMode\":8,\"StreamStore_Resolution\":10,\"StreamStore_KF_Interval\":9,\"StreamStore_Target_FPS\":12,\"StreamStore_Target_CodeRate\":11,\"OSD\":2,\"AudioOutputEnabled\":1}]"; byte[] bytes = "010000007515030500040700000006080A00090C0000000B000201".ToHexBytes(); JT808_0x8103 jT808_0X8103 = JT808Serializer.Deserialize <JT808_0x8103>(bytes); Assert.Equal(customParams, Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0X8103.CustomParamList)); }
public void Serializer() { JT808_0x8103 jT808UploadLocationRequest = new JT808_0x8103 { ParamList = new List <JT808_0x8103_BodyBase> { new JT808_0x8103_0xF367 { LateralRearApproachAlarmTimeThreshold = 1, RearApproachAlarmTimeThreshold = 2 } } }; var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); Assert.Equal("010000F367020201", hex); }
public void Serializer() { JT808_0x8103 jT808UploadLocationRequest = new JT808_0x8103 { ParamList = new List <JT808_0x8103_BodyBase> { new JT808_0x8103_0xF365 { ActiveDistancePhotographyDistanceInterval = 1, ActivelyTimePhotoInterval = 2, ActivePhotographyStrategy = 3, AlarmEnable = 4, AlarmJudgeSpeedThreshold = 5, EventEnable = 10, PhotoResolution = 29, SingleInitiativePhotos = 34, SingleInitiativePhotosInterval = 35, VideoRecordingResolution = 38, WarningVolume = 45, CallAlarmDetermineTimeInterval = 46, CallAlarmTakePicturesDriverFacialFeatures = 47, CallAlarmTakePicturesDriverFacialFeaturesInterval = 48, ClassifiedSpeedThresholdCallAlarm = 49, ClassifiedSpeedThresholdDistractedDrivingAlarm = 50, ClassifiedSpeedThresholdSmokingAlarm = 51, DistractedDrivingAlarmPhotography = 52, DistractedDrivingAlarmPhotographyInterval = 53, DriverIdentificationTrigger = 54, FatigueDrivingAlarmPhotograph = 55, FatigueDrivingAlarmPhotographInterval = 56, GradedSpeedThresholdFatigueDrivingAlarm = 57, PhotographsAbnormalDrivingBehavior = 58, PictureIntervalAbnormalDrivingBehavior = 59, Reserve = new byte[] { 1, 2, 3 }, Retain = new byte[] { 5, 6 }, SmokingAlarmPhotographsDriverFaceCharacteristics = 60, SmokingAlarmPhotographsDriverFaceCharacteristicsInterval = 61, TimeIntervalSmokingAlarmJudgment = 62, VideoRecordingTimeAbnormalDrivingBehavior = 63, VideoRecordingTimeBeforeAndAfterCallAlarm = 64, VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm = 65, VideoRecordingTimeBeforeAndAfterSmokingAlarm = 66 } } }; var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); Assert.Equal("010000F3652F052D030002000122231D26000000040000000A003E002E0102033941373831402F3033423C3D3234353F3A3B360506", hex); }
public void Test4() { var JT808_0x8103 = new JT808_0x8103 { ParamList = new List <JT808_0x8103_BodyBase>() { new JT808_0x8103_0x0110() { CollectTimeInterval = 1000, ChannelNo = 1, FrameType = 1, CollectWay = 0, BusId = 56789 } }, }; var hex = JT808Serializer.Serialize(JT808_0x8103).ToHexString(); Assert.Equal("010000011008000003E8C000DDD5", hex); }
public void Test2() { var JT808_0x8103 = new JT808_0x8103 { ParamList = new List <JT808_0x8103_BodyBase> { new JT808_0x8103_0x0001() { ParamId = 0x0001, ParamLength = 4, ParamValue = 10 }, new JT808_0x8103_0x0013() { ParamId = 0x0013, ParamValue = "www.baidu.com" } } }; var hex = JT808Serializer.Serialize(JT808_0x8103).ToHexString(); Assert.Equal("0200000001040000000A000000130D7777772E62616964752E636F6D00", hex); }
public void Serializer() { JT808_0x8103 jT808UploadLocationRequest = new JT808_0x8103 { ParamList = new List <JT808_0x8103_BodyBase> { new JT808_0x8103_0xF366 { HighTemperatureThreshold = 1, HighVoltageThreshold = 2, LowVoltageThreshold = 3, NormalFetalPressure = 4, Retain = new byte[] { 1, 2, 3, 4, 5, 6 }, SlowLeakageThreshold = 5, ThresholdUnbalancedTirePressure = 6, TimedReportingInterval = 7, TyrePressureUnit = 8, TyreSpecificationType = "999999999999", VoltageThreshold = 10 } } }; var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); Assert.Equal("010000F366243939393939393939393939390008000400060005000300020001000A0007010203040506", hex); }
public void Test2() { byte[] bytes = "7E8103009C000123456789000A070000007515030500040700000006080A00090C0000000B000201000000761B02010303020001070604050B0A08090F0E0C0D1312101117161415000000772B0201030500040700000006080A00090C0000000B000201030500040700000006080A00090C0000000B000200000079030302010000007A04000000010000007B0201020000007C140103020A00230012004500340067005600890078587E".ToHexBytes(); JT808Package jT808_0X8103 = JT808Serializer.Deserialize(bytes); Assert.Equal(JT808MsgId.设置终端参数.ToUInt16Value(), jT808_0X8103.Header.MsgId); Assert.Equal(10, jT808_0X8103.Header.MsgNum); Assert.Equal("123456789", jT808_0X8103.Header.TerminalPhoneNo); JT808_0x8103 jT808_0x8103 = (JT808_0x8103)jT808_0X8103.Bodies; foreach (var item in jT808_0x8103.ParamList) { switch (item) { case JT808_0x8103_0x0075 jT808_0x8103_0x0075: Assert.Equal(1, jT808_0x8103_0x0075.AudioOutputEnabled); Assert.Equal(2, jT808_0x8103_0x0075.OSD); Assert.Equal(3, jT808_0x8103_0x0075.RTS_EncodeMode); Assert.Equal(4, jT808_0x8103_0x0075.RTS_KF_Interval); Assert.Equal(5, jT808_0x8103_0x0075.RTS_Resolution); Assert.Equal(6u, jT808_0x8103_0x0075.RTS_Target_CodeRate); Assert.Equal(7, jT808_0x8103_0x0075.RTS_Target_FPS); Assert.Equal(8, jT808_0x8103_0x0075.StreamStore_EncodeMode); Assert.Equal(9, jT808_0x8103_0x0075.StreamStore_KF_Interval); Assert.Equal(10, jT808_0x8103_0x0075.StreamStore_Resolution); Assert.Equal(11u, jT808_0x8103_0x0075.StreamStore_Target_CodeRate); Assert.Equal(12u, jT808_0x8103_0x0075.StreamStore_Target_FPS); break; case JT808_0x8103_0x0076 jT808_0x8103_0x0076: Assert.Equal(1, jT808_0x8103_0x0076.AudioChannelTotal); Assert.Equal(2, jT808_0x8103_0x0076.AVChannelTotal); Assert.Equal(3, jT808_0x8103_0x0076.VudioChannelTotal); Assert.Equal(27, jT808_0x8103_0x0076.ParamLength); Assert.Equal(0, jT808_0x8103_0x0076.AVChannelRefTables[0].ChannelType); Assert.Equal(1, jT808_0x8103_0x0076.AVChannelRefTables[0].IsConnectCloudPlat); Assert.Equal(2, jT808_0x8103_0x0076.AVChannelRefTables[0].LogicChannelNo); Assert.Equal(3, jT808_0x8103_0x0076.AVChannelRefTables[0].PhysicalChannelNo); Assert.Equal(4, jT808_0x8103_0x0076.AVChannelRefTables[1].ChannelType); Assert.Equal(5, jT808_0x8103_0x0076.AVChannelRefTables[1].IsConnectCloudPlat); Assert.Equal(6, jT808_0x8103_0x0076.AVChannelRefTables[1].LogicChannelNo); Assert.Equal(7, jT808_0x8103_0x0076.AVChannelRefTables[1].PhysicalChannelNo); Assert.Equal(8, jT808_0x8103_0x0076.AVChannelRefTables[2].ChannelType); Assert.Equal(9, jT808_0x8103_0x0076.AVChannelRefTables[2].IsConnectCloudPlat); Assert.Equal(10, jT808_0x8103_0x0076.AVChannelRefTables[2].LogicChannelNo); Assert.Equal(11, jT808_0x8103_0x0076.AVChannelRefTables[2].PhysicalChannelNo); Assert.Equal(12, jT808_0x8103_0x0076.AVChannelRefTables[3].ChannelType); Assert.Equal(13, jT808_0x8103_0x0076.AVChannelRefTables[3].IsConnectCloudPlat); Assert.Equal(14, jT808_0x8103_0x0076.AVChannelRefTables[3].LogicChannelNo); Assert.Equal(15, jT808_0x8103_0x0076.AVChannelRefTables[3].PhysicalChannelNo); Assert.Equal(16, jT808_0x8103_0x0076.AVChannelRefTables[4].ChannelType); Assert.Equal(17, jT808_0x8103_0x0076.AVChannelRefTables[4].IsConnectCloudPlat); Assert.Equal(18, jT808_0x8103_0x0076.AVChannelRefTables[4].LogicChannelNo); Assert.Equal(19, jT808_0x8103_0x0076.AVChannelRefTables[4].PhysicalChannelNo); Assert.Equal(20, jT808_0x8103_0x0076.AVChannelRefTables[5].ChannelType); Assert.Equal(21, jT808_0x8103_0x0076.AVChannelRefTables[5].IsConnectCloudPlat); Assert.Equal(22, jT808_0x8103_0x0076.AVChannelRefTables[5].LogicChannelNo); Assert.Equal(23, jT808_0x8103_0x0076.AVChannelRefTables[5].PhysicalChannelNo); break; case JT808_0x8103_0x0077 jT808_0x8103_0x0077: Assert.Equal(2, jT808_0x8103_0x0077.NeedSetChannelTotal); Assert.Equal(43, jT808_0x8103_0x0077.ParamLength); Assert.Equal(1, jT808_0x8103_0x0077.SignalChannels[0].LogicChannelNo); Assert.Equal(2, jT808_0x8103_0x0077.SignalChannels[0].OSD); Assert.Equal(3, jT808_0x8103_0x0077.SignalChannels[0].RTS_EncodeMode); Assert.Equal(4, jT808_0x8103_0x0077.SignalChannels[0].RTS_KF_Interval); Assert.Equal(5, jT808_0x8103_0x0077.SignalChannels[0].RTS_Resolution); Assert.Equal(6u, jT808_0x8103_0x0077.SignalChannels[0].RTS_Target_CodeRate); Assert.Equal(7, jT808_0x8103_0x0077.SignalChannels[0].RTS_Target_FPS); Assert.Equal(8, jT808_0x8103_0x0077.SignalChannels[0].StreamStore_EncodeMode); Assert.Equal(9, jT808_0x8103_0x0077.SignalChannels[0].StreamStore_KF_Interval); Assert.Equal(10, jT808_0x8103_0x0077.SignalChannels[0].StreamStore_Resolution); Assert.Equal(11u, jT808_0x8103_0x0077.SignalChannels[0].StreamStore_Target_CodeRate); Assert.Equal(12, jT808_0x8103_0x0077.SignalChannels[0].StreamStore_Target_FPS); Assert.Equal(1, jT808_0x8103_0x0077.SignalChannels[1].LogicChannelNo); Assert.Equal(2, jT808_0x8103_0x0077.SignalChannels[1].OSD); Assert.Equal(3, jT808_0x8103_0x0077.SignalChannels[1].RTS_EncodeMode); Assert.Equal(4, jT808_0x8103_0x0077.SignalChannels[1].RTS_KF_Interval); Assert.Equal(5, jT808_0x8103_0x0077.SignalChannels[1].RTS_Resolution); Assert.Equal(6u, jT808_0x8103_0x0077.SignalChannels[1].RTS_Target_CodeRate); Assert.Equal(7, jT808_0x8103_0x0077.SignalChannels[1].RTS_Target_FPS); Assert.Equal(8, jT808_0x8103_0x0077.SignalChannels[1].StreamStore_EncodeMode); Assert.Equal(9, jT808_0x8103_0x0077.SignalChannels[1].StreamStore_KF_Interval); Assert.Equal(10, jT808_0x8103_0x0077.SignalChannels[1].StreamStore_Resolution); Assert.Equal(11u, jT808_0x8103_0x0077.SignalChannels[1].StreamStore_Target_CodeRate); Assert.Equal(12, jT808_0x8103_0x0077.SignalChannels[1].StreamStore_Target_FPS); break; case JT808_0x8103_0x0079 jT808_0x8103_0x0079: Assert.Equal(1, jT808_0x8103_0x0079.BeginMinute); Assert.Equal(2, jT808_0x8103_0x0079.Duration); Assert.Equal(3, jT808_0x8103_0x0079.StorageThresholds); break; case JT808_0x8103_0x007A jT808_0x8103_0x007A: Assert.Equal(1u, jT808_0x8103_0x007A.AlarmShielding); break; case JT808_0x8103_0x007B jT808_0x8103_0x007B: Assert.Equal(1, jT808_0x8103_0x007B.NuclearLoadNumber); Assert.Equal(2, jT808_0x8103_0x007B.FatigueThreshold); break; case JT808_0x8103_0x007C jT808_0x8103_0x007C: Assert.Equal(1, jT808_0x8103_0x007C.SleepWakeMode); Assert.Equal(2, jT808_0x8103_0x007C.TimerWakeDaySet); Assert.Equal(3, jT808_0x8103_0x007C.WakeConditionType); Assert.Equal("12", jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod1CloseTime); Assert.Equal("23", jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod1WakeTime); Assert.Equal("34", jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod2CloseTime); Assert.Equal("45", jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod2WakeTime); Assert.Equal("56", jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod3CloseTime); Assert.Equal("67", jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod3WakeTime); Assert.Equal("78", jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod4CloseTime); Assert.Equal("89", jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod4WakeTime); Assert.Equal(10, jT808_0x8103_0x007C.TimerWakeDayParamter.TimerWakeEnableFlag); break; default: break; } } }
public void Serializer() { JT808_0x8103 jT808UploadLocationRequest = new JT808_0x8103 { ParamList = new List <JT808_0x8103_BodyBase> { new JT808_0x8103_0xF365 { ActiveDistancePhotographyDistanceInterval = 1, ActivelyTimePhotoInterval = 2, ActivePhotographyStrategy = 3, AlarmEnable = 4, AlarmJudgeSpeedThreshold = 5, EventEnable = 10, PhotoResolution = 29, SingleInitiativePhotos = 34, SingleInitiativePhotosInterval = 35, VideoRecordingResolution = 38, WarningVolume = 45, CallAlarmDetermineTimeInterval = 46, CallAlarmTakePicturesDriverFacialFeatures = 47, CallAlarmTakePicturesDriverFacialFeaturesInterval = 48, ClassifiedSpeedThresholdCallAlarm = 49, ClassifiedSpeedThresholdDistractedDrivingAlarm = 50, ClassifiedSpeedThresholdSmokingAlarm = 51, DistractedDrivingAlarmPhotography = 52, DistractedDrivingAlarmPhotographyInterval = 53, DriverIdentificationTrigger = 54, FatigueDrivingAlarmPhotograph = 55, FatigueDrivingAlarmPhotographInterval = 56, GradedSpeedThresholdFatigueDrivingAlarm = 57, PhotographsAbnormalDrivingBehavior = 58, PictureIntervalAbnormalDrivingBehavior = 59, Reserve = new byte[] { 1, 2, 3 }, Retain = new byte[] { 5, 6 }, SmokingAlarmPhotographsDriverFaceCharacteristics = 60, SmokingAlarmPhotographsDriverFaceCharacteristicsInterval = 61, TimeIntervalSmokingAlarmJudgment = 62, VideoRecordingTimeAbnormalDrivingBehavior = 63, VideoRecordingTimeBeforeAndAfterCallAlarm = 64, VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm = 65, VideoRecordingTimeBeforeAndAfterSmokingAlarm = 66, ClassifiedSpeedThresholdCameraOcclusion = 68, ClassifiedSpeedThresholdDoubleHanderOff = 69, VideoRecordingTimeDoubleHanderOff = 70, PhotographsDoubleHanderOff = 71, PictureIntervalDoubleHanderOff = 72, ClassifiedSpeedThresholdInfraredSunglassesBlockingFailure = 73, VideoRecordingTimeInfraredSunglassesBlockingFailure = 74, PhotographsInfraredSunglassesBlockingFailure = 75, PictureIntervalInfraredSunglassesBlockingFailure = 76, ClassifiedSpeedThresholdNotBuckleUp = 77, VideoRecordingTimeNotBuckleUp = 78, PhotographsNotBuckleUp = 79, PictureIntervalNotBuckleUp = 80, ClassifiedSpeedThresholdPlayMobile = 81, VideoRecordingTimePlayMobile = 82, PhotographsPlayMobile = 83, PictureIntervalPlayMobile = 84, ClassifiedSpeedThresholdAbnormalDrivingBehavior = 67, VideoRecordingTimeBeforeAndAfterDistractedDrivingAlarm = 85 } } }; var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); Assert.Equal("010000F36542052D030002000122231D26000000040000000A003E002E0102033941373831402F3033423C3D32553435433F3A3B36444D4E4F50494A4B4C45464748515253540506", hex); }