@@ -48,6 +48,7 @@ | |||||
<Compile Include="MessageBody\JT808_0x0303Test.cs" /> | <Compile Include="MessageBody\JT808_0x0303Test.cs" /> | ||||
<Compile Include="MessageBody\JT808_0x0500Test.cs" /> | <Compile Include="MessageBody\JT808_0x0500Test.cs" /> | ||||
<Compile Include="MessageBody\JT808_0x0701BodiesImpl\JT808_0x0701TestBodiesImpl.cs" /> | <Compile Include="MessageBody\JT808_0x0701BodiesImpl\JT808_0x0701TestBodiesImpl.cs" /> | ||||
<Compile Include="MessageBody\JT808_0x0700Test.cs" /> | |||||
<Compile Include="MessageBody\JT808_0x0701Test.cs" /> | <Compile Include="MessageBody\JT808_0x0701Test.cs" /> | ||||
<Compile Include="MessageBody\JT808_0x0702Test.cs" /> | <Compile Include="MessageBody\JT808_0x0702Test.cs" /> | ||||
<Compile Include="MessageBody\JT808_0x0704Test.cs" /> | <Compile Include="MessageBody\JT808_0x0704Test.cs" /> | ||||
@@ -0,0 +1,640 @@ | |||||
using JT808.Protocol.Extensions; | |||||
using JT808.Protocol.Interfaces; | |||||
using JT808.Protocol.Internal; | |||||
using JT808.Protocol.MessageBody; | |||||
using JT808.Protocol.MessageBody.CarDVR; | |||||
using JT808.Protocol.Test.MessageBody.JT808_0x0701BodiesImpl; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Reflection; | |||||
using Xunit; | |||||
using static JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x08; | |||||
using static JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x09; | |||||
using static JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10; | |||||
using static JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11; | |||||
namespace JT808.Protocol.Test.MessageBody | |||||
{ | |||||
public class JT808_0x0700Test | |||||
{ | |||||
JT808Serializer JT808Serializer; | |||||
public JT808_0x0700Test() | |||||
{ | |||||
IJT808Config jT808Config = new DefaultGlobalConfig(); | |||||
JT808Serializer = new JT808Serializer(jT808Config); | |||||
} | |||||
[Fact] | |||||
public void Test_Serialize_0x00() | |||||
{ | |||||
JT808_0x0700 value = new JT808_0x0700(); | |||||
value.CommandId = 0x00; | |||||
value.ReplyMsgNum = 1; | |||||
value.JT808CarDVRUpPackage = new JT808CarDVRUpPackage | |||||
{ | |||||
CommandId = 0x00 | |||||
}; | |||||
value.JT808CarDVRUpPackage.Bodies = new JT808_CarDVR_Up_0x00 | |||||
{ | |||||
ModifyNumber = 1, | |||||
StandardYear = "19" | |||||
}; | |||||
var hex = JT808Serializer.Serialize(value).ToHexString(); | |||||
Assert.Equal("000100557A00000200190135", hex); | |||||
} | |||||
[Fact] | |||||
public void Test_Deserilize_0x00() | |||||
{ | |||||
byte[] bytes = "000100557A00000200190135".ToHexBytes(); | |||||
JT808_0x0700 value = JT808Serializer.Deserialize<JT808_0x0700>(bytes); | |||||
Assert.Equal(1, value.ReplyMsgNum); | |||||
var package = value.JT808CarDVRUpPackage as JT808CarDVRUpPackage; | |||||
Assert.Equal(0x557a, package.Begin); | |||||
Assert.Equal(0, package.KeepFields); | |||||
var body = value.JT808CarDVRUpPackage.Bodies as JT808_CarDVR_Up_0x00; | |||||
Assert.Equal(1, body.ModifyNumber); | |||||
Assert.Equal("19", body.StandardYear); | |||||
} | |||||
[Fact] | |||||
public void Test_Serialize_0x01() | |||||
{ | |||||
JT808_0x0700 value = new JT808_0x0700(); | |||||
value.CommandId = 0x01; | |||||
value.ReplyMsgNum = 1; | |||||
value.JT808CarDVRUpPackage = new JT808CarDVRUpPackage | |||||
{ | |||||
CommandId = 0x01 | |||||
}; | |||||
value.JT808CarDVRUpPackage.Bodies = new JT808_CarDVR_Up_0x01 | |||||
{ | |||||
DriverLicenseNo = "430223199007126687" | |||||
}; | |||||
var hex = JT808Serializer.Serialize(value).ToHexString(); | |||||
Assert.Equal("000101557A0100120034333032323331393930303731323636383732", hex); | |||||
} | |||||
[Fact] | |||||
public void Test_Deserilize_0x01() | |||||
{ | |||||
byte[] bytes = "000101557A0100120034333032323331393930303731323636383732".ToHexBytes(); | |||||
JT808_0x0700 value = JT808Serializer.Deserialize<JT808_0x0700>(bytes); | |||||
Assert.Equal(1, value.ReplyMsgNum); | |||||
var body = value.JT808CarDVRUpPackage.Bodies as JT808_CarDVR_Up_0x01; | |||||
Assert.Equal("430223199007126687", body.DriverLicenseNo); | |||||
} | |||||
[Fact] | |||||
public void Test_Serialize_0x02() | |||||
{ | |||||
JT808_0x0700 value = new JT808_0x0700(); | |||||
value.CommandId = 0x02; | |||||
value.ReplyMsgNum = 1; | |||||
value.JT808CarDVRUpPackage = new JT808CarDVRUpPackage | |||||
{ | |||||
CommandId = 0x02 | |||||
}; | |||||
value.JT808CarDVRUpPackage.Bodies = new JT808_CarDVR_Up_0x02 | |||||
{ | |||||
RealTime = Convert.ToDateTime("2020-03-23 10:10:10") | |||||
}; | |||||
var hex = JT808Serializer.Serialize(value).ToHexString(); | |||||
Assert.Equal("000102557A020006002003231010103B", hex); | |||||
} | |||||
[Fact] | |||||
public void Test_Deserilize_0x02() | |||||
{ | |||||
byte[] bytes = "000102557A020006002003231010103B".ToHexBytes(); | |||||
JT808_0x0700 value = JT808Serializer.Deserialize<JT808_0x0700>(bytes); | |||||
Assert.Equal(1, value.ReplyMsgNum); | |||||
var body = value.JT808CarDVRUpPackage.Bodies as JT808_CarDVR_Up_0x02; | |||||
Assert.Equal("2020-03-23 10:10:10", body.RealTime.ToString("yyyy-MM-dd HH:mm:ss")); | |||||
} | |||||
[Fact] | |||||
public void Test_Serialize_0x03() | |||||
{ | |||||
JT808_0x0700 value = new JT808_0x0700(); | |||||
value.CommandId = 0x03; | |||||
value.ReplyMsgNum = 1; | |||||
value.JT808CarDVRUpPackage = new JT808CarDVRUpPackage | |||||
{ | |||||
CommandId = 0x03 | |||||
}; | |||||
value.JT808CarDVRUpPackage.Bodies = new JT808_CarDVR_Up_0x03 | |||||
{ | |||||
FirstInstallTime = Convert.ToDateTime("2020-03-23 10:10:10"), | |||||
RealTime = Convert.ToDateTime("2020-03-22 10:10:10"), | |||||
FirstMileage = "1000", | |||||
TotalMilage = "5000" | |||||
}; | |||||
var hex = JT808Serializer.Serialize(value).ToHexString(); | |||||
Assert.Equal("000103557A03001400200322101010200323101010000010000000500079", hex); | |||||
} | |||||
[Fact] | |||||
public void Test_Deserilize_0x03() | |||||
{ | |||||
byte[] bytes = "000103557A03001400200322101010200323101010000010000000500079".ToHexBytes(); | |||||
JT808_0x0700 value = JT808Serializer.Deserialize<JT808_0x0700>(bytes); | |||||
Assert.Equal(1, value.ReplyMsgNum); | |||||
var body = value.JT808CarDVRUpPackage.Bodies as JT808_CarDVR_Up_0x03; | |||||
Assert.Equal("2020-03-22 10:10:10", body.RealTime.ToString("yyyy-MM-dd HH:mm:ss")); | |||||
Assert.Equal("2020-03-23 10:10:10", body.FirstInstallTime.ToString("yyyy-MM-dd HH:mm:ss")); | |||||
Assert.Equal("1000", body.FirstMileage); | |||||
Assert.Equal("5000", body.TotalMilage); | |||||
} | |||||
[Fact] | |||||
public void Test_Serialize_0x04() | |||||
{ | |||||
JT808_0x0700 value = new JT808_0x0700(); | |||||
value.CommandId = 0x04; | |||||
value.ReplyMsgNum = 1; | |||||
value.JT808CarDVRUpPackage = new JT808CarDVRUpPackage | |||||
{ | |||||
CommandId = 0x04 | |||||
}; | |||||
value.JT808CarDVRUpPackage.Bodies = new JT808_CarDVR_Up_0x04 | |||||
{ | |||||
RealTime = Convert.ToDateTime("2020-03-23 10:10:10"), | |||||
PulseCoefficient = 50 | |||||
}; | |||||
var hex = JT808Serializer.Serialize(value).ToHexString(); | |||||
Assert.Equal("000104557A04000800200323101010003201", hex); | |||||
} | |||||
[Fact] | |||||
public void Test_Deserilize_0x04() | |||||
{ | |||||
byte[] bytes = "000104557A04000800200323101010003201".ToHexBytes(); | |||||
JT808_0x0700 value = JT808Serializer.Deserialize<JT808_0x0700>(bytes); | |||||
Assert.Equal(1, value.ReplyMsgNum); | |||||
var body = value.JT808CarDVRUpPackage.Bodies as JT808_CarDVR_Up_0x04; | |||||
Assert.Equal("2020-03-23 10:10:10", body.RealTime.ToString("yyyy-MM-dd HH:mm:ss")); | |||||
Assert.Equal(50, body.PulseCoefficient); | |||||
} | |||||
[Fact] | |||||
public void Test_Serialize_0x05() | |||||
{ | |||||
JT808_0x0700 value = new JT808_0x0700(); | |||||
value.CommandId = 0x05; | |||||
value.ReplyMsgNum = 1; | |||||
value.JT808CarDVRUpPackage = new JT808CarDVRUpPackage | |||||
{ | |||||
CommandId = 0x05 | |||||
}; | |||||
value.JT808CarDVRUpPackage.Bodies = new JT808_CarDVR_Up_0x05 | |||||
{ | |||||
VehicleNo = "粤B12345", | |||||
VehicleType = "重型货车", | |||||
Vin = "12345678912345678" | |||||
}; | |||||
var hex = JT808Serializer.Serialize(value).ToHexString(); | |||||
Assert.Equal("000105557A050027003132333435363738393132333435363738D4C142313233343500000000D6D8D0CDBBF5B3B5000009", hex); | |||||
} | |||||
[Fact] | |||||
public void Test_Deserilize_0x05() | |||||
{ | |||||
byte[] bytes = "000105557A050027003132333435363738393132333435363738D4C142313233343500000000D6D8D0CDBBF5B3B5000009".ToHexBytes(); | |||||
JT808_0x0700 value = JT808Serializer.Deserialize<JT808_0x0700>(bytes); | |||||
Assert.Equal(1, value.ReplyMsgNum); | |||||
var body = value.JT808CarDVRUpPackage.Bodies as JT808_CarDVR_Up_0x05; | |||||
Assert.Equal("粤B12345", body.VehicleNo); | |||||
Assert.Equal("重型货车", body.VehicleType); | |||||
Assert.Equal("12345678912345678", body.Vin); | |||||
} | |||||
[Fact] | |||||
public void Test_Serialize_0x06() | |||||
{ | |||||
JT808_0x0700 value = new JT808_0x0700(); | |||||
value.CommandId = 0x06; | |||||
value.ReplyMsgNum = 1; | |||||
value.JT808CarDVRUpPackage = new JT808CarDVRUpPackage | |||||
{ | |||||
CommandId = 0x06 | |||||
}; | |||||
value.JT808CarDVRUpPackage.Bodies = new JT808_CarDVR_Up_0x06 | |||||
{ | |||||
FarLight = "远光灯", | |||||
Brake = "制动", | |||||
D0 = "自定义1", | |||||
D1 = "自定义2", | |||||
D2 = "自定义3", | |||||
LeftTurn = "左转向", | |||||
NearLight = "近光灯", | |||||
RealTime = Convert.ToDateTime("2020-03-23 10:10:10"), | |||||
RightTurn = "右转向", | |||||
SignalOperate = 255, | |||||
}; | |||||
var hex = JT808Serializer.Serialize(value).ToHexString(); | |||||
Assert.Equal("000106557A06005700200323101010FFD7D4B6A8D2E531000000D7D4B6A8D2E532000000D7D4B6A8D2E533000000BDFCB9E2B5C600000000D4B6B9E2B5C600000000D3D2D7AACFF200000000D7F3D7AACFF200000000D6C6B6AF00000000000084", hex); | |||||
} | |||||
[Fact] | |||||
public void Test_Deserilize_0x06() | |||||
{ | |||||
byte[] bytes = "000106557A06005700200323101010FFD7D4B6A8D2E531000000D7D4B6A8D2E532000000D7D4B6A8D2E533000000BDFCB9E2B5C600000000D4B6B9E2B5C600000000D3D2D7AACFF200000000D7F3D7AACFF200000000D6C6B6AF00000000000084".ToHexBytes(); | |||||
JT808_0x0700 value = JT808Serializer.Deserialize<JT808_0x0700>(bytes); | |||||
Assert.Equal(1, value.ReplyMsgNum); | |||||
var body = value.JT808CarDVRUpPackage.Bodies as JT808_CarDVR_Up_0x06; | |||||
Assert.Equal("远光灯", body.FarLight); | |||||
Assert.Equal("制动", body.Brake); | |||||
Assert.Equal("自定义1", body.D0); | |||||
Assert.Equal("自定义2", body.D1); | |||||
Assert.Equal("自定义3", body.D2); | |||||
Assert.Equal("左转向", body.LeftTurn); | |||||
Assert.Equal("近光灯", body.NearLight); | |||||
Assert.Equal("2020-03-23 10:10:10", body.RealTime.ToString("yyyy-MM-dd HH:mm:ss")); | |||||
Assert.Equal("右转向", body.RightTurn); | |||||
Assert.Equal(255, body.SignalOperate); | |||||
} | |||||
[Fact] | |||||
public void Test_Serialize_0x07() | |||||
{ | |||||
JT808_0x0700 value = new JT808_0x0700(); | |||||
value.CommandId = 0x07; | |||||
value.ReplyMsgNum = 1; | |||||
value.JT808CarDVRUpPackage = new JT808CarDVRUpPackage | |||||
{ | |||||
CommandId = 0x07 | |||||
}; | |||||
value.JT808CarDVRUpPackage.Bodies = new JT808_CarDVR_Up_0x07 | |||||
{ | |||||
CertifiedProductModels = "1234567891234567", | |||||
ProductionDate = Convert.ToDateTime("2020-03-23"), | |||||
ProductionPlantCCCCertificationCode = "1234567", | |||||
ProductProductionFlowNumber = "1234", | |||||
Reversed = "1234" | |||||
}; | |||||
var hex = JT808Serializer.Serialize(value).ToHexString(); | |||||
Assert.Equal("000107557A0700230031323334353637313233343536373839313233343536372003233132333431323334003A", hex); | |||||
} | |||||
[Fact] | |||||
public void Test_Deserilize_0x07() | |||||
{ | |||||
byte[] bytes = "000107557A0700230031323334353637313233343536373839313233343536372003233132333431323334003A".ToHexBytes(); | |||||
JT808_0x0700 value = JT808Serializer.Deserialize<JT808_0x0700>(bytes); | |||||
Assert.Equal(1, value.ReplyMsgNum); | |||||
var body = value.JT808CarDVRUpPackage.Bodies as JT808_CarDVR_Up_0x07; | |||||
Assert.Equal("2020-03-23", body.ProductionDate.ToString("yyyy-MM-dd")); | |||||
Assert.Equal("1234567891234567", body.CertifiedProductModels); | |||||
Assert.Equal("1234567", body.ProductionPlantCCCCertificationCode); | |||||
Assert.Equal("1234", body.ProductProductionFlowNumber); | |||||
Assert.Equal("1234", body.Reversed); | |||||
} | |||||
[Fact] | |||||
public void Test_Serialize_0x08() | |||||
{ | |||||
JT808_0x0700 value = new JT808_0x0700(); | |||||
value.CommandId = 0x08; | |||||
value.ReplyMsgNum = 1; | |||||
value.JT808CarDVRUpPackage = new JT808CarDVRUpPackage | |||||
{ | |||||
CommandId = 0x08 | |||||
}; | |||||
value.JT808CarDVRUpPackage.Bodies = new JT808_CarDVR_Up_0x08 | |||||
{ | |||||
JT808_CarDVR_Up_0x08_SpeedPerMinutes = new List<JT808_CarDVR_Up_0x08_SpeedPerMinute> { | |||||
new JT808_CarDVR_Up_0x08_SpeedPerMinute{ | |||||
StartTime=Convert.ToDateTime("2020-03-23"), | |||||
JT808_CarDVR_Up_0x08_SpeedPerSeconds=new List<JT808_CarDVR_Up_0x08_SpeedPerSecond>{ | |||||
new JT808_CarDVR_Up_0x08_SpeedPerSecond{ | |||||
AvgSpeedAfterStartTime=10, | |||||
StatusSignalAfterStartTime=20 | |||||
} | |||||
} | |||||
} | |||||
} | |||||
}; | |||||
var hex = JT808Serializer.Serialize(value).ToHexString(); | |||||
Assert.Equal("000108557A08007E002003230000000A14FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47", hex); | |||||
} | |||||
[Fact] | |||||
public void Test_Deserilize_0x08() | |||||
{ | |||||
byte[] bytes = "000108557A08007E002003230000000A14FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47".ToHexBytes(); | |||||
JT808_0x0700 value = JT808Serializer.Deserialize<JT808_0x0700>(bytes); | |||||
Assert.Equal(1, value.ReplyMsgNum); | |||||
var body = value.JT808CarDVRUpPackage.Bodies as JT808_CarDVR_Up_0x08; | |||||
Assert.Equal("2020-03-23", body.JT808_CarDVR_Up_0x08_SpeedPerMinutes[0].StartTime.ToString("yyyy-MM-dd")); | |||||
Assert.Equal(10, body.JT808_CarDVR_Up_0x08_SpeedPerMinutes[0].JT808_CarDVR_Up_0x08_SpeedPerSeconds[0].AvgSpeedAfterStartTime); | |||||
Assert.Equal(20, body.JT808_CarDVR_Up_0x08_SpeedPerMinutes[0].JT808_CarDVR_Up_0x08_SpeedPerSeconds[0].StatusSignalAfterStartTime); | |||||
} | |||||
[Fact] | |||||
public void Test_Serialize_0x09() | |||||
{ | |||||
JT808_0x0700 value = new JT808_0x0700(); | |||||
value.CommandId = 0x09; | |||||
value.ReplyMsgNum = 1; | |||||
value.JT808CarDVRUpPackage = new JT808CarDVRUpPackage | |||||
{ | |||||
CommandId = 0x09 | |||||
}; | |||||
value.JT808CarDVRUpPackage.Bodies = new JT808_CarDVR_Up_0x09 | |||||
{ | |||||
JT808_CarDVR_Up_0x09_PositionPerHours = new List<JT808_CarDVR_Up_0x09_PositionPerHour> { | |||||
new JT808_CarDVR_Up_0x09_PositionPerHour{ | |||||
StartTime=Convert.ToDateTime("2020-03-23"), | |||||
JT808_CarDVR_Up_0x09_PositionPerMinutes=new List<JT808_CarDVR_Up_0x09_PositionPerMinute>{ | |||||
new JT808_CarDVR_Up_0x09_PositionPerMinute{ | |||||
AvgSpeedAfterStartTime=10, | |||||
GpsLat=23665544, | |||||
GpsLng=113656598, | |||||
Height=50 | |||||
} | |||||
} | |||||
} | |||||
} | |||||
}; | |||||
var hex = JT808Serializer.Serialize(value).ToHexString(); | |||||
Assert.Equal("000109557A09029A0020032300000006C6431601691B8800320AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17", hex); | |||||
} | |||||
[Fact] | |||||
public void Test_Deserilize_0x09() | |||||
{ | |||||
byte[] bytes = "000109557A09029A0020032300000006C6431601691B8800320AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17".ToHexBytes(); | |||||
JT808_0x0700 value = JT808Serializer.Deserialize<JT808_0x0700>(bytes); | |||||
Assert.Equal(1, value.ReplyMsgNum); | |||||
var body = value.JT808CarDVRUpPackage.Bodies as JT808_CarDVR_Up_0x09; | |||||
Assert.Equal("2020-03-23", body.JT808_CarDVR_Up_0x09_PositionPerHours[0].StartTime.ToString("yyyy-MM-dd")); | |||||
Assert.Equal(10, body.JT808_CarDVR_Up_0x09_PositionPerHours[0].JT808_CarDVR_Up_0x09_PositionPerMinutes[0].AvgSpeedAfterStartTime); | |||||
Assert.Equal(23665544, body.JT808_CarDVR_Up_0x09_PositionPerHours[0].JT808_CarDVR_Up_0x09_PositionPerMinutes[0].GpsLat); | |||||
Assert.Equal(113656598, body.JT808_CarDVR_Up_0x09_PositionPerHours[0].JT808_CarDVR_Up_0x09_PositionPerMinutes[0].GpsLng); | |||||
Assert.Equal(50, body.JT808_CarDVR_Up_0x09_PositionPerHours[0].JT808_CarDVR_Up_0x09_PositionPerMinutes[0].Height); | |||||
} | |||||
[Fact] | |||||
public void Test_Serialize_0x10() | |||||
{ | |||||
JT808_0x0700 value = new JT808_0x0700(); | |||||
value.CommandId = 0x10; | |||||
value.ReplyMsgNum = 1; | |||||
value.JT808CarDVRUpPackage = new JT808CarDVRUpPackage | |||||
{ | |||||
CommandId = 0x10 | |||||
}; | |||||
value.JT808CarDVRUpPackage.Bodies = new JT808_CarDVR_Up_0x10 | |||||
{ | |||||
JT808_CarDVR_Up_0x10_AccidentSuspectins = new List<JT808_CarDVR_Up_0x10_AccidentSuspectin> { | |||||
new JT808_CarDVR_Up_0x10_AccidentSuspectin{ | |||||
EndTime=Convert.ToDateTime("2020-03-23"), | |||||
GpsLat=23665544, | |||||
GpsLng=113656598, | |||||
Height=50, | |||||
DriverLicenseNo="430223199009203698", | |||||
JT808_CarDVR_Up_0x09_DrivingStatuss=new List<JT808_CarDVR_Up_0x10_DrivingStatus> | |||||
{ | |||||
new JT808_CarDVR_Up_0x10_DrivingStatus{ | |||||
Speed=10, | |||||
StatusSignal=20 | |||||
} | |||||
} | |||||
} | |||||
} | |||||
}; | |||||
var hex = JT808Serializer.Serialize(value).ToHexString(); | |||||
Assert.Equal("000110557A1000EA002003230000003433303232333139393030393230333639380A14FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06C6431601691B8800329D", hex); | |||||
} | |||||
[Fact] | |||||
public void Test_Deserilize_0x10() | |||||
{ | |||||
byte[] bytes = "000110557A1000EA002003230000003433303232333139393030393230333639380A14FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06C6431601691B8800329D".ToHexBytes(); | |||||
JT808_0x0700 value = JT808Serializer.Deserialize<JT808_0x0700>(bytes); | |||||
Assert.Equal(1, value.ReplyMsgNum); | |||||
var body = value.JT808CarDVRUpPackage.Bodies as JT808_CarDVR_Up_0x10; | |||||
Assert.Equal("2020-03-23", body.JT808_CarDVR_Up_0x10_AccidentSuspectins[0].EndTime.ToString("yyyy-MM-dd")); | |||||
Assert.Equal(23665544, body.JT808_CarDVR_Up_0x10_AccidentSuspectins[0].GpsLat); | |||||
Assert.Equal(113656598, body.JT808_CarDVR_Up_0x10_AccidentSuspectins[0].GpsLng); | |||||
Assert.Equal(50, body.JT808_CarDVR_Up_0x10_AccidentSuspectins[0].Height); | |||||
Assert.Equal("430223199009203698", body.JT808_CarDVR_Up_0x10_AccidentSuspectins[0].DriverLicenseNo); | |||||
Assert.Equal(10, body.JT808_CarDVR_Up_0x10_AccidentSuspectins[0].JT808_CarDVR_Up_0x09_DrivingStatuss[0].Speed); | |||||
Assert.Equal(20, body.JT808_CarDVR_Up_0x10_AccidentSuspectins[0].JT808_CarDVR_Up_0x09_DrivingStatuss[0].StatusSignal); | |||||
} | |||||
[Fact] | |||||
public void Test_Serialize_0x11() | |||||
{ | |||||
JT808_0x0700 value = new JT808_0x0700(); | |||||
value.CommandId = 0x11; | |||||
value.ReplyMsgNum = 1; | |||||
value.JT808CarDVRUpPackage = new JT808CarDVRUpPackage | |||||
{ | |||||
CommandId = 0x11 | |||||
}; | |||||
value.JT808CarDVRUpPackage.Bodies = new JT808_CarDVR_Up_0x11 | |||||
{ | |||||
JT808_CarDVR_Up_0x11_DriveOverTimes = new List<JT808_CarDVR_Up_0x11_DriveOverTime>{ | |||||
new JT808_CarDVR_Up_0x11_DriveOverTime{ | |||||
ContinueDrivingEndTime=Convert.ToDateTime("2020-03-23"), | |||||
ContinueDrivingStartTime=Convert.ToDateTime("2020-03-22"), | |||||
GpsStartLat=23665544, | |||||
GpsStartLng=113656598, | |||||
GpsEndLat=23665545, | |||||
GpsEndLng=113656599, | |||||
StartHeight=50, | |||||
EndHeight=60, | |||||
DriverLicenseNo="430223199009203698" | |||||
} | |||||
} | |||||
}; | |||||
var hex = JT808Serializer.Serialize(value).ToHexString(); | |||||
Assert.Equal("000100557A00000300190134", hex); | |||||
} | |||||
[Fact] | |||||
public void Test_Deserilize_0x11() | |||||
{ | |||||
byte[] bytes = "000100557A00000300190134".ToHexBytes(); | |||||
JT808_0x0700 value = JT808Serializer.Deserialize<JT808_0x0700>(bytes); | |||||
Assert.Equal(1, value.ReplyMsgNum); | |||||
var body = value.JT808CarDVRUpPackage.Bodies as JT808_CarDVR_Up_0x11; | |||||
Assert.Equal("2020-03-23", body.JT808_CarDVR_Up_0x11_DriveOverTimes[0].ContinueDrivingEndTime.ToString("yyyy-MM-dd")); | |||||
Assert.Equal("2020-03-22", body.JT808_CarDVR_Up_0x11_DriveOverTimes[0].ContinueDrivingStartTime.ToString("yyyy-MM-dd")); | |||||
Assert.Equal(23665544, body.JT808_CarDVR_Up_0x11_DriveOverTimes[0].GpsStartLat); | |||||
Assert.Equal(113656598, body.JT808_CarDVR_Up_0x11_DriveOverTimes[0].GpsStartLng); | |||||
Assert.Equal(50, body.JT808_CarDVR_Up_0x11_DriveOverTimes[0].StartHeight); | |||||
Assert.Equal(23665545, body.JT808_CarDVR_Up_0x11_DriveOverTimes[0].GpsEndLat); | |||||
Assert.Equal(113656599, body.JT808_CarDVR_Up_0x11_DriveOverTimes[0].GpsEndLng); | |||||
Assert.Equal(60, body.JT808_CarDVR_Up_0x11_DriveOverTimes[0].EndHeight); | |||||
Assert.Equal("430223199009203698", body.JT808_CarDVR_Up_0x11_DriveOverTimes[0].DriverLicenseNo); | |||||
} | |||||
[Fact] | |||||
public void Test_Serialize_0x12() | |||||
{ | |||||
JT808_0x0700 value = new JT808_0x0700(); | |||||
value.CommandId = 0x12; | |||||
value.ReplyMsgNum = 1; | |||||
value.JT808CarDVRUpPackage = new JT808CarDVRUpPackage | |||||
{ | |||||
CommandId = 0x12 | |||||
}; | |||||
value.JT808CarDVRUpPackage.Bodies = new JT808_CarDVR_Up_0x12 | |||||
{ | |||||
JT808_CarDVR_Up_0x12_DriveLogins = new List<JT808_CarDVR_Up_0x12_DriveLogin>{ | |||||
new JT808_CarDVR_Up_0x12_DriveLogin{ | |||||
LoginTime=Convert.ToDateTime("2020-03-23"), | |||||
LoginType=1, | |||||
DriverLicenseNo="430223199009203698" | |||||
} | |||||
} | |||||
}; | |||||
var hex = JT808Serializer.Serialize(value).ToHexString(); | |||||
Assert.Equal("000100557A00000300190134", hex); | |||||
} | |||||
[Fact] | |||||
public void Test_Deserilize_0x12() | |||||
{ | |||||
byte[] bytes = "000100557A00000300190134".ToHexBytes(); | |||||
JT808_0x0700 value = JT808Serializer.Deserialize<JT808_0x0700>(bytes); | |||||
Assert.Equal(1, value.ReplyMsgNum); | |||||
var body = value.JT808CarDVRUpPackage.Bodies as JT808_CarDVR_Up_0x12; | |||||
Assert.Equal("2020-03-23", body.JT808_CarDVR_Up_0x12_DriveLogins[0].LoginTime.ToString("yyyy-MM-dd")); | |||||
Assert.Equal(1, body.JT808_CarDVR_Up_0x12_DriveLogins[0].LoginType); | |||||
Assert.Equal("430223199009203698", body.JT808_CarDVR_Up_0x12_DriveLogins[0].DriverLicenseNo); | |||||
} | |||||
[Fact] | |||||
public void Test_Serialize_0x13() | |||||
{ | |||||
JT808_0x0700 value = new JT808_0x0700(); | |||||
value.CommandId = 0x13; | |||||
value.ReplyMsgNum = 1; | |||||
value.JT808CarDVRUpPackage = new JT808CarDVRUpPackage | |||||
{ | |||||
CommandId = 0x13 | |||||
}; | |||||
value.JT808CarDVRUpPackage.Bodies = new JT808_CarDVR_Up_0x13 | |||||
{ | |||||
JT808_CarDVR_Up_0x13_ExternalPowerSupplys = new List<JT808_CarDVR_Up_0x13_ExternalPowerSupply>{ | |||||
new JT808_CarDVR_Up_0x13_ExternalPowerSupply{ | |||||
EventTime=Convert.ToDateTime("2020-03-23"), | |||||
EventType=1 | |||||
} | |||||
} | |||||
}; | |||||
var hex = JT808Serializer.Serialize(value).ToHexString(); | |||||
Assert.Equal("000100557A00000300190134", hex); | |||||
} | |||||
[Fact] | |||||
public void Test_Deserilize_0x13() | |||||
{ | |||||
byte[] bytes = "000100557A00000300190134".ToHexBytes(); | |||||
JT808_0x0700 value = JT808Serializer.Deserialize<JT808_0x0700>(bytes); | |||||
Assert.Equal(1, value.ReplyMsgNum); | |||||
var body = value.JT808CarDVRUpPackage.Bodies as JT808_CarDVR_Up_0x13; | |||||
Assert.Equal("2020-03-23", body.JT808_CarDVR_Up_0x13_ExternalPowerSupplys[0].EventTime.ToString("yyyy-MM-dd")); | |||||
Assert.Equal(1, body.JT808_CarDVR_Up_0x13_ExternalPowerSupplys[0].EventType); | |||||
} | |||||
[Fact] | |||||
public void Test_Serialize_0x14() | |||||
{ | |||||
JT808_0x0700 value = new JT808_0x0700(); | |||||
value.CommandId = 0x14; | |||||
value.ReplyMsgNum = 1; | |||||
value.JT808CarDVRUpPackage = new JT808CarDVRUpPackage | |||||
{ | |||||
CommandId = 0x14 | |||||
}; | |||||
value.JT808CarDVRUpPackage.Bodies = new JT808_CarDVR_Up_0x14 | |||||
{ | |||||
JT808_CarDVR_Up_0x14_ParameterModifys = new List<JT808_CarDVR_Up_0x14_ParameterModify>{ | |||||
new JT808_CarDVR_Up_0x14_ParameterModify{ | |||||
EventTime=Convert.ToDateTime("2020-03-23"), | |||||
EventType=1 | |||||
} | |||||
} | |||||
}; | |||||
var hex = JT808Serializer.Serialize(value).ToHexString(); | |||||
Assert.Equal("000100557A00000300190134", hex); | |||||
} | |||||
[Fact] | |||||
public void Test_Deserilize_0x14() | |||||
{ | |||||
byte[] bytes = "000100557A00000300190134".ToHexBytes(); | |||||
JT808_0x0700 value = JT808Serializer.Deserialize<JT808_0x0700>(bytes); | |||||
Assert.Equal(1, value.ReplyMsgNum); | |||||
var body = value.JT808CarDVRUpPackage.Bodies as JT808_CarDVR_Up_0x14; | |||||
Assert.Equal("2020-03-23", body.JT808_CarDVR_Up_0x14_ParameterModifys[0].EventTime.ToString("yyyy-MM-dd")); | |||||
Assert.Equal(1, body.JT808_CarDVR_Up_0x14_ParameterModifys[0].EventType); | |||||
} | |||||
[Fact] | |||||
public void Test_Serialize_0x15() | |||||
{ | |||||
JT808_0x0700 value = new JT808_0x0700(); | |||||
value.CommandId = 0x15; | |||||
value.ReplyMsgNum = 1; | |||||
value.JT808CarDVRUpPackage = new JT808CarDVRUpPackage | |||||
{ | |||||
CommandId = 0x15 | |||||
}; | |||||
value.JT808CarDVRUpPackage.Bodies = new JT808_CarDVR_Up_0x15 | |||||
{ | |||||
JT808_CarDVR_Up_0x15_SpeedStatusLogs = new List<JT808_CarDVR_Up_0x15_SpeedStatusLog>{ | |||||
new JT808_CarDVR_Up_0x15_SpeedStatusLog{ | |||||
SpeedStatusStartTime=Convert.ToDateTime("2020-03-22"), | |||||
SpeedStatusEndTime=Convert.ToDateTime("2020-03-23"), | |||||
SpeedStatus=1, | |||||
JT808_CarDVR_Up_0x15_SpeedPerSeconds=new List<JT808_CarDVR_Up_0x15_SpeedPerSecond>{ | |||||
new JT808_CarDVR_Up_0x15_SpeedPerSecond{ | |||||
RecordSpeed=50, | |||||
ReferenceSpeed=40 | |||||
} | |||||
} | |||||
} | |||||
} | |||||
}; | |||||
var hex = JT808Serializer.Serialize(value).ToHexString(); | |||||
Assert.Equal("000100557A00000300190134", hex); | |||||
} | |||||
[Fact] | |||||
public void Test_Deserilize_0x15() | |||||
{ | |||||
byte[] bytes = "000100557A00000300190134".ToHexBytes(); | |||||
JT808_0x0700 value = JT808Serializer.Deserialize<JT808_0x0700>(bytes); | |||||
Assert.Equal(1, value.ReplyMsgNum); | |||||
var body = value.JT808CarDVRUpPackage.Bodies as JT808_CarDVR_Up_0x15; | |||||
Assert.Equal("2020-03-22", body.JT808_CarDVR_Up_0x15_SpeedStatusLogs[0].SpeedStatusStartTime.ToString("yyyy-MM-dd")); | |||||
Assert.Equal("2020-03-23", body.JT808_CarDVR_Up_0x15_SpeedStatusLogs[0].SpeedStatusEndTime.ToString("yyyy-MM-dd")); | |||||
Assert.Equal(1, body.JT808_CarDVR_Up_0x15_SpeedStatusLogs[0].SpeedStatus); | |||||
Assert.Equal(50, body.JT808_CarDVR_Up_0x15_SpeedStatusLogs[0].JT808_CarDVR_Up_0x15_SpeedPerSeconds[0].RecordSpeed); | |||||
Assert.Equal(40, body.JT808_CarDVR_Up_0x15_SpeedStatusLogs[0].JT808_CarDVR_Up_0x15_SpeedPerSeconds[0].ReferenceSpeed); | |||||
} | |||||
[Fact] | |||||
public void Test_Serialize_0x82() | |||||
{ | |||||
JT808_0x0700 value = new JT808_0x0700(); | |||||
value.CommandId = 0x82; | |||||
value.ReplyMsgNum = 1; | |||||
value.JT808CarDVRUpPackage = new JT808CarDVRUpPackage | |||||
{ | |||||
CommandId = 0x82 | |||||
}; | |||||
value.JT808CarDVRUpPackage.Bodies = new JT808_CarDVR_Up_0x82(); | |||||
var hex = JT808Serializer.Serialize(value).ToHexString(); | |||||
Assert.Equal("000182557A82000000AD", hex); | |||||
} | |||||
[Fact] | |||||
public void Test_Deserilize_0x82() | |||||
{ | |||||
byte[] bytes = "000182557A82000000AD".ToHexBytes(); | |||||
JT808_0x0700 value = JT808Serializer.Deserialize<JT808_0x0700>(bytes); | |||||
Assert.Equal(1, value.ReplyMsgNum); | |||||
var body = value.JT808CarDVRUpPackage.Bodies as JT808_CarDVR_Up_0x82; | |||||
} | |||||
} | |||||
} |
@@ -26,6 +26,8 @@ namespace JT808.Protocol.Interfaces | |||||
JT808_0x0900_Custom_Factory = new JT808_0x0900_Custom_Factory(); | JT808_0x0900_Custom_Factory = new JT808_0x0900_Custom_Factory(); | ||||
JT808_0x8900_Custom_Factory = new JT808_0x8900_Custom_Factory(); | JT808_0x8900_Custom_Factory = new JT808_0x8900_Custom_Factory(); | ||||
JT808_0x8500_2019_Factory = new JT808_0x8500_2019_Factory(); | JT808_0x8500_2019_Factory = new JT808_0x8500_2019_Factory(); | ||||
JT808_CarDVR_Up_Factory = new JT808_CarDVR_Up_Factory(); | |||||
JT808_CarDVR_Down_Factory = new JT808_CarDVR_Down_Factory(); | |||||
TerminalPhoneNoLength = 12; | TerminalPhoneNoLength = 12; | ||||
Trim = true; | Trim = true; | ||||
} | } | ||||
@@ -48,7 +50,7 @@ namespace JT808.Protocol.Interfaces | |||||
public virtual IJT808_0x8500_2019_Factory JT808_0x8500_2019_Factory { get; set; } | public virtual IJT808_0x8500_2019_Factory JT808_0x8500_2019_Factory { get; set; } | ||||
public IJT808_CarDVR_Up_Factory JT808_CarDVR_Up_Factory { get; set; } | public IJT808_CarDVR_Up_Factory JT808_CarDVR_Up_Factory { get; set; } | ||||
public IJT808_CarDVR_Down_Factory JT808_CarDVR_Down_Factory { get; set; } | public IJT808_CarDVR_Down_Factory JT808_CarDVR_Down_Factory { get; set; } | ||||
public bool SkipCarDVRCRCCode { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } | |||||
public bool SkipCarDVRCRCCode { get; set; } | |||||
public virtual IJT808Config Register(params Assembly[] externalAssemblies) | public virtual IJT808Config Register(params Assembly[] externalAssemblies) | ||||
{ | { | ||||
@@ -65,6 +67,8 @@ namespace JT808.Protocol.Interfaces | |||||
JT808_0x0900_Custom_Factory.Register(easb); | JT808_0x0900_Custom_Factory.Register(easb); | ||||
JT808_0x8900_Custom_Factory.Register(easb); | JT808_0x8900_Custom_Factory.Register(easb); | ||||
JT808_0x8500_2019_Factory.Register(easb); | JT808_0x8500_2019_Factory.Register(easb); | ||||
JT808_CarDVR_Up_Factory.Register(easb); | |||||
JT808_CarDVR_Down_Factory.Register(easb); | |||||
} | } | ||||
} | } | ||||
return this; | return this; | ||||
@@ -9,7 +9,7 @@ namespace JT808.Protocol.Interfaces | |||||
/// </summary> | /// </summary> | ||||
public interface IJT808_CarDVR_Down_Factory : IJT808ExternalRegister | public interface IJT808_CarDVR_Down_Factory : IJT808ExternalRegister | ||||
{ | { | ||||
IDictionary<byte, JT808CarDVRDownBodies> Map { get; } | |||||
IJT808_CarDVR_Down_Factory SetMap<JT808CarDVRDownBodies>() ; | |||||
IDictionary<byte, object> Map { get; } | |||||
IJT808_CarDVR_Down_Factory SetMap<TJT808CarDVRDownBodies>() where TJT808CarDVRDownBodies : JT808CarDVRDownBodies; | |||||
} | } | ||||
} | } |
@@ -9,7 +9,7 @@ namespace JT808.Protocol.Interfaces | |||||
/// </summary> | /// </summary> | ||||
public interface IJT808_CarDVR_Up_Factory : IJT808ExternalRegister | public interface IJT808_CarDVR_Up_Factory : IJT808ExternalRegister | ||||
{ | { | ||||
IDictionary<byte, JT808CarDVRUpBodies> Map { get; } | |||||
IJT808_CarDVR_Up_Factory SetMap<JT808CarDVRUpBodies>() ; | |||||
IDictionary<byte, object> Map { get; } | |||||
IJT808_CarDVR_Up_Factory SetMap<TJT808CarDVRUpBodies>() where TJT808CarDVRUpBodies : JT808CarDVRUpBodies; | |||||
} | } | ||||
} | } |
@@ -0,0 +1,55 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Reflection; | |||||
using System.Text; | |||||
namespace JT808.Protocol.Interfaces | |||||
{ | |||||
/// <summary> | |||||
/// 记录仪工厂 | |||||
/// </summary> | |||||
public class JT808_CarDVR_Down_Factory:IJT808_CarDVR_Down_Factory | |||||
{ | |||||
public IDictionary<byte, object> Map { get; } | |||||
public JT808_CarDVR_Down_Factory() | |||||
{ | |||||
Map = new Dictionary<byte, object>(); | |||||
Register(Assembly.GetExecutingAssembly()); | |||||
} | |||||
public void Register(Assembly externalAssembly) | |||||
{ | |||||
var types = externalAssembly.GetTypes().Where(w => w.BaseType == typeof(JT808CarDVRDownBodies)).ToList(); | |||||
foreach (var type in types) | |||||
{ | |||||
var instance = Activator.CreateInstance(type); | |||||
var commandId = (byte)type.GetProperty(nameof(JT808CarDVRDownBodies.CommandId)).GetValue(instance); | |||||
if (Map.ContainsKey(commandId)) | |||||
{ | |||||
throw new ArgumentException($"{type.FullName} {commandId} An element with the same key already exists."); | |||||
} | |||||
else | |||||
{ | |||||
Map.Add(commandId, instance); | |||||
} | |||||
} | |||||
} | |||||
public IJT808_CarDVR_Down_Factory SetMap<TJT808CarDVRDownBodies>() where TJT808CarDVRDownBodies : JT808CarDVRDownBodies | |||||
{ | |||||
Type type = typeof(TJT808CarDVRDownBodies); | |||||
var instance = Activator.CreateInstance(type); | |||||
var attachInfoId = (byte)type.GetProperty(nameof(JT808CarDVRDownBodies.CommandId)).GetValue(instance); | |||||
if (Map.ContainsKey(attachInfoId)) | |||||
{ | |||||
throw new ArgumentException($"{type.FullName} {attachInfoId} An element with the same key already exists."); | |||||
} | |||||
else | |||||
{ | |||||
Map.Add(attachInfoId, instance); | |||||
} | |||||
return this; | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,55 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Reflection; | |||||
using System.Text; | |||||
namespace JT808.Protocol.Interfaces | |||||
{ | |||||
/// <summary> | |||||
/// 记录仪工厂 | |||||
/// </summary> | |||||
public class JT808_CarDVR_Up_Factory:IJT808_CarDVR_Up_Factory | |||||
{ | |||||
public IDictionary<byte, object> Map { get; } | |||||
public JT808_CarDVR_Up_Factory() | |||||
{ | |||||
Map = new Dictionary<byte, object>(); | |||||
Register(Assembly.GetExecutingAssembly()); | |||||
} | |||||
public void Register(Assembly externalAssembly) | |||||
{ | |||||
var types = externalAssembly.GetTypes().Where(w => w.BaseType == typeof(JT808CarDVRUpBodies)).ToList(); | |||||
foreach (var type in types) | |||||
{ | |||||
var instance = Activator.CreateInstance(type); | |||||
var commandId = (byte)type.GetProperty(nameof(JT808CarDVRUpBodies.CommandId)).GetValue(instance); | |||||
if (Map.ContainsKey(commandId)) | |||||
{ | |||||
throw new ArgumentException($"{type.FullName} {commandId} An element with the same key already exists."); | |||||
} | |||||
else | |||||
{ | |||||
Map.Add(commandId, instance); | |||||
} | |||||
} | |||||
} | |||||
public IJT808_CarDVR_Up_Factory SetMap<TJT808CarDVRUpBodies>() where TJT808CarDVRUpBodies : JT808CarDVRUpBodies | |||||
{ | |||||
Type type = typeof(TJT808CarDVRUpBodies); | |||||
var instance = Activator.CreateInstance(type); | |||||
var attachInfoId = (byte)type.GetProperty(nameof(JT808CarDVRUpBodies.CommandId)).GetValue(instance); | |||||
if (Map.ContainsKey(attachInfoId)) | |||||
{ | |||||
throw new ArgumentException($"{type.FullName} {attachInfoId} An element with the same key already exists."); | |||||
} | |||||
else | |||||
{ | |||||
Map.Add(attachInfoId, instance); | |||||
} | |||||
return this; | |||||
} | |||||
} | |||||
} |
@@ -2633,6 +2633,16 @@ | |||||
记录仪工厂 | 记录仪工厂 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="T:JT808.Protocol.Interfaces.JT808_CarDVR_Down_Factory"> | |||||
<summary> | |||||
记录仪工厂 | |||||
</summary> | |||||
</member> | |||||
<member name="T:JT808.Protocol.Interfaces.JT808_CarDVR_Up_Factory"> | |||||
<summary> | |||||
记录仪工厂 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.IJT808Config.MsgSNDistributed"> | <member name="P:JT808.Protocol.IJT808Config.MsgSNDistributed"> | ||||
<summary> | <summary> | ||||
消息流水号 | 消息流水号 | ||||
@@ -3682,36 +3692,200 @@ | |||||
返回:车辆信息 | 返回:车辆信息 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0x82.Vin"> | |||||
<summary> | |||||
车辆识别代号 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0x82.VehicleNo"> | |||||
<summary> | |||||
机动车号牌号码 | |||||
后 3 个字节为备用字 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0x82.VehicleType"> | |||||
<summary> | |||||
机动车号牌分类 | |||||
后 4 个字节为备用字 | |||||
</summary> | |||||
</member> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0x83"> | <member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0x83"> | ||||
<summary> | <summary> | ||||
设置记录仪初次安装日期 | 设置记录仪初次安装日期 | ||||
返回:初次安装日期 | 返回:初次安装日期 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0x83.RealTime"> | |||||
<summary> | |||||
实时时间 | |||||
</summary> | |||||
</member> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0x84"> | <member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0x84"> | ||||
<summary> | <summary> | ||||
设置状态量配置信息 | 设置状态量配置信息 | ||||
返回:状态量配置信息 | 返回:状态量配置信息 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0x84.RealTime"> | |||||
<summary> | |||||
实时时间 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0x84.SignalOperate"> | |||||
<summary> | |||||
信号字节个数 | |||||
单位字节的 D7~D0(由高到低)分别对应 8 个状态信号, 1 表示有操作,0表示无操作 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0x84.D0"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0x84.NearLight"> | |||||
<summary> | |||||
近光 D3 | |||||
10个字节,未使用或不足时,补0 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0x84.FarLight"> | |||||
<summary> | |||||
远光 D4 | |||||
10个字节,未使用或不足时,补0 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0x84.RightTurn"> | |||||
<summary> | |||||
右转向 D5 | |||||
10个字节,未使用或不足时,补0 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0x84.LeftTurn"> | |||||
<summary> | |||||
左转向 D6 | |||||
10个字节,未使用或不足时,补0 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0x84.Brake"> | |||||
<summary> | |||||
制动 D7 | |||||
10个字节,未使用或不足时,补0 | |||||
</summary> | |||||
</member> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xC2"> | <member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xC2"> | ||||
<summary> | <summary> | ||||
设置记录仪时间 | 设置记录仪时间 | ||||
返回:北京时间的日期、时钟 | 返回:北京时间的日期、时钟 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xC2.RealTime"> | |||||
<summary> | |||||
实时时间 | |||||
</summary> | |||||
</member> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xC3"> | <member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xC3"> | ||||
<summary> | <summary> | ||||
设置记录仪脉冲系数 | 设置记录仪脉冲系数 | ||||
返回:记录仪脉冲系数 | 返回:记录仪脉冲系数 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xC3.RealTime"> | |||||
<summary> | |||||
当前时间 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xC3.PulseCoefficientHighByte"> | |||||
<summary> | |||||
脉冲系数高字节 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xC3.PulseCoefficientLowByte"> | |||||
<summary> | |||||
仪脉冲系数低字节 | |||||
</summary> | |||||
</member> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xC4"> | <member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xC4"> | ||||
<summary> | <summary> | ||||
设置初始里程 | 设置初始里程 | ||||
返回:记录仪初次安装时车辆已行驶的总里程 | 返回:记录仪初次安装时车辆已行驶的总里程 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xC4.RealTime"> | |||||
<summary> | |||||
实时时间 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xC4.FirstInstallTime"> | |||||
<summary> | |||||
初次安装时间 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xC4.FirstMileage"> | |||||
<summary> | |||||
初始里程 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xC4.TotalMilage"> | |||||
<summary> | |||||
累计里程 | |||||
</summary> | |||||
</member> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xE0"> | |||||
<summary> | |||||
进入或保持检定状态 | |||||
返回:进入或保持检定状态 | |||||
</summary> | |||||
</member> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xE1"> | |||||
<summary> | |||||
进入里程误差测量 | |||||
返回:通过 DB9 的 7 脚接收标准速度脉冲测量信号(TTL 电平) | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xE1.UniqueNumber"> | |||||
<summary> | |||||
记录仪唯一性编号 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xE1.PulseCoefficient"> | |||||
<summary> | |||||
脉冲系数 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xE1.Speed"> | |||||
<summary> | |||||
当前速度 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xE1.TotalMileage"> | |||||
<summary> | |||||
累计里程 单位为米 | |||||
单位为 0.1 千米每小时 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xE1.StatusSignal"> | |||||
<summary> | |||||
状态信号 | |||||
</summary> | |||||
</member> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xE2"> | |||||
<summary> | |||||
进入脉冲系数误差测量 | |||||
返回:通过 DB9 的 7 脚输出车速传感器信号(TTL 电平) | |||||
</summary> | |||||
</member> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xE3"> | |||||
<summary> | |||||
进入实时时间误差测量 | |||||
返回:通过 DB9 的 7 脚输出实时时钟的秒脉冲信号(TTL 电平) | |||||
</summary> | |||||
</member> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Down_0xE4"> | |||||
<summary> | |||||
返回正常工作状态 | |||||
返回:返回正常工作状态 | |||||
</summary> | |||||
</member> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x00"> | <member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x00"> | ||||
<summary> | <summary> | ||||
采集记录仪执行标准版本 | 采集记录仪执行标准版本 | ||||
@@ -3790,16 +3964,11 @@ | |||||
当前时间 | 当前时间 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x04.PulseCoefficientHighByte"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x04.PulseCoefficient"> | |||||
<summary> | <summary> | ||||
脉冲系数高字节 | 脉冲系数高字节 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x04.PulseCoefficientLowByte"> | |||||
<summary> | |||||
仪脉冲系数低字节 | |||||
</summary> | |||||
</member> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x05"> | <member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x05"> | ||||
<summary> | <summary> | ||||
采集车辆信息 | 采集车辆信息 | ||||
@@ -3918,34 +4087,34 @@ | |||||
请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x08.JT808_CarDVR_Up_0x08_SpeedPerMinute"> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x08_SpeedPerMinute"> | |||||
<summary> | <summary> | ||||
单位分钟行驶速度记录数据块格式 | 单位分钟行驶速度记录数据块格式 | ||||
1.本数据块总长度为 126 个字节,不足部分以 FFH补齐; | 1.本数据块总长度为 126 个字节,不足部分以 FFH补齐; | ||||
2.如单位分钟内无数据记录,则本数据块无效,数据长度为0,数据为空 | 2.如单位分钟内无数据记录,则本数据块无效,数据长度为0,数据为空 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x08.JT808_CarDVR_Up_0x08_SpeedPerMinute.StartTime"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x08_SpeedPerMinute.StartTime"> | |||||
<summary> | <summary> | ||||
开始时间 | 开始时间 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x08.JT808_CarDVR_Up_0x08_SpeedPerMinute.JT808_CarDVR_Up_0x08_SpeedPerSeconds"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x08_SpeedPerMinute.JT808_CarDVR_Up_0x08_SpeedPerSeconds"> | |||||
<summary> | <summary> | ||||
60s钟,每秒的信息 | 60s钟,每秒的信息 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x08.JT808_CarDVR_Up_0x08_SpeedPerSecond"> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x08_SpeedPerSecond"> | |||||
<summary> | <summary> | ||||
开始时间之后每秒钟的平均速度和状态信号 | 开始时间之后每秒钟的平均速度和状态信号 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x08.JT808_CarDVR_Up_0x08_SpeedPerSecond.AvgSpeedAfterStartTime"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x08_SpeedPerSecond.AvgSpeedAfterStartTime"> | |||||
<summary> | <summary> | ||||
开始时间之后每秒钟的平均速度 | 开始时间之后每秒钟的平均速度 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x08.JT808_CarDVR_Up_0x08_SpeedPerSecond.StatusSignalAfterStartTime"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x08_SpeedPerSecond.StatusSignalAfterStartTime"> | |||||
<summary> | <summary> | ||||
开始时间之后每秒钟的状态信号 | 开始时间之后每秒钟的状态信号 | ||||
</summary> | </summary> | ||||
@@ -3962,44 +4131,44 @@ | |||||
请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x09.JT808_CarDVR_Up_0x09_PositionPerHour"> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x09_PositionPerHour"> | |||||
<summary> | <summary> | ||||
指定的结束时间之前最近的每 小时的位置信息记录 | 指定的结束时间之前最近的每 小时的位置信息记录 | ||||
1.本数据块总长度为 666 个字节,不足部分以 FFH补齐; | 1.本数据块总长度为 666 个字节,不足部分以 FFH补齐; | ||||
2.如单位分钟内无数据记录,则本数据块无效,数据长度为0,数据为空 | 2.如单位分钟内无数据记录,则本数据块无效,数据长度为0,数据为空 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x09.JT808_CarDVR_Up_0x09_PositionPerHour.StartTime"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x09_PositionPerHour.StartTime"> | |||||
<summary> | <summary> | ||||
开始时间 | 开始时间 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x09.JT808_CarDVR_Up_0x09_PositionPerHour.JT808_CarDVR_Up_0x09_PositionPerMinutes"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x09_PositionPerHour.JT808_CarDVR_Up_0x09_PositionPerMinutes"> | |||||
<summary> | <summary> | ||||
60s钟,每秒的信息 | 60s钟,每秒的信息 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x09.JT808_CarDVR_Up_0x09_PositionPerMinute"> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x09_PositionPerMinute"> | |||||
<summary> | <summary> | ||||
开始时间之后每分钟的平均速度和位置信息 | 开始时间之后每分钟的平均速度和位置信息 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x09.JT808_CarDVR_Up_0x09_PositionPerMinute.GpsLng"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x09_PositionPerMinute.GpsLng"> | |||||
<summary> | <summary> | ||||
经度 | 经度 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x09.JT808_CarDVR_Up_0x09_PositionPerMinute.GpsLat"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x09_PositionPerMinute.GpsLat"> | |||||
<summary> | <summary> | ||||
纬度 | 纬度 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x09.JT808_CarDVR_Up_0x09_PositionPerMinute.Height"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x09_PositionPerMinute.Height"> | |||||
<summary> | <summary> | ||||
高度 | 高度 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x09.JT808_CarDVR_Up_0x09_PositionPerMinute.AvgSpeedAfterStartTime"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x09_PositionPerMinute.AvgSpeedAfterStartTime"> | |||||
<summary> | <summary> | ||||
开始时间之后每分钟的平均速度 | 开始时间之后每分钟的平均速度 | ||||
</summary> | </summary> | ||||
@@ -4016,54 +4185,54 @@ | |||||
请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10.JT808_CarDVR_Up_0x10_AccidentSuspectin"> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10_AccidentSuspectin"> | |||||
<summary> | <summary> | ||||
指定的结束时间之前最近的每条事故疑点记录 | 指定的结束时间之前最近的每条事故疑点记录 | ||||
1.本数据块总长度为 234 个字节; | 1.本数据块总长度为 234 个字节; | ||||
2.如单位分钟内无数据记录,则本数据块无效,数据长度为0,数据为空 | 2.如单位分钟内无数据记录,则本数据块无效,数据长度为0,数据为空 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10.JT808_CarDVR_Up_0x10_AccidentSuspectin.EndTime"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10_AccidentSuspectin.EndTime"> | |||||
<summary> | <summary> | ||||
行驶结束时间 | 行驶结束时间 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10.JT808_CarDVR_Up_0x10_AccidentSuspectin.DriverLicenseNo"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10_AccidentSuspectin.DriverLicenseNo"> | |||||
<summary> | <summary> | ||||
机动车驾驶证号码 | 机动车驾驶证号码 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10.JT808_CarDVR_Up_0x10_AccidentSuspectin.JT808_CarDVR_Up_0x09_DrivingStatuss"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10_AccidentSuspectin.JT808_CarDVR_Up_0x09_DrivingStatuss"> | |||||
<summary> | <summary> | ||||
每 0.2s 间隔采集 1 次,共 100组 20s 的事故疑点记录,按时间倒序排列 | 每 0.2s 间隔采集 1 次,共 100组 20s 的事故疑点记录,按时间倒序排列 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10.JT808_CarDVR_Up_0x10_AccidentSuspectin.GpsLng"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10_AccidentSuspectin.GpsLng"> | |||||
<summary> | <summary> | ||||
经度 | 经度 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10.JT808_CarDVR_Up_0x10_AccidentSuspectin.GpsLat"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10_AccidentSuspectin.GpsLat"> | |||||
<summary> | <summary> | ||||
纬度 | 纬度 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10.JT808_CarDVR_Up_0x10_AccidentSuspectin.Height"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10_AccidentSuspectin.Height"> | |||||
<summary> | <summary> | ||||
高度 | 高度 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10.JT808_CarDVR_Up_0x10_DrivingStatus"> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10_DrivingStatus"> | |||||
<summary> | <summary> | ||||
行驶结束时间前的状态 | 行驶结束时间前的状态 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10.JT808_CarDVR_Up_0x10_DrivingStatus.Speed"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10_DrivingStatus.Speed"> | |||||
<summary> | <summary> | ||||
速度 | 速度 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10.JT808_CarDVR_Up_0x10_DrivingStatus.StatusSignal"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x10_DrivingStatus.StatusSignal"> | |||||
<summary> | <summary> | ||||
状态信号 | 状态信号 | ||||
</summary> | </summary> | ||||
@@ -4079,52 +4248,52 @@ | |||||
请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11.JT808_CarDVR_Up_0x11_DriveOverTime"> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11_DriveOverTime"> | |||||
<summary> | <summary> | ||||
单位超时驾驶记录数据块 | 单位超时驾驶记录数据块 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11.JT808_CarDVR_Up_0x11_DriveOverTime.DriverLicenseNo"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11_DriveOverTime.DriverLicenseNo"> | |||||
<summary> | <summary> | ||||
机动车驾驶证号码 18位 | 机动车驾驶证号码 18位 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11.JT808_CarDVR_Up_0x11_DriveOverTime.ContinueDrivingStartTime"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11_DriveOverTime.ContinueDrivingStartTime"> | |||||
<summary> | <summary> | ||||
连续驾驶开始时间 | 连续驾驶开始时间 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11.JT808_CarDVR_Up_0x11_DriveOverTime.ContinueDrivingEndTime"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11_DriveOverTime.ContinueDrivingEndTime"> | |||||
<summary> | <summary> | ||||
连续驾驶结束时间 | 连续驾驶结束时间 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11.JT808_CarDVR_Up_0x11_DriveOverTime.GpsStartLng"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11_DriveOverTime.GpsStartLng"> | |||||
<summary> | <summary> | ||||
经度 | 经度 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11.JT808_CarDVR_Up_0x11_DriveOverTime.GpsStartLat"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11_DriveOverTime.GpsStartLat"> | |||||
<summary> | <summary> | ||||
纬度 | 纬度 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11.JT808_CarDVR_Up_0x11_DriveOverTime.StartHeight"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11_DriveOverTime.StartHeight"> | |||||
<summary> | <summary> | ||||
高度 | 高度 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11.JT808_CarDVR_Up_0x11_DriveOverTime.GpsEndLng"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11_DriveOverTime.GpsEndLng"> | |||||
<summary> | <summary> | ||||
经度 | 经度 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11.JT808_CarDVR_Up_0x11_DriveOverTime.GpsEndLat"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11_DriveOverTime.GpsEndLat"> | |||||
<summary> | <summary> | ||||
纬度 | 纬度 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11.JT808_CarDVR_Up_0x11_DriveOverTime.EndHeight"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x11_DriveOverTime.EndHeight"> | |||||
<summary> | <summary> | ||||
高度 | 高度 | ||||
</summary> | </summary> | ||||
@@ -4140,22 +4309,22 @@ | |||||
请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x12.JT808_CarDVR_Up_0x12_DriveLogin"> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x12_DriveLogin"> | |||||
<summary> | <summary> | ||||
单位驾驶人身份记录数据块格式 | 单位驾驶人身份记录数据块格式 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x12.JT808_CarDVR_Up_0x12_DriveLogin.LoginTime"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x12_DriveLogin.LoginTime"> | |||||
<summary> | <summary> | ||||
登入登出时间发生时间 | 登入登出时间发生时间 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x12.JT808_CarDVR_Up_0x12_DriveLogin.DriverLicenseNo"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x12_DriveLogin.DriverLicenseNo"> | |||||
<summary> | <summary> | ||||
机动车驾驶证号码 18位 | 机动车驾驶证号码 18位 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x12.JT808_CarDVR_Up_0x12_DriveLogin.LoginType"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x12_DriveLogin.LoginType"> | |||||
<summary> | <summary> | ||||
事件类型 | 事件类型 | ||||
</summary> | </summary> | ||||
@@ -4171,17 +4340,17 @@ | |||||
请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x13.JT808_CarDVR_Up_0x13_ExternalPowerSupply"> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x13_ExternalPowerSupply"> | |||||
<summary> | <summary> | ||||
单位记录仪外部供电记录数据块格式 | 单位记录仪外部供电记录数据块格式 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x13.JT808_CarDVR_Up_0x13_ExternalPowerSupply.EventTime"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x13_ExternalPowerSupply.EventTime"> | |||||
<summary> | <summary> | ||||
事件发生时间 | 事件发生时间 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x13.JT808_CarDVR_Up_0x13_ExternalPowerSupply.EventType"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x13_ExternalPowerSupply.EventType"> | |||||
<summary> | <summary> | ||||
事件类型 | 事件类型 | ||||
</summary> | </summary> | ||||
@@ -4197,17 +4366,17 @@ | |||||
请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x14.JT808_CarDVR_Up_0x14_ParameterModify"> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x14_ParameterModify"> | |||||
<summary> | <summary> | ||||
单位记录仪外部供电记录数据块格式 | |||||
单位参数修改记录数据块格式 | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x14.JT808_CarDVR_Up_0x14_ParameterModify.EventTime"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x14_ParameterModify.EventTime"> | |||||
<summary> | <summary> | ||||
事件发生时间 | 事件发生时间 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x14.JT808_CarDVR_Up_0x14_ParameterModify.EventType"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x14_ParameterModify.EventType"> | |||||
<summary> | <summary> | ||||
事件类型 | 事件类型 | ||||
</summary> | </summary> | ||||
@@ -4223,42 +4392,42 @@ | |||||
请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | 请求发送指定的时间范围内 N 个单位数据块的数据(N≥1) | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x15.JT808_CarDVR_Up_0x15_SpeedStatusLog"> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x15_SpeedStatusLog"> | |||||
<summary> | <summary> | ||||
单位速度状态日志数据块格式 | 单位速度状态日志数据块格式 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x15.JT808_CarDVR_Up_0x15_SpeedStatusLog.SpeedStatus"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x15_SpeedStatusLog.SpeedStatus"> | |||||
<summary> | <summary> | ||||
记录仪的速度状态 | 记录仪的速度状态 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x15.JT808_CarDVR_Up_0x15_SpeedStatusLog.SpeedStatusStartTime"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x15_SpeedStatusLog.SpeedStatusStartTime"> | |||||
<summary> | <summary> | ||||
速度状态判定的开始时间 | 速度状态判定的开始时间 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x15.JT808_CarDVR_Up_0x15_SpeedStatusLog.SpeedStatusEndTime"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x15_SpeedStatusLog.SpeedStatusEndTime"> | |||||
<summary> | <summary> | ||||
速度状态判定的结束时间 | 速度状态判定的结束时间 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x15.JT808_CarDVR_Up_0x15_SpeedStatusLog.JT808_CarDVR_Up_0x15_SpeedPerSeconds"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x15_SpeedStatusLog.JT808_CarDVR_Up_0x15_SpeedPerSeconds"> | |||||
<summary> | <summary> | ||||
60组 | 60组 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x15.JT808_CarDVR_Up_0x15_SpeedPerSecond"> | |||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x15_SpeedPerSecond"> | |||||
<summary> | <summary> | ||||
每秒速度 | 每秒速度 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x15.JT808_CarDVR_Up_0x15_SpeedPerSecond.RecordSpeed"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x15_SpeedPerSecond.RecordSpeed"> | |||||
<summary> | <summary> | ||||
记录速度 | 记录速度 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x15.JT808_CarDVR_Up_0x15_SpeedPerSecond.ReferenceSpeed"> | |||||
<member name="P:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0x15_SpeedPerSecond.ReferenceSpeed"> | |||||
<summary> | <summary> | ||||
参考速度 | 参考速度 | ||||
</summary> | </summary> | ||||
@@ -4303,6 +4472,7 @@ | |||||
<summary> | <summary> | ||||
进入或保持检定状态 | 进入或保持检定状态 | ||||
返回:进入或保持检定状态 | 返回:进入或保持检定状态 | ||||
在检定状态下,检定装置以不大于2秒的时间间隔发送包含本命令字的命令帧,记录仪在6秒内未收到该命令帧,则自动返回正常工作状态。 | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0xE1"> | <member name="T:JT808.Protocol.MessageBody.CarDVR.JT808_CarDVR_Up_0xE1"> | ||||
@@ -4968,6 +5138,22 @@ | |||||
查询类型为4 | 查询类型为4 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="T:JT808.Protocol.MessageBody.JT808_0x0700"> | |||||
<summary> | |||||
行驶记录数据上传 | |||||
0x0700 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.JT808_0x0700.ReplyMsgNum"> | |||||
<summary> | |||||
应答流水号 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.JT808_0x0700.CommandId"> | |||||
<summary> | |||||
命令字 | |||||
</summary> | |||||
</member> | |||||
<member name="T:JT808.Protocol.MessageBody.JT808_0x0701"> | <member name="T:JT808.Protocol.MessageBody.JT808_0x0701"> | ||||
<summary> | <summary> | ||||
电子运单上报 | 电子运单上报 | ||||
@@ -7465,6 +7651,16 @@ | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="T:JT808.Protocol.MessageBody.JT808_0x8701"> | |||||
<summary> | |||||
行驶记录参数下传命令 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.MessageBody.JT808_0x8701.CommandId"> | |||||
<summary> | |||||
</summary> | |||||
</member> | |||||
<member name="T:JT808.Protocol.MessageBody.JT808_0x8702"> | <member name="T:JT808.Protocol.MessageBody.JT808_0x8702"> | ||||
<summary> | <summary> | ||||
上报驾驶员身份信息请求 | 上报驾驶员身份信息请求 | ||||
@@ -22,7 +22,5 @@ namespace JT808.Protocol | |||||
public virtual bool SkipSerialization { get; set; } = false; | public virtual bool SkipSerialization { get; set; } = false; | ||||
public abstract string Description { get; } | public abstract string Description { get; } | ||||
public abstract JT808CarDVRDownBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config); | |||||
public abstract void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRDownBodies value, IJT808Config config); | |||||
} | } | ||||
} | } |
@@ -1,10 +1,15 @@ | |||||
using System; | |||||
using JT808.Protocol.Enums; | |||||
using JT808.Protocol.Exceptions; | |||||
using JT808.Protocol.Extensions; | |||||
using JT808.Protocol.Formatters; | |||||
using JT808.Protocol.MessagePack; | |||||
using System; | |||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Text; | using System.Text; | ||||
namespace JT808.Protocol | namespace JT808.Protocol | ||||
{ | { | ||||
public class JT808CarDVRDownPackage | |||||
public class JT808CarDVRDownPackage : IJT808MessagePackFormatter<JT808CarDVRDownPackage> | |||||
{ | { | ||||
public const ushort BeginFlag = 0x557A; | public const ushort BeginFlag = 0x557A; | ||||
/// <summary> | /// <summary> | ||||
@@ -31,5 +36,51 @@ namespace JT808.Protocol | |||||
/// 校验字 | /// 校验字 | ||||
/// </summary> | /// </summary> | ||||
public byte CheckCode { get; set; } | public byte CheckCode { get; set; } | ||||
public void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRDownPackage value, IJT808Config config) | |||||
{ | |||||
var currentPosition = writer.GetCurrentPosition(); | |||||
writer.WriteUInt16(value.Begin); | |||||
writer.WriteByte(value.CommandId); | |||||
writer.Skip(2, out var datalengthPosition); | |||||
writer.WriteByte(value.KeepFields); | |||||
if (config.JT808_CarDVR_Down_Factory.Map.TryGetValue(value.CommandId, out var instance)) | |||||
{ | |||||
if (!value.Bodies.SkipSerialization) | |||||
{ | |||||
//4.2.处理消息体 | |||||
JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(instance, ref writer, value.Bodies, config); | |||||
} | |||||
} | |||||
writer.WriteUInt16Return((ushort)(writer.GetCurrentPosition() -2-1- datalengthPosition), datalengthPosition);//此处-2:减去数据长度字段2位,-1:减去保留字长度 | |||||
writer.WriteCarDVRCheckCode(currentPosition); | |||||
} | |||||
public JT808CarDVRDownPackage Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
JT808CarDVRDownPackage value = new JT808CarDVRDownPackage(); | |||||
int currentPosition = reader.ReaderCount; | |||||
value.Begin = reader.ReadUInt16(); | |||||
value.CommandId = reader.ReadByte(); | |||||
value.DataLength = reader.ReadUInt16(); | |||||
value.KeepFields = reader.ReadByte(); | |||||
if (value.DataLength > 0) | |||||
{ | |||||
if (config.JT808_CarDVR_Down_Factory.Map.TryGetValue(value.CommandId, out var instance)) | |||||
{ | |||||
//4.2.处理消息体 | |||||
dynamic attachImpl = JT808MessagePackFormatterResolverExtensions.JT808DynamicDeserialize(instance, ref reader, config); | |||||
value.Bodies = attachImpl; | |||||
} | |||||
} | |||||
var carDVRCheckCode = reader.ReadCarDVRCheckCode(currentPosition); | |||||
if (!config.SkipCarDVRCRCCode) | |||||
{ | |||||
if (carDVRCheckCode.RealXorCheckCode != carDVRCheckCode.CalculateXorCheckCode) | |||||
throw new JT808Exception(JT808ErrorCode.CarDVRCheckCodeNotEqual, $"{reader.RealCheckXorCode}!={reader.CalculateCheckXorCode}"); | |||||
} | |||||
value.CheckCode = reader.ReadByte(); | |||||
return value; | |||||
} | |||||
} | } | ||||
} | } |
@@ -22,7 +22,5 @@ namespace JT808.Protocol | |||||
public virtual bool SkipSerialization { get; set; } = false; | public virtual bool SkipSerialization { get; set; } = false; | ||||
public abstract string Description { get; } | public abstract string Description { get; } | ||||
public abstract JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config); | |||||
public abstract void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies value, IJT808Config config); | |||||
} | } | ||||
} | } |
@@ -1,5 +1,6 @@ | |||||
using JT808.Protocol.Enums; | using JT808.Protocol.Enums; | ||||
using JT808.Protocol.Exceptions; | using JT808.Protocol.Exceptions; | ||||
using JT808.Protocol.Extensions; | |||||
using JT808.Protocol.Formatters; | using JT808.Protocol.Formatters; | ||||
using JT808.Protocol.Interfaces; | using JT808.Protocol.Interfaces; | ||||
using JT808.Protocol.MessagePack; | using JT808.Protocol.MessagePack; | ||||
@@ -59,7 +60,8 @@ namespace JT808.Protocol | |||||
if (config.JT808_CarDVR_Up_Factory.Map.TryGetValue(value.CommandId, out var instance)) | if (config.JT808_CarDVR_Up_Factory.Map.TryGetValue(value.CommandId, out var instance)) | ||||
{ | { | ||||
//4.2.处理消息体 | //4.2.处理消息体 | ||||
value.Bodies = instance.Deserialize(ref reader, config); | |||||
dynamic attachImpl = JT808MessagePackFormatterResolverExtensions.JT808DynamicDeserialize(instance, ref reader, config); | |||||
value.Bodies = attachImpl; | |||||
} | } | ||||
} | } | ||||
var carDVRCheckCode = reader.ReadCarDVRCheckCode(currentPosition); | var carDVRCheckCode = reader.ReadCarDVRCheckCode(currentPosition); | ||||
@@ -81,13 +83,13 @@ namespace JT808.Protocol | |||||
writer.WriteByte(value.KeepFields); | writer.WriteByte(value.KeepFields); | ||||
if (config.JT808_CarDVR_Up_Factory.Map.TryGetValue(value.CommandId, out var instance)) | if (config.JT808_CarDVR_Up_Factory.Map.TryGetValue(value.CommandId, out var instance)) | ||||
{ | { | ||||
if (!instance.SkipSerialization) | |||||
if (!value.Bodies.SkipSerialization) | |||||
{ | { | ||||
//4.2.处理消息体 | //4.2.处理消息体 | ||||
instance.Serialize(ref writer, value.Bodies, config); | |||||
JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(instance, ref writer, value.Bodies, config); | |||||
} | } | ||||
} | } | ||||
writer.WriteUInt16Return((ushort)(writer.GetCurrentPosition() - datalengthPosition + 1), datalengthPosition); | |||||
writer.WriteUInt16Return((ushort)(writer.GetCurrentPosition() -2-1- datalengthPosition), datalengthPosition);//此处-2:减去数据长度字段2位,-1:减去保留字长度 | |||||
writer.WriteCarDVRCheckCode(currentPosition); | writer.WriteCarDVRCheckCode(currentPosition); | ||||
} | } | ||||
} | } | ||||
@@ -21,15 +21,5 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
public override string Description => "采集记录仪执行标准版本"; | public override string Description => "采集记录仪执行标准版本"; | ||||
public override bool SkipSerialization { get; set; } = true; | public override bool SkipSerialization { get; set; } = true; | ||||
public override JT808CarDVRDownBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRDownBodies value, IJT808Config config) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
} | } | ||||
} | } |
@@ -16,20 +16,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Down_0x01 : JT808CarDVRDownBodies | public class JT808_CarDVR_Down_0x01 : JT808CarDVRDownBodies | ||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集指定的驾驶人身份记录.ToByteValue(); | |||||
public override byte CommandId => JT808CarDVRCommandID.采集当前驾驶人信息.ToByteValue(); | |||||
public override string Description => "采集机动车驾驶证号码"; | public override string Description => "采集机动车驾驶证号码"; | ||||
public override bool SkipSerialization { get; set; } = true; | public override bool SkipSerialization { get; set; } = true; | ||||
public override JT808CarDVRDownBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRDownBodies value, IJT808Config config) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
} | } | ||||
} | } |
@@ -21,15 +21,5 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
public override string Description => "实时时间"; | public override string Description => "实时时间"; | ||||
public override bool SkipSerialization { get; set; } = true; | public override bool SkipSerialization { get; set; } = true; | ||||
public override JT808CarDVRDownBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRDownBodies value, IJT808Config config) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
} | } | ||||
} | } |
@@ -21,15 +21,5 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
public override string Description => "实时时间、安装时的初始里程及安装后的累计行驶里程"; | public override string Description => "实时时间、安装时的初始里程及安装后的累计行驶里程"; | ||||
public override bool SkipSerialization { get; set; } = true; | public override bool SkipSerialization { get; set; } = true; | ||||
public override JT808CarDVRDownBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRDownBodies value, IJT808Config config) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
} | } | ||||
} | } |
@@ -21,15 +21,5 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
public override string Description => "实时时间及设定的脉冲系数"; | public override string Description => "实时时间及设定的脉冲系数"; | ||||
public override bool SkipSerialization { get; set; } = true; | public override bool SkipSerialization { get; set; } = true; | ||||
public override JT808CarDVRDownBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRDownBodies value, IJT808Config config) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
} | } | ||||
} | } |
@@ -21,15 +21,5 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
public override string Description => "车辆识别代号、机动车号牌号码和机动车号牌分类"; | public override string Description => "车辆识别代号、机动车号牌号码和机动车号牌分类"; | ||||
public override bool SkipSerialization { get; set; } = true; | public override bool SkipSerialization { get; set; } = true; | ||||
public override JT808CarDVRDownBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRDownBodies value, IJT808Config config) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
} | } | ||||
} | } |
@@ -21,15 +21,5 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
public override string Description => "状态信号配置信息"; | public override string Description => "状态信号配置信息"; | ||||
public override bool SkipSerialization { get; set; } = true; | public override bool SkipSerialization { get; set; } = true; | ||||
public override JT808CarDVRDownBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRDownBodies value, IJT808Config config) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
} | } | ||||
} | } |
@@ -21,15 +21,5 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
public override string Description => "唯一性编号及初次安装日期"; | public override string Description => "唯一性编号及初次安装日期"; | ||||
public override bool SkipSerialization { get; set; } = true; | public override bool SkipSerialization { get; set; } = true; | ||||
public override JT808CarDVRDownBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRDownBodies value, IJT808Config config) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
} | } | ||||
} | } |
@@ -15,7 +15,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 返回:符合条件的行驶速度记录 | /// 返回:符合条件的行驶速度记录 | ||||
/// 如在指定的时间范围内无数据记录,则本数据块数据为空 | /// 如在指定的时间范围内无数据记录,则本数据块数据为空 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Down_0x08 : JT808CarDVRDownBodies | |||||
public class JT808_CarDVR_Down_0x08 : JT808CarDVRDownBodies, IJT808MessagePackFormatter<JT808_CarDVR_Down_0x08> | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集指定的行驶速度记录.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集指定的行驶速度记录.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
@@ -32,7 +32,14 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
public ushort Count { get; set; } | public ushort Count { get; set; } | ||||
public override string Description => "符合条件的行驶速度记录"; | public override string Description => "符合条件的行驶速度记录"; | ||||
public override JT808CarDVRDownBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Down_0x08 value, IJT808Config config) | |||||
{ | |||||
writer.WriteDateTime6(value.StartTime); | |||||
writer.WriteDateTime6(value.EndTime); | |||||
writer.WriteUInt16(value.Count); | |||||
} | |||||
public JT808_CarDVR_Down_0x08 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Down_0x08 value = new JT808_CarDVR_Down_0x08(); | JT808_CarDVR_Down_0x08 value = new JT808_CarDVR_Down_0x08(); | ||||
value.StartTime = reader.ReadDateTime6(); | value.StartTime = reader.ReadDateTime6(); | ||||
@@ -40,13 +47,5 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
value.Count = reader.ReadUInt16(); | value.Count = reader.ReadUInt16(); | ||||
return value; | return value; | ||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRDownBodies jT808CarDVRDownBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Down_0x08 value = jT808CarDVRDownBodies as JT808_CarDVR_Down_0x08; | |||||
writer.WriteDateTime6(value.StartTime); | |||||
writer.WriteDateTime6(value.EndTime); | |||||
writer.WriteUInt16(value.Count); | |||||
} | |||||
} | } | ||||
} | } |
@@ -15,7 +15,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 返回:符合条件的位置信息记录 | /// 返回:符合条件的位置信息记录 | ||||
/// 指定的时间范围内无数据记录,则本数据块数据为空 | /// 指定的时间范围内无数据记录,则本数据块数据为空 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Down_0x09 : JT808CarDVRDownBodies | |||||
public class JT808_CarDVR_Down_0x09 : JT808CarDVRDownBodies, IJT808MessagePackFormatter<JT808_CarDVR_Down_0x09> | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集指定的位置信息记录.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集指定的位置信息记录.ToByteValue(); | ||||
@@ -33,7 +33,14 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public ushort Count { get; set; } | public ushort Count { get; set; } | ||||
public override JT808CarDVRDownBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Down_0x09 value, IJT808Config config) | |||||
{ | |||||
writer.WriteDateTime6(value.StartTime); | |||||
writer.WriteDateTime6(value.EndTime); | |||||
writer.WriteUInt16(value.Count); | |||||
} | |||||
public JT808_CarDVR_Down_0x09 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Down_0x09 value = new JT808_CarDVR_Down_0x09(); | JT808_CarDVR_Down_0x09 value = new JT808_CarDVR_Down_0x09(); | ||||
value.StartTime = reader.ReadDateTime6(); | value.StartTime = reader.ReadDateTime6(); | ||||
@@ -41,13 +48,5 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
value.Count = reader.ReadUInt16(); | value.Count = reader.ReadUInt16(); | ||||
return value; | return value; | ||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRDownBodies jT808CarDVRDownBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Down_0x09 value = jT808CarDVRDownBodies as JT808_CarDVR_Down_0x09; | |||||
writer.WriteDateTime6(value.StartTime); | |||||
writer.WriteDateTime6(value.EndTime); | |||||
writer.WriteUInt16(value.Count); | |||||
} | |||||
} | } | ||||
} | } |
@@ -15,7 +15,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 返回:符合条件的事故疑点记录 | /// 返回:符合条件的事故疑点记录 | ||||
/// 指定的时间范围内无数据记录,则本数据块数据为空 | /// 指定的时间范围内无数据记录,则本数据块数据为空 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Down_0x10 : JT808CarDVRDownBodies | |||||
public class JT808_CarDVR_Down_0x10 : JT808CarDVRDownBodies, IJT808MessagePackFormatter<JT808_CarDVR_Down_0x10> | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集指定的事故疑点记录.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集指定的事故疑点记录.ToByteValue(); | ||||
@@ -33,7 +33,14 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public ushort Count { get; set; } | public ushort Count { get; set; } | ||||
public override JT808CarDVRDownBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Down_0x10 value, IJT808Config config) | |||||
{ | |||||
writer.WriteDateTime6(value.StartTime); | |||||
writer.WriteDateTime6(value.EndTime); | |||||
writer.WriteUInt16(value.Count); | |||||
} | |||||
public JT808_CarDVR_Down_0x10 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Down_0x10 value = new JT808_CarDVR_Down_0x10(); | JT808_CarDVR_Down_0x10 value = new JT808_CarDVR_Down_0x10(); | ||||
value.StartTime = reader.ReadDateTime6(); | value.StartTime = reader.ReadDateTime6(); | ||||
@@ -41,13 +48,5 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
value.Count = reader.ReadUInt16(); | value.Count = reader.ReadUInt16(); | ||||
return value; | return value; | ||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRDownBodies jT808CarDVRDownBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Down_0x10 value = jT808CarDVRDownBodies as JT808_CarDVR_Down_0x10; | |||||
writer.WriteDateTime6(value.StartTime); | |||||
writer.WriteDateTime6(value.EndTime); | |||||
writer.WriteUInt16(value.Count); | |||||
} | |||||
} | } | ||||
} | } |
@@ -14,7 +14,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 采集指定的超时驾驶记录 | /// 采集指定的超时驾驶记录 | ||||
/// 返回:符合条件的超时驾驶记录 | /// 返回:符合条件的超时驾驶记录 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Down_0x11 : JT808CarDVRDownBodies | |||||
public class JT808_CarDVR_Down_0x11 : JT808CarDVRDownBodies, IJT808MessagePackFormatter<JT808_CarDVR_Down_0x11> | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集指定的超时驾驶记录.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集指定的超时驾驶记录.ToByteValue(); | ||||
@@ -32,7 +32,14 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// </summary> | /// </summary> | ||||
public ushort Count { get; set; } | public ushort Count { get; set; } | ||||
public override JT808CarDVRDownBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Down_0x11 value, IJT808Config config) | |||||
{ | |||||
writer.WriteDateTime6(value.StartTime); | |||||
writer.WriteDateTime6(value.EndTime); | |||||
writer.WriteUInt16(value.Count); | |||||
} | |||||
public JT808_CarDVR_Down_0x11 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Down_0x11 value = new JT808_CarDVR_Down_0x11(); | JT808_CarDVR_Down_0x11 value = new JT808_CarDVR_Down_0x11(); | ||||
value.StartTime = reader.ReadDateTime6(); | value.StartTime = reader.ReadDateTime6(); | ||||
@@ -40,13 +47,5 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
value.Count = reader.ReadUInt16(); | value.Count = reader.ReadUInt16(); | ||||
return value; | return value; | ||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRDownBodies jT808CarDVRDownBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Down_0x11 value = jT808CarDVRDownBodies as JT808_CarDVR_Down_0x11; | |||||
writer.WriteDateTime6(value.StartTime); | |||||
writer.WriteDateTime6(value.EndTime); | |||||
writer.WriteUInt16(value.Count); | |||||
} | |||||
} | } | ||||
} | } |
@@ -14,7 +14,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 采集指定的驾驶人身份记录 | /// 采集指定的驾驶人身份记录 | ||||
/// 返回:符合条件的驾驶人登录退出记录 | /// 返回:符合条件的驾驶人登录退出记录 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Down_0x12 : JT808CarDVRDownBodies | |||||
public class JT808_CarDVR_Down_0x12 : JT808CarDVRDownBodies, IJT808MessagePackFormatter<JT808_CarDVR_Down_0x12> | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集指定的驾驶人身份记录.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集指定的驾驶人身份记录.ToByteValue(); | ||||
@@ -31,7 +31,15 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 最大单位数据块个数 | /// 最大单位数据块个数 | ||||
/// </summary> | /// </summary> | ||||
public ushort Count { get; set; } | public ushort Count { get; set; } | ||||
public override JT808CarDVRDownBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Down_0x12 value, IJT808Config config) | |||||
{ | |||||
writer.WriteDateTime6(value.StartTime); | |||||
writer.WriteDateTime6(value.EndTime); | |||||
writer.WriteUInt16(value.Count); | |||||
} | |||||
public JT808_CarDVR_Down_0x12 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Down_0x12 value = new JT808_CarDVR_Down_0x12(); | JT808_CarDVR_Down_0x12 value = new JT808_CarDVR_Down_0x12(); | ||||
value.StartTime = reader.ReadDateTime6(); | value.StartTime = reader.ReadDateTime6(); | ||||
@@ -39,13 +47,5 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
value.Count = reader.ReadUInt16(); | value.Count = reader.ReadUInt16(); | ||||
return value; | return value; | ||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRDownBodies jT808CarDVRDownBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Down_0x12 value = jT808CarDVRDownBodies as JT808_CarDVR_Down_0x12; | |||||
writer.WriteDateTime6(value.StartTime); | |||||
writer.WriteDateTime6(value.EndTime); | |||||
writer.WriteUInt16(value.Count); | |||||
} | |||||
} | } | ||||
} | } |
@@ -14,7 +14,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 采集指定的外部供电记录 | /// 采集指定的外部供电记录 | ||||
/// 返回:符合条件的供电记录 | /// 返回:符合条件的供电记录 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Down_0x13 : JT808CarDVRDownBodies | |||||
public class JT808_CarDVR_Down_0x13 : JT808CarDVRDownBodies, IJT808MessagePackFormatter<JT808_CarDVR_Down_0x13> | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集指定的外部供电记录.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集指定的外部供电记录.ToByteValue(); | ||||
@@ -31,7 +31,15 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 最大单位数据块个数 | /// 最大单位数据块个数 | ||||
/// </summary> | /// </summary> | ||||
public ushort Count { get; set; } | public ushort Count { get; set; } | ||||
public override JT808CarDVRDownBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Down_0x13 value, IJT808Config config) | |||||
{ | |||||
writer.WriteDateTime6(value.StartTime); | |||||
writer.WriteDateTime6(value.EndTime); | |||||
writer.WriteUInt16(value.Count); | |||||
} | |||||
public JT808_CarDVR_Down_0x13 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Down_0x13 value = new JT808_CarDVR_Down_0x13(); | JT808_CarDVR_Down_0x13 value = new JT808_CarDVR_Down_0x13(); | ||||
value.StartTime = reader.ReadDateTime6(); | value.StartTime = reader.ReadDateTime6(); | ||||
@@ -39,13 +47,5 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
value.Count = reader.ReadUInt16(); | value.Count = reader.ReadUInt16(); | ||||
return value; | return value; | ||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRDownBodies jT808CarDVRDownBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Down_0x13 value = jT808CarDVRDownBodies as JT808_CarDVR_Down_0x13; | |||||
writer.WriteDateTime6(value.StartTime); | |||||
writer.WriteDateTime6(value.EndTime); | |||||
writer.WriteUInt16(value.Count); | |||||
} | |||||
} | } | ||||
} | } |
@@ -14,7 +14,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 采集指定的参数修改记录 | /// 采集指定的参数修改记录 | ||||
/// 返回:符合条件的参数修改记录 | /// 返回:符合条件的参数修改记录 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Down_0x14 : JT808CarDVRDownBodies | |||||
public class JT808_CarDVR_Down_0x14 : JT808CarDVRDownBodies, IJT808MessagePackFormatter<JT808_CarDVR_Down_0x14> | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集指定的参数修改记录.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集指定的参数修改记录.ToByteValue(); | ||||
@@ -31,7 +31,15 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 最大单位数据块个数 | /// 最大单位数据块个数 | ||||
/// </summary> | /// </summary> | ||||
public ushort Count { get; set; } | public ushort Count { get; set; } | ||||
public override JT808CarDVRDownBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Down_0x14 value, IJT808Config config) | |||||
{ | |||||
writer.WriteDateTime6(value.StartTime); | |||||
writer.WriteDateTime6(value.EndTime); | |||||
writer.WriteUInt16(value.Count); | |||||
} | |||||
public JT808_CarDVR_Down_0x14 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Down_0x14 value = new JT808_CarDVR_Down_0x14(); | JT808_CarDVR_Down_0x14 value = new JT808_CarDVR_Down_0x14(); | ||||
value.StartTime = reader.ReadDateTime6(); | value.StartTime = reader.ReadDateTime6(); | ||||
@@ -39,13 +47,5 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
value.Count = reader.ReadUInt16(); | value.Count = reader.ReadUInt16(); | ||||
return value; | return value; | ||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRDownBodies jT808CarDVRDownBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Down_0x14 value = jT808CarDVRDownBodies as JT808_CarDVR_Down_0x14; | |||||
writer.WriteDateTime6(value.StartTime); | |||||
writer.WriteDateTime6(value.EndTime); | |||||
writer.WriteUInt16(value.Count); | |||||
} | |||||
} | } | ||||
} | } |
@@ -14,7 +14,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 采集指定的速度状态日志 | /// 采集指定的速度状态日志 | ||||
/// 返回:符合条件的速度状态日志 | /// 返回:符合条件的速度状态日志 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Down_0x15 : JT808CarDVRDownBodies | |||||
public class JT808_CarDVR_Down_0x15 : JT808CarDVRDownBodies, IJT808MessagePackFormatter<JT808_CarDVR_Down_0x15> | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集指定的速度状态日志.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集指定的速度状态日志.ToByteValue(); | ||||
@@ -31,22 +31,21 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 最大单位数据块个数 | /// 最大单位数据块个数 | ||||
/// </summary> | /// </summary> | ||||
public ushort Count { get; set; } | public ushort Count { get; set; } | ||||
public override JT808CarDVRDownBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Down_0x15 value = new JT808_CarDVR_Down_0x15(); | |||||
value.StartTime = reader.ReadDateTime6(); | |||||
value.EndTime = reader.ReadDateTime6(); | |||||
value.Count = reader.ReadUInt16(); | |||||
return value; | |||||
} | |||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRDownBodies jT808CarDVRDownBodies, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Down_0x15 value, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Down_0x15 value = jT808CarDVRDownBodies as JT808_CarDVR_Down_0x15; | |||||
writer.WriteDateTime6(value.StartTime); | writer.WriteDateTime6(value.StartTime); | ||||
writer.WriteDateTime6(value.EndTime); | writer.WriteDateTime6(value.EndTime); | ||||
writer.WriteUInt16(value.Count); | writer.WriteUInt16(value.Count); | ||||
} | } | ||||
public JT808_CarDVR_Down_0x15 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Down_0x15 value = new JT808_CarDVR_Down_0x15(); | |||||
value.StartTime = reader.ReadDateTime6(); | |||||
value.EndTime = reader.ReadDateTime6(); | |||||
value.Count = reader.ReadUInt16(); | |||||
return value; | |||||
} | |||||
} | } | ||||
} | } |
@@ -15,10 +15,23 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 设置车辆信息 | /// 设置车辆信息 | ||||
/// 返回:车辆信息 | /// 返回:车辆信息 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Down_0x82 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Down_0x82 : JT808CarDVRDownBodies, IJT808MessagePackFormatter<JT808_CarDVR_Down_0x82>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.设置车辆信息.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.设置车辆信息.ToByteValue(); | ||||
/// <summary> | |||||
/// 车辆识别代号 | |||||
/// </summary> | |||||
public string Vin { get; set; } | |||||
/// <summary> | |||||
/// 机动车号牌号码 | |||||
/// 后 3 个字节为备用字 | |||||
/// </summary> | |||||
public string VehicleNo { get; set; } | |||||
/// <summary> | |||||
/// 机动车号牌分类 | |||||
/// 后 4 个字节为备用字 | |||||
/// </summary> | |||||
public string VehicleType { get; set; } | |||||
public override string Description => "车辆信息"; | public override string Description => "车辆信息"; | ||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
@@ -26,18 +39,24 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Down_0x82 value, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x82 value = new JT808_CarDVR_Up_0x82(); | |||||
return value; | |||||
writer.WriteASCII(value.Vin.PadRight(17, '0')); | |||||
writer.WriteASCII(value.VehicleNo.PadRight(9, '0')); | |||||
writer.Skip(3, out var reversed1); | |||||
writer.WriteString(value.VehicleType.PadRight(6, '0')); | |||||
writer.Skip(4, out var reversed2); | |||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
public JT808_CarDVR_Down_0x82 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x82 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x82; | |||||
JT808_CarDVR_Down_0x82 value = new JT808_CarDVR_Down_0x82(); | |||||
value.Vin = reader.ReadASCII(17); | |||||
value.VehicleNo = reader.ReadASCII(9); | |||||
reader.Skip(3); | |||||
value.VehicleType = reader.ReadString(6); | |||||
reader.Skip(4); | |||||
return value; | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -15,10 +15,13 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 设置记录仪初次安装日期 | /// 设置记录仪初次安装日期 | ||||
/// 返回:初次安装日期 | /// 返回:初次安装日期 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Down_0x83 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Down_0x83 : JT808CarDVRDownBodies, IJT808MessagePackFormatter<JT808_CarDVR_Down_0x83>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.设置记录仪初次安装日期.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.设置记录仪初次安装日期.ToByteValue(); | ||||
/// <summary> | |||||
/// 实时时间 | |||||
/// </summary> | |||||
public DateTime RealTime { get; set; } | |||||
public override string Description => "初次安装日期"; | public override string Description => "初次安装日期"; | ||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
@@ -26,15 +29,16 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Down_0x83 value, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x83 value = new JT808_CarDVR_Up_0x83(); | |||||
return value; | |||||
writer.WriteDateTime6(value.RealTime); | |||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
public JT808_CarDVR_Down_0x83 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x83 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x83; | |||||
JT808_CarDVR_Down_0x83 value = new JT808_CarDVR_Down_0x83(); | |||||
value.RealTime = reader.ReadDateTime6(); | |||||
return value; | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -15,10 +15,51 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 设置状态量配置信息 | /// 设置状态量配置信息 | ||||
/// 返回:状态量配置信息 | /// 返回:状态量配置信息 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Down_0x84 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Down_0x84 : JT808CarDVRDownBodies, IJT808MessagePackFormatter<JT808_CarDVR_Down_0x84>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.设置状态量配置信息.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.设置状态量配置信息.ToByteValue(); | ||||
/// <summary> | |||||
/// 实时时间 | |||||
/// </summary> | |||||
public DateTime RealTime { get; set; } | |||||
/// <summary> | |||||
/// 信号字节个数 | |||||
/// 单位字节的 D7~D0(由高到低)分别对应 8 个状态信号, 1 表示有操作,0表示无操作 | |||||
/// </summary> | |||||
public byte SignalOperate { get; set; } | |||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public string D0 { get; set; } | |||||
public string D1 { get; set; } | |||||
public string D2 { get; set; } | |||||
/// <summary> | |||||
/// 近光 D3 | |||||
/// 10个字节,未使用或不足时,补0 | |||||
/// </summary> | |||||
public string NearLight { get; set; } | |||||
/// <summary> | |||||
/// 远光 D4 | |||||
/// 10个字节,未使用或不足时,补0 | |||||
/// </summary> | |||||
public string FarLight { get; set; } | |||||
/// <summary> | |||||
/// 右转向 D5 | |||||
/// 10个字节,未使用或不足时,补0 | |||||
/// </summary> | |||||
public string RightTurn { get; set; } | |||||
/// <summary> | |||||
/// 左转向 D6 | |||||
/// 10个字节,未使用或不足时,补0 | |||||
/// </summary> | |||||
public string LeftTurn { get; set; } | |||||
/// <summary> | |||||
/// 制动 D7 | |||||
/// 10个字节,未使用或不足时,补0 | |||||
/// </summary> | |||||
public string Brake { get; set; } | |||||
public override string Description => "状态量配置信息"; | public override string Description => "状态量配置信息"; | ||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
@@ -26,15 +67,34 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Down_0x84 value, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x84 value = new JT808_CarDVR_Up_0x84(); | |||||
return value; | |||||
writer.WriteDateTime6(value.RealTime); | |||||
writer.WriteByte(value.SignalOperate); | |||||
writer.WriteASCII(value.D0.PadRight(0)); | |||||
writer.WriteASCII(value.D1.PadRight(0)); | |||||
writer.WriteASCII(value.D2.PadRight(0)); | |||||
writer.WriteASCII(value.NearLight.PadRight(0)); | |||||
writer.WriteASCII(value.FarLight.PadRight(0)); | |||||
writer.WriteASCII(value.RightTurn.PadRight(0)); | |||||
writer.WriteASCII(value.LeftTurn.PadRight(0)); | |||||
writer.WriteASCII(value.Brake.PadRight(0)); | |||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
public JT808_CarDVR_Down_0x84 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x84 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x84; | |||||
JT808_CarDVR_Down_0x84 value = new JT808_CarDVR_Down_0x84(); | |||||
value.RealTime = reader.ReadDateTime6(); | |||||
value.SignalOperate = reader.ReadByte(); | |||||
value.D0 = reader.ReadASCII(10); | |||||
value.D1 = reader.ReadASCII(10); | |||||
value.D2 = reader.ReadASCII(10); | |||||
value.NearLight = reader.ReadASCII(10); | |||||
value.FarLight = reader.ReadASCII(10); | |||||
value.RightTurn = reader.ReadASCII(10); | |||||
value.LeftTurn = reader.ReadASCII(10); | |||||
value.Brake = reader.ReadASCII(10); | |||||
return value; | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -15,10 +15,13 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 设置记录仪时间 | /// 设置记录仪时间 | ||||
/// 返回:北京时间的日期、时钟 | /// 返回:北京时间的日期、时钟 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Down_0xC2 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Down_0xC2 : JT808CarDVRDownBodies, IJT808MessagePackFormatter<JT808_CarDVR_Down_0xC2>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.设置记录仪时间.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.设置记录仪时间.ToByteValue(); | ||||
/// <summary> | |||||
/// 实时时间 | |||||
/// </summary> | |||||
public DateTime RealTime { get; set; } | |||||
public override string Description => "北京时间的日期、时钟"; | public override string Description => "北京时间的日期、时钟"; | ||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
@@ -26,16 +29,17 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Down_0xC2 value, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0xC2 value = new JT808_CarDVR_Up_0xC2(); | |||||
return value; | |||||
writer.WriteDateTime6(value.RealTime); | |||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
public JT808_CarDVR_Down_0xC2 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0xC2 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0xC2; | |||||
JT808_CarDVR_Down_0xC2 value = new JT808_CarDVR_Down_0xC2(); | |||||
value.RealTime = reader.ReadDateTime6(); | |||||
return value; | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -15,10 +15,21 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 设置记录仪脉冲系数 | /// 设置记录仪脉冲系数 | ||||
/// 返回:记录仪脉冲系数 | /// 返回:记录仪脉冲系数 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Down_0xC3 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Down_0xC3 : JT808CarDVRDownBodies, IJT808MessagePackFormatter<JT808_CarDVR_Down_0xC3>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.设置记录仪脉冲系数.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.设置记录仪脉冲系数.ToByteValue(); | ||||
/// <summary> | |||||
/// 当前时间 | |||||
/// </summary> | |||||
public DateTime RealTime { get; set; } | |||||
/// <summary> | |||||
/// 脉冲系数高字节 | |||||
/// </summary> | |||||
public byte PulseCoefficientHighByte { get; set; } | |||||
/// <summary> | |||||
/// 仪脉冲系数低字节 | |||||
/// </summary> | |||||
public byte PulseCoefficientLowByte { get; set; } | |||||
public override string Description => "记录仪脉冲系数"; | public override string Description => "记录仪脉冲系数"; | ||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
@@ -26,16 +37,21 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Down_0xC3 value, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0xC3 value = new JT808_CarDVR_Up_0xC3(); | |||||
return value; | |||||
writer.WriteDateTime6(value.RealTime); | |||||
writer.WriteByte(value.PulseCoefficientHighByte); | |||||
writer.WriteByte(value.PulseCoefficientLowByte); | |||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
public JT808_CarDVR_Down_0xC3 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0xC3 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0xC3; | |||||
JT808_CarDVR_Down_0xC3 value = new JT808_CarDVR_Down_0xC3(); | |||||
value.RealTime = reader.ReadDateTime6(); | |||||
value.PulseCoefficientHighByte = reader.ReadByte(); | |||||
value.PulseCoefficientLowByte = reader.ReadByte(); | |||||
return value; | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -15,9 +15,25 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 设置初始里程 | /// 设置初始里程 | ||||
/// 返回:记录仪初次安装时车辆已行驶的总里程 | /// 返回:记录仪初次安装时车辆已行驶的总里程 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Down_0xC4 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Down_0xC4 : JT808CarDVRDownBodies, IJT808MessagePackFormatter<JT808_CarDVR_Down_0xC4>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.设置初始里程.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.设置初始里程.ToByteValue(); | ||||
/// <summary> | |||||
/// 实时时间 | |||||
/// </summary> | |||||
public DateTime RealTime { get; set; } | |||||
/// <summary> | |||||
/// 初次安装时间 | |||||
/// </summary> | |||||
public DateTime FirstInstallTime { get; set; } | |||||
/// <summary> | |||||
/// 初始里程 | |||||
/// </summary> | |||||
public string FirstMileage { get; set; } | |||||
/// <summary> | |||||
/// 累计里程 | |||||
/// </summary> | |||||
public string TotalMilage { get; set; } | |||||
public override string Description => "车辆识别代号、机动车号牌号码和机动车号牌分类"; | public override string Description => "车辆识别代号、机动车号牌号码和机动车号牌分类"; | ||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
@@ -25,15 +41,22 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Down_0xC4 value, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0xC4 value = new JT808_CarDVR_Up_0xC4(); | |||||
return value; | |||||
writer.WriteDateTime6(value.RealTime); | |||||
writer.WriteDateTime6(value.FirstInstallTime); | |||||
writer.WriteBCD(value.FirstMileage, 8); | |||||
writer.WriteBCD(value.TotalMilage, 8); | |||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
public JT808_CarDVR_Down_0xC4 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0xC4 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0xC4; | |||||
JT808_CarDVR_Down_0xC4 value = new JT808_CarDVR_Down_0xC4(); | |||||
value.RealTime = reader.ReadDateTime6(); | |||||
value.FirstInstallTime = reader.ReadDateTime6(); | |||||
value.FirstMileage = reader.ReadBCD(8); | |||||
value.TotalMilage = reader.ReadBCD(8); | |||||
return value; | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -0,0 +1,26 @@ | |||||
using JT808.Protocol.Enums; | |||||
using JT808.Protocol.Extensions; | |||||
using JT808.Protocol.Formatters; | |||||
using JT808.Protocol.Interfaces; | |||||
using JT808.Protocol.MessagePack; | |||||
using System; | |||||
using System.Buffers.Binary; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json; | |||||
namespace JT808.Protocol.MessageBody.CarDVR | |||||
{ | |||||
/// <summary> | |||||
/// 进入或保持检定状态 | |||||
/// 返回:进入或保持检定状态 | |||||
/// </summary> | |||||
public class JT808_CarDVR_Down_0xE0 : JT808CarDVRDownBodies | |||||
{ | |||||
public override byte CommandId => JT808CarDVRCommandID.进入或保持检定状态.ToByteValue(); | |||||
public override string Description => "进入或保持检定状态"; | |||||
public override bool SkipSerialization { get; set; } = true; | |||||
} | |||||
} |
@@ -0,0 +1,69 @@ | |||||
using JT808.Protocol.Enums; | |||||
using JT808.Protocol.Extensions; | |||||
using JT808.Protocol.Formatters; | |||||
using JT808.Protocol.Interfaces; | |||||
using JT808.Protocol.MessagePack; | |||||
using System; | |||||
using System.Buffers.Binary; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json; | |||||
namespace JT808.Protocol.MessageBody.CarDVR | |||||
{ | |||||
/// <summary> | |||||
/// 进入里程误差测量 | |||||
/// 返回:通过 DB9 的 7 脚接收标准速度脉冲测量信号(TTL 电平) | |||||
/// </summary> | |||||
public class JT808_CarDVR_Down_0xE1 : JT808CarDVRDownBodies, IJT808MessagePackFormatter<JT808_CarDVR_Down_0xE1>, IJT808Analyze | |||||
{ | |||||
public override byte CommandId => JT808CarDVRCommandID.进入里程误差测量.ToByteValue(); | |||||
/// <summary> | |||||
/// 记录仪唯一性编号 | |||||
/// </summary> | |||||
public string UniqueNumber { get; set; } | |||||
/// <summary> | |||||
/// 脉冲系数 | |||||
/// </summary> | |||||
public ushort PulseCoefficient { get; set; } | |||||
/// <summary> | |||||
/// 当前速度 | |||||
/// </summary> | |||||
public ushort Speed { get; set; } | |||||
/// <summary> | |||||
/// 累计里程 单位为米 | |||||
/// 单位为 0.1 千米每小时 | |||||
/// </summary> | |||||
public uint TotalMileage { get; set; } | |||||
/// <summary> | |||||
/// 状态信号 | |||||
/// </summary> | |||||
public byte StatusSignal { get; set; } | |||||
public override string Description => "通过 DB9 的 7 脚接收标准速度脉冲测量信号(TTL 电平)"; | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | |||||
{ | |||||
} | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Down_0xE1 value, IJT808Config config) | |||||
{ | |||||
writer.WriteASCII(value.UniqueNumber.PadRight(35, '0')); | |||||
writer.WriteUInt16(value.PulseCoefficient); | |||||
writer.WriteUInt16(value.Speed); | |||||
writer.WriteUInt32(value.TotalMileage); | |||||
writer.WriteByte(value.StatusSignal); | |||||
} | |||||
public JT808_CarDVR_Down_0xE1 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Down_0xE1 value = new JT808_CarDVR_Down_0xE1(); | |||||
value.UniqueNumber = reader.ReadASCII(35); | |||||
value.PulseCoefficient = reader.ReadUInt16(); | |||||
value.Speed = reader.ReadUInt16(); | |||||
value.TotalMileage = reader.ReadUInt32(); | |||||
value.StatusSignal = reader.ReadByte(); | |||||
return value; | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,26 @@ | |||||
using JT808.Protocol.Enums; | |||||
using JT808.Protocol.Extensions; | |||||
using JT808.Protocol.Formatters; | |||||
using JT808.Protocol.Interfaces; | |||||
using JT808.Protocol.MessagePack; | |||||
using System; | |||||
using System.Buffers.Binary; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json; | |||||
namespace JT808.Protocol.MessageBody.CarDVR | |||||
{ | |||||
/// <summary> | |||||
/// 进入脉冲系数误差测量 | |||||
/// 返回:通过 DB9 的 7 脚输出车速传感器信号(TTL 电平) | |||||
/// </summary> | |||||
public class JT808_CarDVR_Down_0xE2 : JT808CarDVRDownBodies | |||||
{ | |||||
public override byte CommandId => JT808CarDVRCommandID.进入脉冲系数误差测量.ToByteValue(); | |||||
public override string Description => "通过 DB9 的 7 脚输出车速传感器信号(TTL 电平)"; | |||||
public override bool SkipSerialization { get; set; } = true; | |||||
} | |||||
} |
@@ -0,0 +1,25 @@ | |||||
using JT808.Protocol.Enums; | |||||
using JT808.Protocol.Extensions; | |||||
using JT808.Protocol.Formatters; | |||||
using JT808.Protocol.Interfaces; | |||||
using JT808.Protocol.MessagePack; | |||||
using System; | |||||
using System.Buffers.Binary; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json; | |||||
namespace JT808.Protocol.MessageBody.CarDVR | |||||
{ | |||||
/// <summary> | |||||
/// 进入实时时间误差测量 | |||||
/// 返回:通过 DB9 的 7 脚输出实时时钟的秒脉冲信号(TTL 电平) | |||||
/// </summary> | |||||
public class JT808_CarDVR_Down_0xE3 : JT808CarDVRDownBodies | |||||
{ | |||||
public override byte CommandId => JT808CarDVRCommandID.进入实时时间误差测量.ToByteValue(); | |||||
public override string Description => "通过 DB9 的 7 脚输出实时时钟的秒脉冲信号(TTL 电平)"; | |||||
public override bool SkipSerialization { get; set; } = true; | |||||
} | |||||
} |
@@ -0,0 +1,25 @@ | |||||
using JT808.Protocol.Enums; | |||||
using JT808.Protocol.Extensions; | |||||
using JT808.Protocol.Formatters; | |||||
using JT808.Protocol.Interfaces; | |||||
using JT808.Protocol.MessagePack; | |||||
using System; | |||||
using System.Buffers.Binary; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json; | |||||
namespace JT808.Protocol.MessageBody.CarDVR | |||||
{ | |||||
/// <summary> | |||||
/// 返回正常工作状态 | |||||
/// 返回:返回正常工作状态 | |||||
/// </summary> | |||||
public class JT808_CarDVR_Down_0xE4 : JT808CarDVRDownBodies | |||||
{ | |||||
public override byte CommandId => JT808CarDVRCommandID.返回正常工作状态.ToByteValue(); | |||||
public override string Description => "返回正常工作状态"; | |||||
public override bool SkipSerialization { get; set; } = true; | |||||
} | |||||
} |
@@ -15,7 +15,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 采集记录仪执行标准版本 | /// 采集记录仪执行标准版本 | ||||
/// 返回:记录仪执行标准的年号及修改单号 | /// 返回:记录仪执行标准的年号及修改单号 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x00 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0x00 : JT808CarDVRUpBodies, IJT808MessagePackFormatter<JT808_CarDVR_Up_0x00>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集记录仪执行标准版本.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集记录仪执行标准版本.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
@@ -35,20 +35,18 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Up_0x00 value, IJT808Config config) | |||||
{ | |||||
writer.WriteBCD(value.StandardYear, 2); | |||||
writer.WriteByte(value.ModifyNumber); | |||||
} | |||||
public JT808_CarDVR_Up_0x00 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x00 value = new JT808_CarDVR_Up_0x00(); | JT808_CarDVR_Up_0x00 value = new JT808_CarDVR_Up_0x00(); | ||||
value.StandardYear = reader.ReadBCD(2); | value.StandardYear = reader.ReadBCD(2); | ||||
value.ModifyNumber = reader.ReadByte(); | value.ModifyNumber = reader.ReadByte(); | ||||
return value; | return value; | ||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0x00 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x00; | |||||
writer.WriteBCD(value.StandardYear, 2); | |||||
writer.WriteByte(value.ModifyNumber); | |||||
} | |||||
} | } | ||||
} | } |
@@ -15,7 +15,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 机动车驾驶证号码 | /// 机动车驾驶证号码 | ||||
/// 返回:当前驾驶人的机动车驾驶证号码 | /// 返回:当前驾驶人的机动车驾驶证号码 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x01 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0x01 : JT808CarDVRUpBodies, IJT808MessagePackFormatter<JT808_CarDVR_Up_0x01>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集当前驾驶人信息.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集当前驾驶人信息.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
@@ -30,17 +30,18 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Up_0x01 value, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x01 value = new JT808_CarDVR_Up_0x01(); | |||||
value.DriverLicenseNo = reader.ReadASCII(18); | |||||
return value; | |||||
var currentPosition = writer.GetCurrentPosition(); | |||||
writer.WriteASCII(value.DriverLicenseNo); | |||||
writer.Skip(18 - (writer.GetCurrentPosition() - currentPosition), out var _); | |||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
public JT808_CarDVR_Up_0x01 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x01 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x01; | |||||
writer.WriteASCII(value.DriverLicenseNo.PadRight(18,'0')); | |||||
JT808_CarDVR_Up_0x01 value = new JT808_CarDVR_Up_0x01(); | |||||
value.DriverLicenseNo = reader.ReadASCII(18); | |||||
return value; | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -15,7 +15,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 采集记录仪实时时间 | /// 采集记录仪实时时间 | ||||
/// 返回:实时时间 | /// 返回:实时时间 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x02 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0x02 : JT808CarDVRUpBodies, IJT808MessagePackFormatter<JT808_CarDVR_Up_0x02>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集记录仪实时时间.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集记录仪实时时间.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
@@ -29,17 +29,16 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Up_0x02 value, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x02 value = new JT808_CarDVR_Up_0x02(); | |||||
value.RealTime = reader.ReadDateTime6(); | |||||
return value; | |||||
writer.WriteDateTime6(value.RealTime); | |||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
public JT808_CarDVR_Up_0x02 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x02 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x02; | |||||
writer.WriteDateTime6(value.RealTime); | |||||
JT808_CarDVR_Up_0x02 value = new JT808_CarDVR_Up_0x02(); | |||||
value.RealTime = reader.ReadDateTime6(); | |||||
return value; | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -15,7 +15,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 采集累计行驶里程 | /// 采集累计行驶里程 | ||||
/// 返回:实时时间、安装时的初始里程及安装后的累计行驶里程 | /// 返回:实时时间、安装时的初始里程及安装后的累计行驶里程 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x03 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0x03 : JT808CarDVRUpBodies, IJT808MessagePackFormatter<JT808_CarDVR_Up_0x03>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集累计行驶里程.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集累计行驶里程.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
@@ -41,7 +41,15 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Up_0x03 value, IJT808Config config) | |||||
{ | |||||
writer.WriteDateTime6(value.RealTime); | |||||
writer.WriteDateTime6(value.FirstInstallTime); | |||||
writer.WriteBCD(value.FirstMileage, 8); | |||||
writer.WriteBCD(value.TotalMilage, 8); | |||||
} | |||||
public JT808_CarDVR_Up_0x03 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x03 value = new JT808_CarDVR_Up_0x03(); | JT808_CarDVR_Up_0x03 value = new JT808_CarDVR_Up_0x03(); | ||||
value.RealTime = reader.ReadDateTime6(); | value.RealTime = reader.ReadDateTime6(); | ||||
@@ -50,14 +58,5 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
value.TotalMilage = reader.ReadBCD(8); | value.TotalMilage = reader.ReadBCD(8); | ||||
return value; | return value; | ||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0x03 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x03; | |||||
writer.WriteDateTime6(value.RealTime); | |||||
writer.WriteDateTime6(value.FirstInstallTime); | |||||
writer.WriteBCD(value.FirstMileage, 8); | |||||
writer.WriteBCD(value.TotalMilage, 8); | |||||
} | |||||
} | } | ||||
} | } |
@@ -15,7 +15,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 采集记录仪脉冲系数 | /// 采集记录仪脉冲系数 | ||||
/// 返回:实时时间及设定的脉冲系数 | /// 返回:实时时间及设定的脉冲系数 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x04 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0x04 : JT808CarDVRUpBodies, IJT808MessagePackFormatter<JT808_CarDVR_Up_0x04>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集记录仪脉冲系数.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集记录仪脉冲系数.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
@@ -25,11 +25,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// <summary> | /// <summary> | ||||
/// 脉冲系数高字节 | /// 脉冲系数高字节 | ||||
/// </summary> | /// </summary> | ||||
public byte PulseCoefficientHighByte { get; set; } | |||||
/// <summary> | |||||
/// 仪脉冲系数低字节 | |||||
/// </summary> | |||||
public byte PulseCoefficientLowByte { get; set; } | |||||
public ushort PulseCoefficient { get; set; } | |||||
public override string Description => "实时时间及设定的脉冲系数"; | public override string Description => "实时时间及设定的脉冲系数"; | ||||
@@ -38,21 +34,18 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Up_0x04 value, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x04 value = new JT808_CarDVR_Up_0x04(); | |||||
value.RealTime= reader.ReadDateTime6(); | |||||
value.PulseCoefficientHighByte = reader.ReadByte(); | |||||
value.PulseCoefficientLowByte = reader.ReadByte(); | |||||
return value; | |||||
writer.WriteDateTime6(value.RealTime); | |||||
writer.WriteUInt16(value.PulseCoefficient); | |||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
public JT808_CarDVR_Up_0x04 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x04 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x04; | |||||
writer.WriteDateTime6(value.RealTime); | |||||
writer.WriteByte(value.PulseCoefficientHighByte); | |||||
writer.WriteByte(value.PulseCoefficientLowByte); | |||||
JT808_CarDVR_Up_0x04 value = new JT808_CarDVR_Up_0x04(); | |||||
value.RealTime = reader.ReadDateTime6(); | |||||
value.PulseCoefficient = reader.ReadUInt16(); | |||||
return value; | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -15,7 +15,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 采集车辆信息 | /// 采集车辆信息 | ||||
/// 返回:车辆识别代号、机动车号牌号码和机动车号牌分类 | /// 返回:车辆识别代号、机动车号牌号码和机动车号牌分类 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x05 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0x05 : JT808CarDVRUpBodies, IJT808MessagePackFormatter<JT808_CarDVR_Up_0x05>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集车辆信息.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集车辆信息.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
@@ -39,25 +39,26 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Up_0x05 value, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x05 value = new JT808_CarDVR_Up_0x05(); | |||||
value.Vin= reader.ReadASCII(17); | |||||
value.VehicleNo = reader.ReadASCII(9); | |||||
reader.Skip(3); | |||||
value.VehicleType = reader.ReadString(6); | |||||
reader.Skip(4); | |||||
return value; | |||||
var currentPosition = writer.GetCurrentPosition(); | |||||
writer.WriteASCII(value.Vin); | |||||
writer.Skip(17 - (writer.GetCurrentPosition()- currentPosition), out var _); | |||||
currentPosition = writer.GetCurrentPosition(); | |||||
writer.WriteString(value.VehicleNo); | |||||
writer.Skip(12 - (writer.GetCurrentPosition() - currentPosition), out var _); | |||||
currentPosition = writer.GetCurrentPosition(); | |||||
writer.WriteString(value.VehicleType); | |||||
writer.Skip(10 - (writer.GetCurrentPosition() - currentPosition), out var _); | |||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
public JT808_CarDVR_Up_0x05 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x05 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x05; | |||||
writer.WriteASCII(value.Vin.PadRight(17,'0')); | |||||
writer.WriteASCII(value.VehicleNo); | |||||
writer.Skip(12 - value.VehicleNo.Length, out var vehicleNo); | |||||
writer.WriteString(value.VehicleType); | |||||
writer.Skip(10 - value.VehicleType.Length, out var vehicleType); | |||||
JT808_CarDVR_Up_0x05 value = new JT808_CarDVR_Up_0x05(); | |||||
value.Vin = reader.ReadASCII(17); | |||||
value.VehicleNo = reader.ReadString(12); | |||||
value.VehicleType = reader.ReadString(10); | |||||
return value; | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -15,7 +15,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 采集记录仪状态信号配置信息 | /// 采集记录仪状态信号配置信息 | ||||
/// 返回:状态信号配置信息 | /// 返回:状态信号配置信息 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x06 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0x06 : JT808CarDVRUpBodies, IJT808MessagePackFormatter<JT808_CarDVR_Up_0x06>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集记录仪状态信号配置信息.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集记录仪状态信号配置信息.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
@@ -68,35 +68,50 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Up_0x06 value, IJT808Config config) | |||||
{ | |||||
writer.WriteDateTime6(value.RealTime); | |||||
writer.WriteByte(value.SignalOperate); | |||||
var currentPosition = writer.GetCurrentPosition(); | |||||
writer.WriteString(value.D0); | |||||
writer.Skip(10 - (writer.GetCurrentPosition() - currentPosition), out var _); | |||||
currentPosition = writer.GetCurrentPosition(); | |||||
writer.WriteString(value.D1); | |||||
writer.Skip(10 - (writer.GetCurrentPosition() - currentPosition), out var _); | |||||
currentPosition = writer.GetCurrentPosition(); | |||||
writer.WriteString(value.D2); | |||||
writer.Skip(10 - (writer.GetCurrentPosition() - currentPosition), out var _); | |||||
currentPosition = writer.GetCurrentPosition(); | |||||
writer.WriteString(value.NearLight); | |||||
writer.Skip(10 - (writer.GetCurrentPosition() - currentPosition), out var _); | |||||
currentPosition = writer.GetCurrentPosition(); | |||||
writer.WriteString(value.FarLight); | |||||
writer.Skip(10 - (writer.GetCurrentPosition() - currentPosition), out var _); | |||||
currentPosition = writer.GetCurrentPosition(); | |||||
writer.WriteString(value.RightTurn); | |||||
writer.Skip(10 - (writer.GetCurrentPosition() - currentPosition), out var _); | |||||
currentPosition = writer.GetCurrentPosition(); | |||||
writer.WriteString(value.LeftTurn); | |||||
writer.Skip(10 - (writer.GetCurrentPosition() - currentPosition), out var _); | |||||
currentPosition = writer.GetCurrentPosition(); | |||||
writer.WriteString(value.Brake); | |||||
writer.Skip(10 - (writer.GetCurrentPosition() - currentPosition), out var _); | |||||
} | |||||
public JT808_CarDVR_Up_0x06 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x06 value = new JT808_CarDVR_Up_0x06(); | JT808_CarDVR_Up_0x06 value = new JT808_CarDVR_Up_0x06(); | ||||
value.RealTime = reader.ReadDateTime6(); | value.RealTime = reader.ReadDateTime6(); | ||||
value.SignalOperate = reader.ReadByte(); | value.SignalOperate = reader.ReadByte(); | ||||
value.D0 = reader.ReadASCII(10); | |||||
value.D1 = reader.ReadASCII(10); | |||||
value.D2 = reader.ReadASCII(10); | |||||
value.NearLight = reader.ReadASCII(10); | |||||
value.FarLight = reader.ReadASCII(10); | |||||
value.RightTurn = reader.ReadASCII(10); | |||||
value.LeftTurn = reader.ReadASCII(10); | |||||
value.Brake = reader.ReadASCII(10); | |||||
value.D0 = reader.ReadString(10); | |||||
value.D1 = reader.ReadString(10); | |||||
value.D2 = reader.ReadString(10); | |||||
value.NearLight = reader.ReadString(10); | |||||
value.FarLight = reader.ReadString(10); | |||||
value.RightTurn = reader.ReadString(10); | |||||
value.LeftTurn = reader.ReadString(10); | |||||
value.Brake = reader.ReadString(10); | |||||
return value; | return value; | ||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0x06 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x06; | |||||
writer.WriteDateTime6(value.RealTime); | |||||
writer.WriteByte(value.SignalOperate); | |||||
writer.WriteASCII(value.D0.PadRight(0)); | |||||
writer.WriteASCII(value.D1.PadRight(0)); | |||||
writer.WriteASCII(value.D2.PadRight(0)); | |||||
writer.WriteASCII(value.NearLight.PadRight(0)); | |||||
writer.WriteASCII(value.FarLight.PadRight(0)); | |||||
writer.WriteASCII(value.RightTurn.PadRight(0)); | |||||
writer.WriteASCII(value.LeftTurn.PadRight(0)); | |||||
writer.WriteASCII(value.Brake.PadRight(0)); | |||||
} | |||||
} | } | ||||
} | } |
@@ -15,7 +15,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 采集记录仪唯一性编号 | /// 采集记录仪唯一性编号 | ||||
/// 返回:唯一性编号及初次安装日期 | /// 返回:唯一性编号及初次安装日期 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x07 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0x07 : JT808CarDVRUpBodies, IJT808MessagePackFormatter<JT808_CarDVR_Up_0x07>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集记录仪唯一性编号.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集记录仪唯一性编号.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
@@ -45,25 +45,32 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Up_0x07 value, IJT808Config config) | |||||
{ | |||||
var currentPosition = writer.GetCurrentPosition(); | |||||
writer.WriteASCII(value.ProductionPlantCCCCertificationCode); | |||||
writer.Skip(7 - (writer.GetCurrentPosition()- currentPosition), out var _); | |||||
currentPosition = writer.GetCurrentPosition(); | |||||
writer.WriteASCII(value.CertifiedProductModels); | |||||
writer.Skip(16 - (writer.GetCurrentPosition()- currentPosition), out var _); | |||||
writer.WriteDateTime3(value.ProductionDate); | |||||
currentPosition = writer.GetCurrentPosition(); | |||||
writer.WriteString(value.ProductProductionFlowNumber); | |||||
writer.Skip(4 - (writer.GetCurrentPosition() - currentPosition), out var _); | |||||
currentPosition = writer.GetCurrentPosition(); | |||||
writer.WriteString(value.Reversed); | |||||
writer.Skip(5 - (writer.GetCurrentPosition() - currentPosition), out var _); | |||||
} | |||||
public JT808_CarDVR_Up_0x07 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x07 value = new JT808_CarDVR_Up_0x07(); | JT808_CarDVR_Up_0x07 value = new JT808_CarDVR_Up_0x07(); | ||||
value.ProductionPlantCCCCertificationCode = reader.ReadASCII(7); | value.ProductionPlantCCCCertificationCode = reader.ReadASCII(7); | ||||
value.CertifiedProductModels = reader.ReadASCII(16); | value.CertifiedProductModels = reader.ReadASCII(16); | ||||
value.ProductionDate = reader.ReadDateTime3(); | value.ProductionDate = reader.ReadDateTime3(); | ||||
value.ProductProductionFlowNumber = reader.ReadASCII(4); | |||||
value.Reversed = reader.ReadASCII(5); | |||||
value.ProductProductionFlowNumber = reader.ReadString(4); | |||||
value.Reversed = reader.ReadString(5); | |||||
return value; | return value; | ||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0x07 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x07; | |||||
writer.WriteASCII(value.ProductionPlantCCCCertificationCode.PadRight(7,'0')); | |||||
writer.WriteASCII(value.CertifiedProductModels.PadRight(16, '0')); | |||||
writer.WriteDateTime3(value.ProductionDate); | |||||
writer.WriteASCII(value.ProductProductionFlowNumber.PadRight(4,'0')); | |||||
writer.WriteASCII(value.Reversed.PadRight(5, '0')); | |||||
} | |||||
} | } | ||||
} | } |
@@ -16,7 +16,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 返回:符合条件的行驶速度记录 | /// 返回:符合条件的行驶速度记录 | ||||
/// 如在指定的时间范围内无数据记录,则本数据块数据为空 | /// 如在指定的时间范围内无数据记录,则本数据块数据为空 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x08 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0x08 : JT808CarDVRUpBodies, IJT808MessagePackFormatter<JT808_CarDVR_Up_0x08>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集指定的行驶速度记录.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集指定的行驶速度记录.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
@@ -30,10 +30,31 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Up_0x08 value, IJT808Config config) | |||||
{ | |||||
foreach (var speedPerMinute in value.JT808_CarDVR_Up_0x08_SpeedPerMinutes) | |||||
{ | |||||
writer.WriteDateTime6(speedPerMinute.StartTime); | |||||
for (int i = 0; i < 60; i++) | |||||
{ | |||||
if (i < speedPerMinute.JT808_CarDVR_Up_0x08_SpeedPerSeconds.Count) | |||||
{ | |||||
writer.WriteByte(speedPerMinute.JT808_CarDVR_Up_0x08_SpeedPerSeconds[i].AvgSpeedAfterStartTime); | |||||
writer.WriteByte(speedPerMinute.JT808_CarDVR_Up_0x08_SpeedPerSeconds[i].StatusSignalAfterStartTime); | |||||
} | |||||
else { | |||||
writer.WriteByte(0xFF); | |||||
writer.WriteByte(0xFF); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
public JT808_CarDVR_Up_0x08 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x08 value = new JT808_CarDVR_Up_0x08(); | JT808_CarDVR_Up_0x08 value = new JT808_CarDVR_Up_0x08(); | ||||
var count = (reader.ReadCurrentRemainContentLength() - 1 - 1)/126;//记录块个数, -1 去掉808校验位,-1去掉808尾部标志 | |||||
value.JT808_CarDVR_Up_0x08_SpeedPerMinutes = new List<JT808_CarDVR_Up_0x08_SpeedPerMinute>(); | |||||
var count = (reader.ReadCurrentRemainContentLength() - 1) / 126;//记录块个数, -1 去掉校验位 | |||||
for (int i = 0; i < count; i++) | for (int i = 0; i < count; i++) | ||||
{ | { | ||||
JT808_CarDVR_Up_0x08_SpeedPerMinute jT808_CarDVR_Up_0X08_SpeedPerMinute = new JT808_CarDVR_Up_0x08_SpeedPerMinute() | JT808_CarDVR_Up_0x08_SpeedPerMinute jT808_CarDVR_Up_0X08_SpeedPerMinute = new JT808_CarDVR_Up_0x08_SpeedPerMinute() | ||||
@@ -49,53 +70,40 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
StatusSignalAfterStartTime = reader.ReadByte() | StatusSignalAfterStartTime = reader.ReadByte() | ||||
}); | }); | ||||
} | } | ||||
value.JT808_CarDVR_Up_0x08_SpeedPerMinutes.Add(jT808_CarDVR_Up_0X08_SpeedPerMinute); | |||||
} | } | ||||
return value; | return value; | ||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0x08 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x08; | |||||
foreach (var speedPerMinute in value.JT808_CarDVR_Up_0x08_SpeedPerMinutes) | |||||
{ | |||||
writer.WriteDateTime6(speedPerMinute.StartTime); | |||||
foreach (var speedPerSecond in speedPerMinute.JT808_CarDVR_Up_0x08_SpeedPerSeconds) | |||||
{ | |||||
writer.WriteByte(speedPerSecond.AvgSpeedAfterStartTime); | |||||
writer.WriteByte(speedPerSecond.StatusSignalAfterStartTime); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 单位分钟行驶速度记录数据块格式 | |||||
/// 1.本数据块总长度为 126 个字节,不足部分以 FFH补齐; | |||||
/// 2.如单位分钟内无数据记录,则本数据块无效,数据长度为0,数据为空 | |||||
/// </summary> | |||||
public class JT808_CarDVR_Up_0x08_SpeedPerMinute | |||||
{ | |||||
/// <summary> | /// <summary> | ||||
/// 单位分钟行驶速度记录数据块格式 | |||||
/// 1.本数据块总长度为 126 个字节,不足部分以 FFH补齐; | |||||
/// 2.如单位分钟内无数据记录,则本数据块无效,数据长度为0,数据为空 | |||||
/// 开始时间 | |||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x08_SpeedPerMinute | |||||
{ | |||||
/// <summary> | |||||
/// 开始时间 | |||||
/// </summary> | |||||
public DateTime StartTime { get; set; } | |||||
/// <summary> | |||||
/// 60s钟,每秒的信息 | |||||
/// </summary> | |||||
public List<JT808_CarDVR_Up_0x08_SpeedPerSecond> JT808_CarDVR_Up_0x08_SpeedPerSeconds { get; set; } | |||||
public DateTime StartTime { get; set; } | |||||
/// <summary> | |||||
/// 60s钟,每秒的信息 | |||||
/// </summary> | |||||
public List<JT808_CarDVR_Up_0x08_SpeedPerSecond> JT808_CarDVR_Up_0x08_SpeedPerSeconds { get; set; } | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 开始时间之后每秒钟的平均速度和状态信号 | |||||
/// </summary> | |||||
public class JT808_CarDVR_Up_0x08_SpeedPerSecond | |||||
{ | |||||
/// <summary> | /// <summary> | ||||
/// 开始时间之后每秒钟的平均速度和状态信号 | |||||
/// 开始时间之后每秒钟的平均速度 | |||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x08_SpeedPerSecond | |||||
{ | |||||
/// <summary> | |||||
/// 开始时间之后每秒钟的平均速度 | |||||
/// </summary> | |||||
public byte AvgSpeedAfterStartTime { get; set; } | |||||
/// <summary> | |||||
/// 开始时间之后每秒钟的状态信号 | |||||
/// </summary> | |||||
public byte StatusSignalAfterStartTime { get; set; } | |||||
} | |||||
public byte AvgSpeedAfterStartTime { get; set; } | |||||
/// <summary> | |||||
/// 开始时间之后每秒钟的状态信号 | |||||
/// </summary> | |||||
public byte StatusSignalAfterStartTime { get; set; } | |||||
} | } | ||||
} | } |
@@ -16,7 +16,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 返回:符合条件的位置信息记录 | /// 返回:符合条件的位置信息记录 | ||||
/// 指定的时间范围内无数据记录,则本数据块数据为空 | /// 指定的时间范围内无数据记录,则本数据块数据为空 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x09 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0x09 : JT808CarDVRUpBodies, IJT808MessagePackFormatter<JT808_CarDVR_Up_0x09>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集指定的位置信息记录.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集指定的位置信息记录.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
@@ -29,11 +29,35 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
{ | { | ||||
} | } | ||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Up_0x09 value, IJT808Config config) | |||||
{ | |||||
foreach (var positionPerHour in value.JT808_CarDVR_Up_0x09_PositionPerHours) | |||||
{ | |||||
writer.WriteDateTime6(positionPerHour.StartTime); | |||||
for (int i = 0; i < 60; i++) | |||||
{ | |||||
if (i < positionPerHour.JT808_CarDVR_Up_0x09_PositionPerMinutes.Count) | |||||
{ | |||||
writer.WriteInt32(positionPerHour.JT808_CarDVR_Up_0x09_PositionPerMinutes[i].GpsLng); | |||||
writer.WriteInt32(positionPerHour.JT808_CarDVR_Up_0x09_PositionPerMinutes[i].GpsLat); | |||||
writer.WriteInt16(positionPerHour.JT808_CarDVR_Up_0x09_PositionPerMinutes[i].Height); | |||||
writer.WriteByte(positionPerHour.JT808_CarDVR_Up_0x09_PositionPerMinutes[i].AvgSpeedAfterStartTime); | |||||
} | |||||
else { | |||||
writer.WriteUInt32(0xFFFFFFFF); | |||||
writer.WriteUInt32(0xFFFFFFFF); | |||||
writer.WriteUInt16(0xFFFF); | |||||
writer.WriteByte(0xFF); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public JT808_CarDVR_Up_0x09 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x09 value = new JT808_CarDVR_Up_0x09(); | JT808_CarDVR_Up_0x09 value = new JT808_CarDVR_Up_0x09(); | ||||
var count = (reader.ReadCurrentRemainContentLength() - 1 - 1) / 666;//记录块个数, -1 去掉808校验位,-1去掉808尾部标志 | |||||
value.JT808_CarDVR_Up_0x09_PositionPerHours = new List<JT808_CarDVR_Up_0x09_PositionPerHour>(); | |||||
var count = (reader.ReadCurrentRemainContentLength() - 1) / 666;//记录块个数, -1 去掉校验位 | |||||
for (int i = 0; i < count; i++) | for (int i = 0; i < count; i++) | ||||
{ | { | ||||
JT808_CarDVR_Up_0x09_PositionPerHour jT808_CarDVR_Up_0x09_PositionPerHour = new JT808_CarDVR_Up_0x09_PositionPerHour() | JT808_CarDVR_Up_0x09_PositionPerHour jT808_CarDVR_Up_0x09_PositionPerHour = new JT808_CarDVR_Up_0x09_PositionPerHour() | ||||
@@ -51,63 +75,48 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
AvgSpeedAfterStartTime = reader.ReadByte() | AvgSpeedAfterStartTime = reader.ReadByte() | ||||
}); | }); | ||||
} | } | ||||
value.JT808_CarDVR_Up_0x09_PositionPerHours.Add(jT808_CarDVR_Up_0x09_PositionPerHour); | |||||
} | } | ||||
return value; | return value; | ||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0x09 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x09; | |||||
foreach (var positionPerHour in value.JT808_CarDVR_Up_0x09_PositionPerHours) | |||||
{ | |||||
writer.WriteDateTime6(positionPerHour.StartTime); | |||||
foreach (var positionPerMinute in positionPerHour.JT808_CarDVR_Up_0x09_PositionPerMinutes) | |||||
{ | |||||
writer.WriteInt32(positionPerMinute.GpsLng); | |||||
writer.WriteInt32(positionPerMinute.GpsLat); | |||||
writer.WriteInt16(positionPerMinute.Height); | |||||
writer.WriteByte(positionPerMinute.AvgSpeedAfterStartTime); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 指定的结束时间之前最近的每 小时的位置信息记录 | |||||
/// 1.本数据块总长度为 666 个字节,不足部分以 FFH补齐; | |||||
/// 2.如单位分钟内无数据记录,则本数据块无效,数据长度为0,数据为空 | |||||
/// </summary> | |||||
public class JT808_CarDVR_Up_0x09_PositionPerHour | |||||
{ | |||||
/// <summary> | /// <summary> | ||||
/// 指定的结束时间之前最近的每 小时的位置信息记录 | |||||
/// 1.本数据块总长度为 666 个字节,不足部分以 FFH补齐; | |||||
/// 2.如单位分钟内无数据记录,则本数据块无效,数据长度为0,数据为空 | |||||
/// 开始时间 | |||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x09_PositionPerHour | |||||
{ | |||||
/// <summary> | |||||
/// 开始时间 | |||||
/// </summary> | |||||
public DateTime StartTime { get; set; } | |||||
/// <summary> | |||||
/// 60s钟,每秒的信息 | |||||
/// </summary> | |||||
public List<JT808_CarDVR_Up_0x09_PositionPerMinute> JT808_CarDVR_Up_0x09_PositionPerMinutes { get; set; } | |||||
public DateTime StartTime { get; set; } | |||||
/// <summary> | |||||
/// 60s钟,每秒的信息 | |||||
/// </summary> | |||||
public List<JT808_CarDVR_Up_0x09_PositionPerMinute> JT808_CarDVR_Up_0x09_PositionPerMinutes { get; set; } | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 开始时间之后每分钟的平均速度和位置信息 | |||||
/// </summary> | |||||
public class JT808_CarDVR_Up_0x09_PositionPerMinute | |||||
{ | |||||
/// <summary> | /// <summary> | ||||
/// 开始时间之后每分钟的平均速度和位置信息 | |||||
/// 经度 | |||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x09_PositionPerMinute | |||||
{ | |||||
/// <summary> | |||||
/// 经度 | |||||
/// </summary> | |||||
public int GpsLng { get; set; } | |||||
/// <summary> | |||||
/// 纬度 | |||||
/// </summary> | |||||
public int GpsLat { get; set; } | |||||
/// <summary> | |||||
/// 高度 | |||||
/// </summary> | |||||
public short Height { get; set; } | |||||
/// <summary> | |||||
/// 开始时间之后每分钟的平均速度 | |||||
/// </summary> | |||||
public byte AvgSpeedAfterStartTime { get; set; } | |||||
} | |||||
public int GpsLng { get; set; } | |||||
/// <summary> | |||||
/// 纬度 | |||||
/// </summary> | |||||
public int GpsLat { get; set; } | |||||
/// <summary> | |||||
/// 高度 | |||||
/// </summary> | |||||
public short Height { get; set; } | |||||
/// <summary> | |||||
/// 开始时间之后每分钟的平均速度 | |||||
/// </summary> | |||||
public byte AvgSpeedAfterStartTime { get; set; } | |||||
} | } | ||||
} | } |
@@ -17,7 +17,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 返回:符合条件的事故疑点记录 | /// 返回:符合条件的事故疑点记录 | ||||
/// 指定的时间范围内无数据记录,则本数据块数据为空 | /// 指定的时间范围内无数据记录,则本数据块数据为空 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x10 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0x10 : JT808CarDVRUpBodies, IJT808MessagePackFormatter<JT808_CarDVR_Up_0x10>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集指定的事故疑点记录.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集指定的事故疑点记录.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
@@ -31,10 +31,38 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Up_0x10 value, IJT808Config config) | |||||
{ | |||||
foreach (var accidentSuspectin in value.JT808_CarDVR_Up_0x10_AccidentSuspectins) | |||||
{ | |||||
writer.WriteDateTime6(accidentSuspectin.EndTime); | |||||
var currentPosition = writer.GetCurrentPosition(); | |||||
writer.WriteASCII(accidentSuspectin.DriverLicenseNo); | |||||
writer.Skip(18 - (writer.GetCurrentPosition() - currentPosition), out var _); | |||||
for (int i = 0; i < 100; i++) | |||||
{ | |||||
if (i < accidentSuspectin.JT808_CarDVR_Up_0x09_DrivingStatuss.Count) | |||||
{ | |||||
writer.WriteByte(accidentSuspectin.JT808_CarDVR_Up_0x09_DrivingStatuss[i].Speed); | |||||
writer.WriteByte(accidentSuspectin.JT808_CarDVR_Up_0x09_DrivingStatuss[i].StatusSignal); | |||||
} | |||||
else | |||||
{ | |||||
writer.WriteByte(0xFF); | |||||
writer.WriteByte(0xFF); | |||||
} | |||||
} | |||||
writer.WriteInt32(accidentSuspectin.GpsLng); | |||||
writer.WriteInt32(accidentSuspectin.GpsLat); | |||||
writer.WriteInt16(accidentSuspectin.Height); | |||||
} | |||||
} | |||||
public JT808_CarDVR_Up_0x10 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x10 value = new JT808_CarDVR_Up_0x10(); | JT808_CarDVR_Up_0x10 value = new JT808_CarDVR_Up_0x10(); | ||||
var count = (reader.ReadCurrentRemainContentLength() - 1 - 1) / 234;//记录块个数, -1 去掉808校验位,-1去掉808尾部标志 | |||||
value.JT808_CarDVR_Up_0x10_AccidentSuspectins = new List<JT808_CarDVR_Up_0x10_AccidentSuspectin>(); | |||||
var count = (reader.ReadCurrentRemainContentLength() - 1) / 234;//记录块个数, -1 去掉校验位 | |||||
for (int i = 0; i < count; i++) | for (int i = 0; i < count; i++) | ||||
{ | { | ||||
JT808_CarDVR_Up_0x10_AccidentSuspectin jT808_CarDVR_Up_0x10_AccidentSuspectin = new JT808_CarDVR_Up_0x10_AccidentSuspectin(); | JT808_CarDVR_Up_0x10_AccidentSuspectin jT808_CarDVR_Up_0x10_AccidentSuspectin = new JT808_CarDVR_Up_0x10_AccidentSuspectin(); | ||||
@@ -52,73 +80,56 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
jT808_CarDVR_Up_0x10_AccidentSuspectin.GpsLng = reader.ReadInt32(); | jT808_CarDVR_Up_0x10_AccidentSuspectin.GpsLng = reader.ReadInt32(); | ||||
jT808_CarDVR_Up_0x10_AccidentSuspectin.GpsLat = reader.ReadInt32(); | jT808_CarDVR_Up_0x10_AccidentSuspectin.GpsLat = reader.ReadInt32(); | ||||
jT808_CarDVR_Up_0x10_AccidentSuspectin.Height = reader.ReadInt16(); | jT808_CarDVR_Up_0x10_AccidentSuspectin.Height = reader.ReadInt16(); | ||||
value.JT808_CarDVR_Up_0x10_AccidentSuspectins.Add(jT808_CarDVR_Up_0x10_AccidentSuspectin); | |||||
} | } | ||||
return value; | return value; | ||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0x10 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x10; | |||||
foreach (var accidentSuspectin in value.JT808_CarDVR_Up_0x10_AccidentSuspectins) | |||||
{ | |||||
writer.WriteDateTime6(accidentSuspectin.EndTime); | |||||
writer.WriteASCII(accidentSuspectin.DriverLicenseNo.PadRight(18, '0')); | |||||
foreach (var drivingStatus in accidentSuspectin.JT808_CarDVR_Up_0x09_DrivingStatuss) | |||||
{ | |||||
writer.WriteByte(drivingStatus.Speed); | |||||
writer.WriteByte(drivingStatus.StatusSignal); | |||||
} | |||||
writer.WriteInt32(accidentSuspectin.GpsLng); | |||||
writer.WriteInt32(accidentSuspectin.GpsLat); | |||||
writer.WriteInt16(accidentSuspectin.Height); | |||||
} | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 指定的结束时间之前最近的每条事故疑点记录 | |||||
/// 1.本数据块总长度为 234 个字节; | |||||
/// 2.如单位分钟内无数据记录,则本数据块无效,数据长度为0,数据为空 | |||||
/// </summary> | |||||
public class JT808_CarDVR_Up_0x10_AccidentSuspectin | |||||
{ | |||||
/// <summary> | /// <summary> | ||||
/// 指定的结束时间之前最近的每条事故疑点记录 | |||||
/// 1.本数据块总长度为 234 个字节; | |||||
/// 2.如单位分钟内无数据记录,则本数据块无效,数据长度为0,数据为空 | |||||
/// 行驶结束时间 | |||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x10_AccidentSuspectin | |||||
{ | |||||
/// <summary> | |||||
/// 行驶结束时间 | |||||
/// </summary> | |||||
public DateTime EndTime { get; set; } | |||||
/// <summary> | |||||
/// 机动车驾驶证号码 | |||||
/// </summary> | |||||
public string DriverLicenseNo { get; set; } | |||||
/// <summary> | |||||
/// 每 0.2s 间隔采集 1 次,共 100组 20s 的事故疑点记录,按时间倒序排列 | |||||
/// </summary> | |||||
public List<JT808_CarDVR_Up_0x10_DrivingStatus> JT808_CarDVR_Up_0x09_DrivingStatuss { get; set; } | |||||
/// <summary> | |||||
/// 经度 | |||||
/// </summary> | |||||
public int GpsLng { get; set; } | |||||
/// <summary> | |||||
/// 纬度 | |||||
/// </summary> | |||||
public int GpsLat { get; set; } | |||||
/// <summary> | |||||
/// 高度 | |||||
/// </summary> | |||||
public short Height { get; set; } | |||||
public DateTime EndTime { get; set; } | |||||
/// <summary> | |||||
/// 机动车驾驶证号码 | |||||
/// </summary> | |||||
public string DriverLicenseNo { get; set; } | |||||
/// <summary> | |||||
/// 每 0.2s 间隔采集 1 次,共 100组 20s 的事故疑点记录,按时间倒序排列 | |||||
/// </summary> | |||||
public List<JT808_CarDVR_Up_0x10_DrivingStatus> JT808_CarDVR_Up_0x09_DrivingStatuss { get; set; } | |||||
/// <summary> | |||||
/// 经度 | |||||
/// </summary> | |||||
public int GpsLng { get; set; } | |||||
/// <summary> | |||||
/// 纬度 | |||||
/// </summary> | |||||
public int GpsLat { get; set; } | |||||
/// <summary> | |||||
/// 高度 | |||||
/// </summary> | |||||
public short Height { get; set; } | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 行驶结束时间前的状态 | |||||
/// </summary> | |||||
public class JT808_CarDVR_Up_0x10_DrivingStatus | |||||
{ | |||||
/// <summary> | /// <summary> | ||||
/// 行驶结束时间前的状态 | |||||
/// 速度 | |||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x10_DrivingStatus | |||||
{ | |||||
/// <summary> | |||||
/// 速度 | |||||
/// </summary> | |||||
public byte Speed { get; set; } | |||||
/// <summary> | |||||
/// 状态信号 | |||||
/// </summary> | |||||
public byte StatusSignal { get; set; } | |||||
} | |||||
public byte Speed { get; set; } | |||||
/// <summary> | |||||
/// 状态信号 | |||||
/// </summary> | |||||
public byte StatusSignal { get; set; } | |||||
} | } | ||||
} | } |
@@ -15,7 +15,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 采集指定的超时驾驶记录 | /// 采集指定的超时驾驶记录 | ||||
/// 返回:符合条件的超时驾驶记录 | /// 返回:符合条件的超时驾驶记录 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x11 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0x11 : JT808CarDVRUpBodies, IJT808MessagePackFormatter<JT808_CarDVR_Up_0x11>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集指定的超时驾驶记录.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集指定的超时驾驶记录.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
@@ -29,11 +29,27 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Up_0x11 value, IJT808Config config) | |||||
{ | |||||
foreach (var driveOverTime in value.JT808_CarDVR_Up_0x11_DriveOverTimes) | |||||
{ | |||||
writer.WriteASCII(driveOverTime.DriverLicenseNo.PadRight(18, '0')); | |||||
writer.WriteDateTime6(driveOverTime.ContinueDrivingStartTime); | |||||
writer.WriteDateTime6(driveOverTime.ContinueDrivingEndTime); | |||||
writer.WriteInt32(driveOverTime.GpsStartLng); | |||||
writer.WriteInt32(driveOverTime.GpsStartLat); | |||||
writer.WriteInt16(driveOverTime.StartHeight); | |||||
writer.WriteInt32(driveOverTime.GpsEndLng); | |||||
writer.WriteInt32(driveOverTime.GpsStartLat); | |||||
writer.WriteInt16(driveOverTime.EndHeight); | |||||
} | |||||
} | |||||
public JT808_CarDVR_Up_0x11 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x11 value = new JT808_CarDVR_Up_0x11(); | JT808_CarDVR_Up_0x11 value = new JT808_CarDVR_Up_0x11(); | ||||
value.JT808_CarDVR_Up_0x11_DriveOverTimes = new List<JT808_CarDVR_Up_0x11_DriveOverTime>(); | value.JT808_CarDVR_Up_0x11_DriveOverTimes = new List<JT808_CarDVR_Up_0x11_DriveOverTime>(); | ||||
var count = (reader.ReadCurrentRemainContentLength() - 1 - 1) / 50;//记录块个数, -1 去掉808校验位,-1去掉808尾部标志 | |||||
var count = (reader.ReadCurrentRemainContentLength() - 1) / 50;//记录块个数, -1 去掉校验位 | |||||
for (int i = 0; i < count; i++) | for (int i = 0; i < count; i++) | ||||
{ | { | ||||
JT808_CarDVR_Up_0x11_DriveOverTime jT808_CarDVR_Up_0x11_DriveOverTime = new JT808_CarDVR_Up_0x11_DriveOverTime(); | JT808_CarDVR_Up_0x11_DriveOverTime jT808_CarDVR_Up_0x11_DriveOverTime = new JT808_CarDVR_Up_0x11_DriveOverTime(); | ||||
@@ -50,64 +66,47 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
return value; | return value; | ||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0x11 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x11; | |||||
foreach (var driveOverTime in value.JT808_CarDVR_Up_0x11_DriveOverTimes) | |||||
{ | |||||
writer.WriteASCII(driveOverTime.DriverLicenseNo.PadRight(18, '0')); | |||||
writer.WriteDateTime6(driveOverTime.ContinueDrivingStartTime); | |||||
writer.WriteDateTime6(driveOverTime.ContinueDrivingEndTime); | |||||
writer.WriteInt32(driveOverTime.GpsStartLng); | |||||
writer.WriteInt32(driveOverTime.GpsStartLat); | |||||
writer.WriteInt16(driveOverTime.StartHeight); | |||||
writer.WriteInt32(driveOverTime.GpsEndLng); | |||||
writer.WriteInt32(driveOverTime.GpsStartLat); | |||||
writer.WriteInt16(driveOverTime.EndHeight); | |||||
} | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 单位超时驾驶记录数据块 | |||||
/// </summary> | |||||
public class JT808_CarDVR_Up_0x11_DriveOverTime | |||||
{ | |||||
/// <summary> | /// <summary> | ||||
/// 单位超时驾驶记录数据块 | |||||
/// 机动车驾驶证号码 18位 | |||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x11_DriveOverTime | |||||
{ | |||||
/// <summary> | |||||
/// 机动车驾驶证号码 18位 | |||||
/// </summary> | |||||
public string DriverLicenseNo { get; set; } | |||||
/// <summary> | |||||
/// 连续驾驶开始时间 | |||||
/// </summary> | |||||
public DateTime ContinueDrivingStartTime { get; set; } | |||||
/// <summary> | |||||
/// 连续驾驶结束时间 | |||||
/// </summary> | |||||
public DateTime ContinueDrivingEndTime { get; set; } | |||||
/// <summary> | |||||
/// 经度 | |||||
/// </summary> | |||||
public int GpsStartLng { get; set; } | |||||
/// <summary> | |||||
/// 纬度 | |||||
/// </summary> | |||||
public int GpsStartLat { get; set; } | |||||
/// <summary> | |||||
/// 高度 | |||||
/// </summary> | |||||
public short StartHeight { get; set; } | |||||
/// <summary> | |||||
/// 经度 | |||||
/// </summary> | |||||
public int GpsEndLng { get; set; } | |||||
/// <summary> | |||||
/// 纬度 | |||||
/// </summary> | |||||
public int GpsEndLat { get; set; } | |||||
/// <summary> | |||||
/// 高度 | |||||
/// </summary> | |||||
public short EndHeight { get; set; } | |||||
} | |||||
public string DriverLicenseNo { get; set; } | |||||
/// <summary> | |||||
/// 连续驾驶开始时间 | |||||
/// </summary> | |||||
public DateTime ContinueDrivingStartTime { get; set; } | |||||
/// <summary> | |||||
/// 连续驾驶结束时间 | |||||
/// </summary> | |||||
public DateTime ContinueDrivingEndTime { get; set; } | |||||
/// <summary> | |||||
/// 经度 | |||||
/// </summary> | |||||
public int GpsStartLng { get; set; } | |||||
/// <summary> | |||||
/// 纬度 | |||||
/// </summary> | |||||
public int GpsStartLat { get; set; } | |||||
/// <summary> | |||||
/// 高度 | |||||
/// </summary> | |||||
public short StartHeight { get; set; } | |||||
/// <summary> | |||||
/// 经度 | |||||
/// </summary> | |||||
public int GpsEndLng { get; set; } | |||||
/// <summary> | |||||
/// 纬度 | |||||
/// </summary> | |||||
public int GpsEndLat { get; set; } | |||||
/// <summary> | |||||
/// 高度 | |||||
/// </summary> | |||||
public short EndHeight { get; set; } | |||||
} | } | ||||
} | } |
@@ -15,7 +15,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 采集指定的驾驶人身份记录 | /// 采集指定的驾驶人身份记录 | ||||
/// 返回:符合条件的驾驶人登录退出记录 | /// 返回:符合条件的驾驶人登录退出记录 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x12 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0x12 : JT808CarDVRUpBodies, IJT808MessagePackFormatter<JT808_CarDVR_Up_0x12>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集指定的驾驶人身份记录.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集指定的驾驶人身份记录.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
@@ -29,11 +29,21 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Up_0x12 value, IJT808Config config) | |||||
{ | |||||
foreach (var driveLogin in value.JT808_CarDVR_Up_0x12_DriveLogins) | |||||
{ | |||||
writer.WriteDateTime6(driveLogin.LoginTime); | |||||
writer.WriteASCII(driveLogin.DriverLicenseNo.PadRight(18, '0')); | |||||
writer.WriteByte(driveLogin.LoginType); | |||||
} | |||||
} | |||||
public JT808_CarDVR_Up_0x12 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x12 value = new JT808_CarDVR_Up_0x12(); | JT808_CarDVR_Up_0x12 value = new JT808_CarDVR_Up_0x12(); | ||||
value.JT808_CarDVR_Up_0x12_DriveLogins= new List<JT808_CarDVR_Up_0x12_DriveLogin>(); | |||||
var count = (reader.ReadCurrentRemainContentLength() - 1 - 1) / 25;//记录块个数, -1 去掉808校验位,-1去掉808尾部标志 | |||||
value.JT808_CarDVR_Up_0x12_DriveLogins = new List<JT808_CarDVR_Up_0x12_DriveLogin>(); | |||||
var count = (reader.ReadCurrentRemainContentLength() - 1) / 25;//记录块个数, -1 去掉校验位 | |||||
for (int i = 0; i < count; i++) | for (int i = 0; i < count; i++) | ||||
{ | { | ||||
JT808_CarDVR_Up_0x12_DriveLogin jT808_CarDVR_Up_0x12_DriveLogin = new JT808_CarDVR_Up_0x12_DriveLogin(); | JT808_CarDVR_Up_0x12_DriveLogin jT808_CarDVR_Up_0x12_DriveLogin = new JT808_CarDVR_Up_0x12_DriveLogin(); | ||||
@@ -44,34 +54,23 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
return value; | return value; | ||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0x12 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x12; | |||||
foreach (var driveLogin in value.JT808_CarDVR_Up_0x12_DriveLogins) | |||||
{ | |||||
writer.WriteDateTime6(driveLogin.LoginTime); | |||||
writer.WriteASCII(driveLogin.DriverLicenseNo.PadRight(18, '0')); | |||||
writer.WriteByte(driveLogin.LoginType); | |||||
} | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 单位驾驶人身份记录数据块格式 | |||||
/// </summary> | |||||
public class JT808_CarDVR_Up_0x12_DriveLogin | |||||
{ | |||||
/// <summary> | /// <summary> | ||||
/// 单位驾驶人身份记录数据块格式 | |||||
/// 登入登出时间发生时间 | |||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x12_DriveLogin | |||||
{ | |||||
/// <summary> | |||||
/// 登入登出时间发生时间 | |||||
/// </summary> | |||||
public DateTime LoginTime { get; set; } | |||||
/// <summary> | |||||
/// 机动车驾驶证号码 18位 | |||||
/// </summary> | |||||
public string DriverLicenseNo { get; set; } | |||||
/// <summary> | |||||
/// 事件类型 | |||||
/// </summary> | |||||
public byte LoginType { get; set; } | |||||
} | |||||
public DateTime LoginTime { get; set; } | |||||
/// <summary> | |||||
/// 机动车驾驶证号码 18位 | |||||
/// </summary> | |||||
public string DriverLicenseNo { get; set; } | |||||
/// <summary> | |||||
/// 事件类型 | |||||
/// </summary> | |||||
public byte LoginType { get; set; } | |||||
} | } | ||||
} | } |
@@ -15,7 +15,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 采集指定的外部供电记录 | /// 采集指定的外部供电记录 | ||||
/// 返回:符合条件的供电记录 | /// 返回:符合条件的供电记录 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x13 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0x13 : JT808CarDVRUpBodies, IJT808MessagePackFormatter<JT808_CarDVR_Up_0x13>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集指定的外部供电记录.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集指定的外部供电记录.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
@@ -28,12 +28,20 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
{ | { | ||||
} | } | ||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Up_0x13 value, IJT808Config config) | |||||
{ | |||||
foreach (var externalPowerSupply in value.JT808_CarDVR_Up_0x13_ExternalPowerSupplys) | |||||
{ | |||||
writer.WriteDateTime6(externalPowerSupply.EventTime); | |||||
writer.WriteByte(externalPowerSupply.EventType); | |||||
} | |||||
} | |||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public JT808_CarDVR_Up_0x13 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x13 value = new JT808_CarDVR_Up_0x13(); | JT808_CarDVR_Up_0x13 value = new JT808_CarDVR_Up_0x13(); | ||||
value.JT808_CarDVR_Up_0x13_ExternalPowerSupplys = new List<JT808_CarDVR_Up_0x13_ExternalPowerSupply>(); | value.JT808_CarDVR_Up_0x13_ExternalPowerSupplys = new List<JT808_CarDVR_Up_0x13_ExternalPowerSupply>(); | ||||
var count = (reader.ReadCurrentRemainContentLength() - 1 - 1) / 7;//记录块个数, -1 去掉808校验位,-1去掉808尾部标志 | |||||
var count = (reader.ReadCurrentRemainContentLength() - 1) / 7;//记录块个数, -1 去掉校验位 | |||||
for (int i = 0; i < count; i++) | for (int i = 0; i < count; i++) | ||||
{ | { | ||||
JT808_CarDVR_Up_0x13_ExternalPowerSupply jT808_CarDVR_Up_0x13_ExternalPowerSupply = new JT808_CarDVR_Up_0x13_ExternalPowerSupply(); | JT808_CarDVR_Up_0x13_ExternalPowerSupply jT808_CarDVR_Up_0x13_ExternalPowerSupply = new JT808_CarDVR_Up_0x13_ExternalPowerSupply(); | ||||
@@ -43,29 +51,19 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
return value; | return value; | ||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0x13 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x13; | |||||
foreach (var externalPowerSupply in value.JT808_CarDVR_Up_0x13_ExternalPowerSupplys) | |||||
{ | |||||
writer.WriteDateTime6(externalPowerSupply.EventTime); | |||||
writer.WriteByte(externalPowerSupply.EventType); | |||||
} | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 单位记录仪外部供电记录数据块格式 | |||||
/// </summary> | |||||
public class JT808_CarDVR_Up_0x13_ExternalPowerSupply | |||||
{ | |||||
/// <summary> | /// <summary> | ||||
/// 单位记录仪外部供电记录数据块格式 | |||||
/// 事件发生时间 | |||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x13_ExternalPowerSupply | |||||
{ | |||||
/// <summary> | |||||
/// 事件发生时间 | |||||
/// </summary> | |||||
public DateTime EventTime { get; set; } | |||||
/// <summary> | |||||
/// 事件类型 | |||||
/// </summary> | |||||
public byte EventType { get; set; } | |||||
} | |||||
public DateTime EventTime { get; set; } | |||||
/// <summary> | |||||
/// 事件类型 | |||||
/// </summary> | |||||
public byte EventType { get; set; } | |||||
} | } | ||||
} | } |
@@ -15,7 +15,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 采集指定的参数修改记录 | /// 采集指定的参数修改记录 | ||||
/// 返回:符合条件的参数修改记录 | /// 返回:符合条件的参数修改记录 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x14 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0x14 : JT808CarDVRUpBodies, IJT808MessagePackFormatter<JT808_CarDVR_Up_0x14>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集指定的参数修改记录.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集指定的参数修改记录.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
@@ -29,11 +29,20 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Up_0x14 value, IJT808Config config) | |||||
{ | |||||
foreach (var parameterModify in value.JT808_CarDVR_Up_0x14_ParameterModifys) | |||||
{ | |||||
writer.WriteDateTime6(parameterModify.EventTime); | |||||
writer.WriteByte(parameterModify.EventType); | |||||
} | |||||
} | |||||
public JT808_CarDVR_Up_0x14 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x14 value = new JT808_CarDVR_Up_0x14(); | JT808_CarDVR_Up_0x14 value = new JT808_CarDVR_Up_0x14(); | ||||
value.JT808_CarDVR_Up_0x14_ParameterModifys = new List<JT808_CarDVR_Up_0x14_ParameterModify>(); | value.JT808_CarDVR_Up_0x14_ParameterModifys = new List<JT808_CarDVR_Up_0x14_ParameterModify>(); | ||||
var count = (reader.ReadCurrentRemainContentLength() - 1 - 1) / 7;//记录块个数, -1 去掉808校验位,-1去掉808尾部标志 | |||||
var count = (reader.ReadCurrentRemainContentLength() - 1) / 7;//记录块个数, -1 去掉校验位 | |||||
for (int i = 0; i < count; i++) | for (int i = 0; i < count; i++) | ||||
{ | { | ||||
JT808_CarDVR_Up_0x14_ParameterModify jT808_CarDVR_Up_0x14_ParameterModify = new JT808_CarDVR_Up_0x14_ParameterModify(); | JT808_CarDVR_Up_0x14_ParameterModify jT808_CarDVR_Up_0x14_ParameterModify = new JT808_CarDVR_Up_0x14_ParameterModify(); | ||||
@@ -43,29 +52,19 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
return value; | return value; | ||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0x14 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x14; | |||||
foreach (var parameterModify in value.JT808_CarDVR_Up_0x14_ParameterModifys) | |||||
{ | |||||
writer.WriteDateTime6(parameterModify.EventTime); | |||||
writer.WriteByte(parameterModify.EventType); | |||||
} | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 单位参数修改记录数据块格式 | |||||
/// </summary> | |||||
public class JT808_CarDVR_Up_0x14_ParameterModify | |||||
{ | |||||
/// <summary> | /// <summary> | ||||
/// 单位记录仪外部供电记录数据块格式 | |||||
/// 事件发生时间 | |||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x14_ParameterModify | |||||
{ | |||||
/// <summary> | |||||
/// 事件发生时间 | |||||
/// </summary> | |||||
public DateTime EventTime { get; set; } | |||||
/// <summary> | |||||
/// 事件类型 | |||||
/// </summary> | |||||
public byte EventType { get; set; } | |||||
} | |||||
public DateTime EventTime { get; set; } | |||||
/// <summary> | |||||
/// 事件类型 | |||||
/// </summary> | |||||
public byte EventType { get; set; } | |||||
} | } | ||||
} | } |
@@ -15,7 +15,7 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 采集指定的速度状态日志 | /// 采集指定的速度状态日志 | ||||
/// 返回:符合条件的速度状态日志 | /// 返回:符合条件的速度状态日志 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x15 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0x15 : JT808CarDVRUpBodies, IJT808MessagePackFormatter<JT808_CarDVR_Up_0x15>, IJT808Analyze | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.采集指定的速度状态日志.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.采集指定的速度状态日志.ToByteValue(); | ||||
/// <summary> | /// <summary> | ||||
@@ -29,11 +29,26 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Up_0x15 value, IJT808Config config) | |||||
{ | |||||
foreach (var speedStatusLog in value.JT808_CarDVR_Up_0x15_SpeedStatusLogs) | |||||
{ | |||||
writer.WriteByte(speedStatusLog.SpeedStatus); | |||||
writer.WriteDateTime6(speedStatusLog.SpeedStatusStartTime); | |||||
writer.WriteDateTime6(speedStatusLog.SpeedStatusEndTime); | |||||
foreach (var speedPerSecond in speedStatusLog.JT808_CarDVR_Up_0x15_SpeedPerSeconds) | |||||
{ | |||||
writer.WriteByte(speedPerSecond.RecordSpeed); | |||||
writer.WriteByte(speedPerSecond.ReferenceSpeed); | |||||
} | |||||
} | |||||
} | |||||
public JT808_CarDVR_Up_0x15 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | { | ||||
JT808_CarDVR_Up_0x15 value = new JT808_CarDVR_Up_0x15(); | JT808_CarDVR_Up_0x15 value = new JT808_CarDVR_Up_0x15(); | ||||
value.JT808_CarDVR_Up_0x15_SpeedStatusLogs = new List<JT808_CarDVR_Up_0x15_SpeedStatusLog>(); | value.JT808_CarDVR_Up_0x15_SpeedStatusLogs = new List<JT808_CarDVR_Up_0x15_SpeedStatusLog>(); | ||||
var count = (reader.ReadCurrentRemainContentLength() - 1 - 1) / 133;//记录块个数, -1 去掉808校验位,-1去掉808尾部标志 | |||||
var count = (reader.ReadCurrentRemainContentLength() - 1) / 133;//记录块个数, -1 去掉校验位 | |||||
for (int i = 0; i < count; i++) | for (int i = 0; i < count; i++) | ||||
{ | { | ||||
JT808_CarDVR_Up_0x15_SpeedStatusLog jT808_CarDVR_Up_0x15_SpeedStatusLog = new JT808_CarDVR_Up_0x15_SpeedStatusLog(); | JT808_CarDVR_Up_0x15_SpeedStatusLog jT808_CarDVR_Up_0x15_SpeedStatusLog = new JT808_CarDVR_Up_0x15_SpeedStatusLog(); | ||||
@@ -52,57 +67,41 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
} | } | ||||
return value; | return value; | ||||
} | } | ||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0x15 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x15; | |||||
foreach (var speedStatusLog in value.JT808_CarDVR_Up_0x15_SpeedStatusLogs) | |||||
{ | |||||
writer.WriteByte(speedStatusLog.SpeedStatus); | |||||
writer.WriteDateTime6(speedStatusLog.SpeedStatusStartTime); | |||||
writer.WriteDateTime6(speedStatusLog.SpeedStatusEndTime); | |||||
foreach (var speedPerSecond in speedStatusLog.JT808_CarDVR_Up_0x15_SpeedPerSeconds) | |||||
{ | |||||
writer.WriteByte(speedPerSecond.RecordSpeed); | |||||
writer.WriteByte(speedPerSecond.ReferenceSpeed); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 单位速度状态日志数据块格式 | |||||
/// </summary> | |||||
public class JT808_CarDVR_Up_0x15_SpeedStatusLog | |||||
{ | |||||
/// <summary> | /// <summary> | ||||
/// 单位速度状态日志数据块格式 | |||||
/// 记录仪的速度状态 | |||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x15_SpeedStatusLog | |||||
{ | |||||
/// <summary> | |||||
/// 记录仪的速度状态 | |||||
/// </summary> | |||||
public byte SpeedStatus { get; set; } | |||||
/// <summary> | |||||
/// 速度状态判定的开始时间 | |||||
/// </summary> | |||||
public DateTime SpeedStatusStartTime { get; set; } | |||||
/// <summary> | |||||
/// 速度状态判定的结束时间 | |||||
/// </summary> | |||||
public DateTime SpeedStatusEndTime { get; set; } | |||||
/// <summary> | |||||
/// 60组 | |||||
/// </summary> | |||||
public List<JT808_CarDVR_Up_0x15_SpeedPerSecond> JT808_CarDVR_Up_0x15_SpeedPerSeconds { get; set; } | |||||
} | |||||
public byte SpeedStatus { get; set; } | |||||
/// <summary> | /// <summary> | ||||
/// 每秒速度 | |||||
/// 速度状态判定的开始时间 | |||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x15_SpeedPerSecond | |||||
{ | |||||
/// <summary> | |||||
/// 记录速度 | |||||
/// </summary> | |||||
public byte RecordSpeed { get; set; } | |||||
/// <summary> | |||||
/// 参考速度 | |||||
/// </summary> | |||||
public byte ReferenceSpeed { get; set; } | |||||
} | |||||
public DateTime SpeedStatusStartTime { get; set; } | |||||
/// <summary> | |||||
/// 速度状态判定的结束时间 | |||||
/// </summary> | |||||
public DateTime SpeedStatusEndTime { get; set; } | |||||
/// <summary> | |||||
/// 60组 | |||||
/// </summary> | |||||
public List<JT808_CarDVR_Up_0x15_SpeedPerSecond> JT808_CarDVR_Up_0x15_SpeedPerSeconds { get; set; } | |||||
} | |||||
/// <summary> | |||||
/// 每秒速度 | |||||
/// </summary> | |||||
public class JT808_CarDVR_Up_0x15_SpeedPerSecond | |||||
{ | |||||
/// <summary> | |||||
/// 记录速度 | |||||
/// </summary> | |||||
public byte RecordSpeed { get; set; } | |||||
/// <summary> | |||||
/// 参考速度 | |||||
/// </summary> | |||||
public byte ReferenceSpeed { get; set; } | |||||
} | } | ||||
} | } |
@@ -15,29 +15,11 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 设置车辆信息 | /// 设置车辆信息 | ||||
/// 返回:车辆信息 | /// 返回:车辆信息 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x82 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0x82 : JT808CarDVRUpBodies | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.设置车辆信息.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.设置车辆信息.ToByteValue(); | ||||
public override string Description => "车辆信息"; | public override string Description => "车辆信息"; | ||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | |||||
{ | |||||
} | |||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0x82 value = new JT808_CarDVR_Up_0x82(); | |||||
return value; | |||||
} | |||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0x82 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x82; | |||||
} | |||||
public override bool SkipSerialization { get; set; } = true; | |||||
} | } | ||||
} | } |
@@ -15,26 +15,12 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 设置记录仪初次安装日期 | /// 设置记录仪初次安装日期 | ||||
/// 返回:初次安装日期 | /// 返回:初次安装日期 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x83 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0x83 : JT808CarDVRUpBodies | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.设置记录仪初次安装日期.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.设置记录仪初次安装日期.ToByteValue(); | ||||
public override string Description => "初次安装日期"; | public override string Description => "初次安装日期"; | ||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | |||||
{ | |||||
} | |||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0x83 value = new JT808_CarDVR_Up_0x83(); | |||||
return value; | |||||
} | |||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0x83 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x83; | |||||
} | |||||
public override bool SkipSerialization { get; set; } = true; | |||||
} | } | ||||
} | } |
@@ -15,26 +15,11 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 设置状态量配置信息 | /// 设置状态量配置信息 | ||||
/// 返回:状态量配置信息 | /// 返回:状态量配置信息 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0x84 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0x84 : JT808CarDVRUpBodies | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.设置状态量配置信息.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.设置状态量配置信息.ToByteValue(); | ||||
public override string Description => "状态量配置信息"; | public override string Description => "状态量配置信息"; | ||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | |||||
{ | |||||
} | |||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0x84 value = new JT808_CarDVR_Up_0x84(); | |||||
return value; | |||||
} | |||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0x84 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0x84; | |||||
} | |||||
public override bool SkipSerialization { get; set; } = true; | |||||
} | } | ||||
} | } |
@@ -15,27 +15,11 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 设置记录仪时间 | /// 设置记录仪时间 | ||||
/// 返回:北京时间的日期、时钟 | /// 返回:北京时间的日期、时钟 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0xC2 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0xC2 : JT808CarDVRUpBodies | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.设置记录仪时间.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.设置记录仪时间.ToByteValue(); | ||||
public override string Description => "北京时间的日期、时钟"; | public override string Description => "北京时间的日期、时钟"; | ||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | |||||
{ | |||||
} | |||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0xC2 value = new JT808_CarDVR_Up_0xC2(); | |||||
return value; | |||||
} | |||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0xC2 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0xC2; | |||||
} | |||||
public override bool SkipSerialization { get; set; } = true; | |||||
} | } | ||||
} | } |
@@ -15,27 +15,11 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 设置记录仪脉冲系数 | /// 设置记录仪脉冲系数 | ||||
/// 返回:记录仪脉冲系数 | /// 返回:记录仪脉冲系数 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0xC3 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0xC3 : JT808CarDVRUpBodies | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.设置记录仪脉冲系数.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.设置记录仪脉冲系数.ToByteValue(); | ||||
public override string Description => "记录仪脉冲系数"; | public override string Description => "记录仪脉冲系数"; | ||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | |||||
{ | |||||
} | |||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0xC3 value = new JT808_CarDVR_Up_0xC3(); | |||||
return value; | |||||
} | |||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0xC3 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0xC3; | |||||
} | |||||
public override bool SkipSerialization { get; set; } = true; | |||||
} | } | ||||
} | } |
@@ -15,25 +15,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 设置初始里程 | /// 设置初始里程 | ||||
/// 返回:记录仪初次安装时车辆已行驶的总里程 | /// 返回:记录仪初次安装时车辆已行驶的总里程 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0xC4 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0xC4 : JT808CarDVRUpBodies | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.设置初始里程.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.设置初始里程.ToByteValue(); | ||||
public override string Description => "车辆识别代号、机动车号牌号码和机动车号牌分类"; | public override string Description => "车辆识别代号、机动车号牌号码和机动车号牌分类"; | ||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | |||||
{ | |||||
} | |||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0xC4 value = new JT808_CarDVR_Up_0xC4(); | |||||
return value; | |||||
} | |||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0xC4 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0xC4; | |||||
} | |||||
public override bool SkipSerialization { get; set; } = true; | |||||
} | } | ||||
} | } |
@@ -14,27 +14,12 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// <summary> | /// <summary> | ||||
/// 进入或保持检定状态 | /// 进入或保持检定状态 | ||||
/// 返回:进入或保持检定状态 | /// 返回:进入或保持检定状态 | ||||
/// 在检定状态下,检定装置以不大于2秒的时间间隔发送包含本命令字的命令帧,记录仪在6秒内未收到该命令帧,则自动返回正常工作状态。 | |||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0xE0 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0xE0 : JT808CarDVRUpBodies | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.进入或保持检定状态.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.进入或保持检定状态.ToByteValue(); | ||||
public override string Description => "进入或保持检定状态"; | public override string Description => "进入或保持检定状态"; | ||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | |||||
{ | |||||
} | |||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0xE0 value = new JT808_CarDVR_Up_0xE0(); | |||||
return value; | |||||
} | |||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0xE0 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0xE0; | |||||
} | |||||
public override bool SkipSerialization { get; set; } = true; | |||||
} | } | ||||
} | } |
@@ -15,26 +15,11 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 进入里程误差测量 | /// 进入里程误差测量 | ||||
/// 返回:通过 DB9 的 7 脚接收标准速度脉冲测量信号(TTL 电平) | /// 返回:通过 DB9 的 7 脚接收标准速度脉冲测量信号(TTL 电平) | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0xE1 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0xE1 : JT808CarDVRUpBodies | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.进入里程误差测量.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.进入里程误差测量.ToByteValue(); | ||||
public override string Description => "通过 DB9 的 7 脚接收标准速度脉冲测量信号(TTL 电平)"; | public override string Description => "通过 DB9 的 7 脚接收标准速度脉冲测量信号(TTL 电平)"; | ||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | |||||
{ | |||||
} | |||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0xE1 value = new JT808_CarDVR_Up_0xE1(); | |||||
return value; | |||||
} | |||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0xE1 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0xE1; | |||||
} | |||||
public override bool SkipSerialization { get; set; } = true; | |||||
} | } | ||||
} | } |
@@ -15,27 +15,11 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 进入脉冲系数误差测量 | /// 进入脉冲系数误差测量 | ||||
/// 返回:通过 DB9 的 7 脚输出车速传感器信号(TTL 电平) | /// 返回:通过 DB9 的 7 脚输出车速传感器信号(TTL 电平) | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0xE2 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0xE2 : JT808CarDVRUpBodies | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.进入脉冲系数误差测量.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.进入脉冲系数误差测量.ToByteValue(); | ||||
public override string Description => "通过 DB9 的 7 脚输出车速传感器信号(TTL 电平)"; | public override string Description => "通过 DB9 的 7 脚输出车速传感器信号(TTL 电平)"; | ||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | |||||
{ | |||||
} | |||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0xE2 value = new JT808_CarDVR_Up_0xE2(); | |||||
return value; | |||||
} | |||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0xE2 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0xE2; | |||||
} | |||||
public override bool SkipSerialization { get; set; } = true; | |||||
} | } | ||||
} | } |
@@ -15,27 +15,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 进入实时时间误差测量 | /// 进入实时时间误差测量 | ||||
/// 返回:通过 DB9 的 7 脚输出实时时钟的秒脉冲信号(TTL 电平) | /// 返回:通过 DB9 的 7 脚输出实时时钟的秒脉冲信号(TTL 电平) | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0xE3 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0xE3 : JT808CarDVRUpBodies | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.进入实时时间误差测量.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.进入实时时间误差测量.ToByteValue(); | ||||
public override string Description => "通过 DB9 的 7 脚输出实时时钟的秒脉冲信号(TTL 电平)"; | public override string Description => "通过 DB9 的 7 脚输出实时时钟的秒脉冲信号(TTL 电平)"; | ||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | |||||
{ | |||||
} | |||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0xE3 value = new JT808_CarDVR_Up_0xE3(); | |||||
return value; | |||||
} | |||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0xE3 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0xE3; | |||||
} | |||||
} | } | ||||
} | } |
@@ -15,25 +15,10 @@ namespace JT808.Protocol.MessageBody.CarDVR | |||||
/// 返回正常工作状态 | /// 返回正常工作状态 | ||||
/// 返回:返回正常工作状态 | /// 返回:返回正常工作状态 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_CarDVR_Up_0xE4 : JT808CarDVRUpBodies, IJT808Analyze | |||||
public class JT808_CarDVR_Up_0xE4 : JT808CarDVRUpBodies | |||||
{ | { | ||||
public override byte CommandId => JT808CarDVRCommandID.返回正常工作状态.ToByteValue(); | public override byte CommandId => JT808CarDVRCommandID.返回正常工作状态.ToByteValue(); | ||||
public override string Description => "返回正常工作状态"; | public override string Description => "返回正常工作状态"; | ||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | |||||
{ | |||||
} | |||||
public override JT808CarDVRUpBodies Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0xE4 value = new JT808_CarDVR_Up_0xE4(); | |||||
return value; | |||||
} | |||||
public override void Serialize(ref JT808MessagePackWriter writer, JT808CarDVRUpBodies jT808CarDVRUpBodies, IJT808Config config) | |||||
{ | |||||
JT808_CarDVR_Up_0xE4 value = jT808CarDVRUpBodies as JT808_CarDVR_Up_0xE4; | |||||
} | |||||
public override bool SkipSerialization { get; set; } = true; | |||||
} | } | ||||
} | } |
@@ -0,0 +1,52 @@ | |||||
using JT808.Protocol.Extensions; | |||||
using JT808.Protocol.Formatters; | |||||
using JT808.Protocol.Interfaces; | |||||
using JT808.Protocol.MessagePack; | |||||
using System; | |||||
using System.Text.Json; | |||||
namespace JT808.Protocol.MessageBody | |||||
{ | |||||
/// <summary> | |||||
/// 行驶记录数据上传 | |||||
/// 0x0700 | |||||
/// </summary> | |||||
public class JT808_0x0700 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x0700>, IJT808Analyze | |||||
{ | |||||
public override ushort MsgId { get; } = 0x0700; | |||||
public override string Description => "行驶记录数据上传"; | |||||
/// <summary> | |||||
/// 应答流水号 | |||||
/// </summary> | |||||
public ushort ReplyMsgNum { get; set; } | |||||
/// <summary> | |||||
/// 命令字 | |||||
/// </summary> | |||||
public byte CommandId { get; set; } | |||||
public JT808CarDVRUpPackage JT808CarDVRUpPackage { get; set; } | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | |||||
{ | |||||
JT808_0x0700 value = new JT808_0x0700(); | |||||
} | |||||
public JT808_0x0700 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
JT808_0x0700 value = new JT808_0x0700(); | |||||
value.ReplyMsgNum = reader.ReadUInt16(); | |||||
value.CommandId = reader.ReadByte(); | |||||
object obj = config.GetMessagePackFormatterByType(typeof( JT808CarDVRUpPackage)); | |||||
value.JT808CarDVRUpPackage = JT808MessagePackFormatterResolverExtensions.JT808DynamicDeserialize(obj, ref reader, config); | |||||
return value; | |||||
} | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0700 value, IJT808Config config) | |||||
{ | |||||
writer.WriteUInt16(value.ReplyMsgNum); | |||||
writer.WriteByte(value.CommandId); | |||||
object obj = config.GetMessagePackFormatterByType(typeof(JT808CarDVRUpPackage)); | |||||
JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(obj, ref writer,value.JT808CarDVRUpPackage, config); | |||||
} | |||||
} | |||||
} |
@@ -1,4 +1,5 @@ | |||||
using JT808.Protocol.Formatters; | |||||
using JT808.Protocol.Extensions; | |||||
using JT808.Protocol.Formatters; | |||||
using JT808.Protocol.Interfaces; | using JT808.Protocol.Interfaces; | ||||
using JT808.Protocol.MessagePack; | using JT808.Protocol.MessagePack; | ||||
using System; | using System; | ||||
@@ -18,6 +19,8 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public byte CommandId { get; set; } | public byte CommandId { get; set; } | ||||
public JT808CarDVRDownPackage JT808CarDVRDownPackage { get; set; } | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
throw new NotImplementedException(); | throw new NotImplementedException(); | ||||
@@ -25,12 +28,18 @@ namespace JT808.Protocol.MessageBody | |||||
public JT808_0x8700 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8700 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
throw new NotImplementedException(); | |||||
JT808_0x8700 value = new JT808_0x8700(); | |||||
value.CommandId = reader.ReadByte(); | |||||
object obj = config.GetMessagePackFormatterByType(value.JT808CarDVRDownPackage.GetType()); | |||||
value.JT808CarDVRDownPackage = JT808MessagePackFormatterResolverExtensions.JT808DynamicDeserialize(obj, ref reader, config); | |||||
return value; | |||||
} | } | ||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8700 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8700 value, IJT808Config config) | ||||
{ | { | ||||
throw new NotImplementedException(); | |||||
writer.WriteByte(value.CommandId); | |||||
object obj = config.GetMessagePackFormatterByType(value.JT808CarDVRDownPackage.GetType()); | |||||
JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(obj, ref writer, value.JT808CarDVRDownPackage, config); | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -0,0 +1,48 @@ | |||||
using JT808.Protocol.Extensions; | |||||
using JT808.Protocol.Formatters; | |||||
using JT808.Protocol.Interfaces; | |||||
using JT808.Protocol.MessagePack; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json; | |||||
namespace JT808.Protocol.MessageBody | |||||
{ | |||||
/// <summary> | |||||
/// 行驶记录参数下传命令 | |||||
/// </summary> | |||||
public class JT808_0x8701: JT808Bodies, IJT808MessagePackFormatter<JT808_0x8701>, IJT808_2019_Version, IJT808Analyze | |||||
{ | |||||
public override ushort MsgId => 0x8701; | |||||
public override string Description => "行驶记录参数下传命令"; | |||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
public byte CommandId { get; set; } | |||||
public JT808CarDVRDownPackage JT808CarDVRDownPackage { get; set; } | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
public JT808_0x8701 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
JT808_0x8701 value = new JT808_0x8701(); | |||||
value.CommandId = reader.ReadByte(); | |||||
object obj = config.GetMessagePackFormatterByType(value.JT808CarDVRDownPackage.GetType()); | |||||
value.JT808CarDVRDownPackage = JT808MessagePackFormatterResolverExtensions.JT808DynamicDeserialize(obj, ref reader, config); | |||||
return value; | |||||
} | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8701 value, IJT808Config config) | |||||
{ | |||||
writer.WriteByte(value.CommandId); | |||||
object obj = config.GetMessagePackFormatterByType(value.JT808CarDVRDownPackage.GetType()); | |||||
JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(obj, ref writer, value.JT808CarDVRDownPackage, config); | |||||
} | |||||
} | |||||
} |
@@ -420,7 +420,7 @@ namespace JT808.Protocol.MessagePack | |||||
{ | { | ||||
calculateXorCheckCode = (byte)(calculateXorCheckCode ^ item); | calculateXorCheckCode = (byte)(calculateXorCheckCode ^ item); | ||||
} | } | ||||
var realXorCheckCode = Reader.Slice(ReaderCount + 1)[0]; | |||||
var realXorCheckCode = Reader.Slice(ReaderCount)[0]; | |||||
return (calculateXorCheckCode, realXorCheckCode); | return (calculateXorCheckCode, realXorCheckCode); | ||||
} | } | ||||
} | } | ||||