2.修改1078注册 3.增加1078常量 4.增加消息id,扩展消息id说明,增加代码可读性 5.增加代码注释 6.修改单元测试 7.更新808协议库tags/v1.0.1
@@ -34,25 +34,25 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
Speed = 60, | |||
Direction = 0, | |||
StatusFlag = 2, | |||
JT808CustomLocationAttachData = new Dictionary<byte, JT808_0x0200_CustomBodyBase>() | |||
JT808LocationAttachData = new Dictionary<byte, JT808_0x0200_BodyBase>() | |||
}; | |||
jT808UploadLocationRequest.JT808CustomLocationAttachData.Add(0x14, new JT808_0x0200_0x14 | |||
jT808UploadLocationRequest.JT808LocationAttachData.Add(0x14, new JT808_0x0200_0x14 | |||
{ | |||
VideoRelateAlarm = 100 | |||
}); | |||
jT808UploadLocationRequest.JT808CustomLocationAttachData.Add(0x15, new JT808_0x0200_0x15 | |||
jT808UploadLocationRequest.JT808LocationAttachData.Add(0x15, new JT808_0x0200_0x15 | |||
{ | |||
VideoSignalLoseAlarmStatus = 100 | |||
}); | |||
jT808UploadLocationRequest.JT808CustomLocationAttachData.Add(0x16, new JT808_0x0200_0x16 | |||
jT808UploadLocationRequest.JT808LocationAttachData.Add(0x16, new JT808_0x0200_0x16 | |||
{ | |||
VideoSignalOcclusionAlarmStatus = 100 | |||
}); | |||
jT808UploadLocationRequest.JT808CustomLocationAttachData.Add(0x17, new JT808_0x0200_0x17 | |||
jT808UploadLocationRequest.JT808LocationAttachData.Add(0x17, new JT808_0x0200_0x17 | |||
{ | |||
StorageFaultAlarmStatus = 100 | |||
}); | |||
jT808UploadLocationRequest.JT808CustomLocationAttachData.Add(0x18, new JT808_0x0200_0x18 | |||
jT808UploadLocationRequest.JT808LocationAttachData.Add(0x18, new JT808_0x0200_0x18 | |||
{ | |||
AbnormalDrivingBehaviorAlarmInfo = 100 | |||
}); | |||
@@ -65,17 +65,17 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
{ | |||
byte[] bodys = "000000010000000200BA7F0E07E4F11C0028003C00001807151010101404000000641504000000641604000000641702006418020064".ToHexBytes(); | |||
JT808_0x0200 jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>(bodys); | |||
Assert.Equal((uint)1, jT808UploadLocationRequest.AlarmFlag); | |||
Assert.Equal(1u, jT808UploadLocationRequest.AlarmFlag); | |||
Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), jT808UploadLocationRequest.GPSTime); | |||
Assert.Equal(12222222, jT808UploadLocationRequest.Lat); | |||
Assert.Equal(132444444, jT808UploadLocationRequest.Lng); | |||
Assert.Equal(60, jT808UploadLocationRequest.Speed); | |||
Assert.Equal((uint)2, jT808UploadLocationRequest.StatusFlag); | |||
Assert.Equal((uint)100, JT808Serializer.Deserialize<JT808_0x0200_0x14>(jT808UploadLocationRequest.JT808CustomLocationAttachOriginalData[0x14]).VideoRelateAlarm); | |||
Assert.Equal((uint)100, JT808Serializer.Deserialize<JT808_0x0200_0x15>(jT808UploadLocationRequest.JT808CustomLocationAttachOriginalData[0x15]).VideoSignalLoseAlarmStatus); | |||
Assert.Equal((uint)100, JT808Serializer.Deserialize<JT808_0x0200_0x16>(jT808UploadLocationRequest.JT808CustomLocationAttachOriginalData[0x16]).VideoSignalOcclusionAlarmStatus); | |||
Assert.Equal((uint)100, JT808Serializer.Deserialize<JT808_0x0200_0x17>(jT808UploadLocationRequest.JT808CustomLocationAttachOriginalData[0x17]).StorageFaultAlarmStatus); | |||
Assert.Equal((uint)100, JT808Serializer.Deserialize<JT808_0x0200_0x18>(jT808UploadLocationRequest.JT808CustomLocationAttachOriginalData[0x17]).AbnormalDrivingBehaviorAlarmInfo); | |||
Assert.Equal(2u, jT808UploadLocationRequest.StatusFlag); | |||
Assert.Equal(100u, ((JT808_0x0200_0x14)jT808UploadLocationRequest.JT808LocationAttachData[0x14]).VideoRelateAlarm); | |||
Assert.Equal(100u, ((JT808_0x0200_0x15)jT808UploadLocationRequest.JT808LocationAttachData[0x15]).VideoSignalLoseAlarmStatus); | |||
Assert.Equal(100u, ((JT808_0x0200_0x16)jT808UploadLocationRequest.JT808LocationAttachData[0x16]).VideoSignalOcclusionAlarmStatus); | |||
Assert.Equal(100u, ((JT808_0x0200_0x17)jT808UploadLocationRequest.JT808LocationAttachData[0x17]).StorageFaultAlarmStatus); | |||
Assert.Equal(100u, ((JT808_0x0200_0x18)jT808UploadLocationRequest.JT808LocationAttachData[0x18]).AbnormalDrivingBehaviorAlarmInfo); | |||
} | |||
} | |||
} |
@@ -38,7 +38,6 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
TerminalSupportedMaxNumberOfAudioPhysicalChannels = 7, | |||
TerminalSupportedMaxNumberOfVideoPhysicalChannels = 8 | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x1003); | |||
var hex = JT808Serializer.Serialize(jT808_0x1003).ToHexString(); | |||
Assert.Equal("03020504000101060708", hex); | |||
} | |||
@@ -46,9 +45,16 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"EnterAudioEncoding\":3,\"EnterAudioChannelsNumber\":2,\"EnterAudioSampleRate\":5,\"EnterAudioSampleDigits\":4,\"AudioFrameLength\":1,\"IsSupportedAudioOutput\":1,\"VideoEncoding\":6,\"TerminalSupportedMaxNumberOfAudioPhysicalChannels\":7,\"TerminalSupportedMaxNumberOfVideoPhysicalChannels\":8,\"SkipSerialization\":false}"; | |||
JT808_0x1003 jT808_0x1003 = JT808Serializer.Deserialize<JT808_0x1003>("03020504000101060708".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x1003), str); | |||
Assert.Equal(1,jT808_0x1003.AudioFrameLength); | |||
Assert.Equal(2, jT808_0x1003.EnterAudioChannelsNumber); | |||
Assert.Equal(3, jT808_0x1003.EnterAudioEncoding); | |||
Assert.Equal(4, jT808_0x1003.EnterAudioSampleDigits); | |||
Assert.Equal(5, jT808_0x1003.EnterAudioSampleRate); | |||
Assert.Equal(1, jT808_0x1003.IsSupportedAudioOutput); | |||
Assert.Equal(6, jT808_0x1003.VideoEncoding); | |||
Assert.Equal(7, jT808_0x1003.TerminalSupportedMaxNumberOfAudioPhysicalChannels); | |||
Assert.Equal(8, jT808_0x1003.TerminalSupportedMaxNumberOfVideoPhysicalChannels); | |||
} | |||
} | |||
} |
@@ -40,11 +40,10 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
JT808_0x1005 jT808_0x1005 = new JT808_0x1005() | |||
{ | |||
BeginTime=Convert.ToDateTime("2019-07-16 10:20:01"), | |||
EndTime= Convert.ToDateTime("2019-07-16 10:25:02"), | |||
GettingOffNumber=1, | |||
GettingOnNumber=1 | |||
EndTime= Convert.ToDateTime("2019-07-16 10:25:02"), | |||
GettingOffNumber=1, | |||
GettingOnNumber=1 | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x1005); | |||
var hex = JT808Serializer.Serialize(jT808_0x1005).ToHexString(); | |||
Assert.Equal("19071610200119071610250200010001", hex); | |||
} | |||
@@ -52,9 +51,11 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"BeginTime\":\"2019-07-16 10:20:01\",\"EndTime\":\"2019-07-16 10:25:02\",\"GettingOnNumber\":1,\"GettingOffNumber\":1,\"SkipSerialization\":false}"; | |||
var jT808_0x1005 = JT808Serializer.Deserialize<JT808_0x1005>("19071610200119071610250200010001".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x1005), str); | |||
Assert.Equal(Convert.ToDateTime("2019-07-16 10:20:01"),jT808_0x1005.BeginTime); | |||
Assert.Equal(Convert.ToDateTime("2019-07-16 10:25:02"),jT808_0x1005.EndTime); | |||
Assert.Equal(1, jT808_0x1005.GettingOffNumber); | |||
Assert.Equal(1, jT808_0x1005.GettingOnNumber); | |||
} | |||
} | |||
} |
@@ -42,29 +42,28 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
MsgNum = 1, | |||
AVResouceTotal = 2, | |||
AVResouces = new List<JT808_0x1205_AVResouce> { | |||
new JT808_0x1205_AVResouce{ | |||
AlarmFlag=1, | |||
AVResourceType=2, | |||
BeginTime=Convert.ToDateTime("2019-07-16 10:20:01"), | |||
EndTime=Convert.ToDateTime("2019-07-16 10:25:01"), | |||
FileSize=3, | |||
LogicChannelNo=4, | |||
MemoryType=5, | |||
StreamType=6 | |||
}, | |||
new JT808_0x1205_AVResouce{ | |||
AlarmFlag=11, | |||
AVResourceType=21, | |||
BeginTime=Convert.ToDateTime("2019-07-16 11:20:01"), | |||
EndTime=Convert.ToDateTime("2019-07-16 11:25:02"), | |||
FileSize=31, | |||
LogicChannelNo=41, | |||
MemoryType=51, | |||
StreamType=61 | |||
} | |||
} | |||
new JT808_0x1205_AVResouce{ | |||
AlarmFlag=1, | |||
AVResourceType=2, | |||
BeginTime=Convert.ToDateTime("2019-07-16 10:20:01"), | |||
EndTime=Convert.ToDateTime("2019-07-16 10:25:01"), | |||
FileSize=3, | |||
LogicChannelNo=4, | |||
MemoryType=5, | |||
StreamType=6 | |||
}, | |||
new JT808_0x1205_AVResouce{ | |||
AlarmFlag=11, | |||
AVResourceType=21, | |||
BeginTime=Convert.ToDateTime("2019-07-16 11:20:01"), | |||
EndTime=Convert.ToDateTime("2019-07-16 11:25:02"), | |||
FileSize=31, | |||
LogicChannelNo=41, | |||
MemoryType=51, | |||
StreamType=61 | |||
} | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x1205); | |||
var hex = JT808Serializer.Serialize(jT808_0x1205).ToHexString(); | |||
Assert.Equal("000100000002041907161020011907161025010000000102060500000003291907161120011907161125020000000B153D330000001F", hex); | |||
} | |||
@@ -72,9 +71,27 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"MsgNum\":1,\"AVResouceTotal\":2,\"AVResouces\":[{\"LogicChannelNo\":4,\"BeginTime\":\"2019-07-16 10:20:01\",\"EndTime\":\"2019-07-16 10:25:01\",\"AlarmFlag\":1,\"AVResourceType\":2,\"StreamType\":6,\"MemoryType\":5,\"FileSize\":3},{\"LogicChannelNo\":41,\"BeginTime\":\"2019-07-16 11:20:01\",\"EndTime\":\"2019-07-16 11:25:02\",\"AlarmFlag\":11,\"AVResourceType\":21,\"StreamType\":61,\"MemoryType\":51,\"FileSize\":31}],\"SkipSerialization\":false}"; | |||
var jT808_0x1205 = JT808Serializer.Deserialize<JT808_0x1205>("000100000002041907161020011907161025010000000102060500000003291907161120011907161125020000000B153D330000001F".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x1205), str); | |||
var jT808_0x1205 = JT808Serializer.Deserialize<JT808_0x1205>("000100000002041907161020011907161025010000000102060500000003291907161120011907161125020000000B153D330000001F".ToHexBytes()); | |||
Assert.Equal(1, jT808_0x1205.MsgNum); | |||
Assert.Equal(2u, jT808_0x1205.AVResouceTotal); | |||
Assert.Equal(1u, jT808_0x1205.AVResouces[0].AlarmFlag); | |||
Assert.Equal(2, jT808_0x1205.AVResouces[0].AVResourceType); | |||
Assert.Equal(Convert.ToDateTime("2019-07-16 10:20:01"),jT808_0x1205.AVResouces[0].BeginTime); | |||
Assert.Equal(Convert.ToDateTime("2019-07-16 10:25:01"),jT808_0x1205.AVResouces[0].EndTime); | |||
Assert.Equal(3u, jT808_0x1205.AVResouces[0].FileSize); | |||
Assert.Equal(4, jT808_0x1205.AVResouces[0].LogicChannelNo); | |||
Assert.Equal(5, jT808_0x1205.AVResouces[0].MemoryType); | |||
Assert.Equal(6, jT808_0x1205.AVResouces[0].StreamType); | |||
Assert.Equal(11u, jT808_0x1205.AVResouces[1].AlarmFlag); | |||
Assert.Equal(21, jT808_0x1205.AVResouces[1].AVResourceType); | |||
Assert.Equal(Convert.ToDateTime("2019-07-16 11:20:01"),jT808_0x1205.AVResouces[1].BeginTime); | |||
Assert.Equal(Convert.ToDateTime("2019-07-16 11:25:02"),jT808_0x1205.AVResouces[1].EndTime); | |||
Assert.Equal(31u, jT808_0x1205.AVResouces[1].FileSize); | |||
Assert.Equal(41, jT808_0x1205.AVResouces[1].LogicChannelNo); | |||
Assert.Equal(51, jT808_0x1205.AVResouces[1].MemoryType); | |||
Assert.Equal(61, jT808_0x1205.AVResouces[1].StreamType); | |||
} | |||
} | |||
} |
@@ -39,10 +39,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
{ | |||
JT808_0x1206 jT808_0x1206 = new JT808_0x1206() | |||
{ | |||
MsgNum=1, | |||
Result=1 | |||
MsgNum=1, | |||
Result=1 | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x1206); | |||
var hex = JT808Serializer.Serialize(jT808_0x1206).ToHexString(); | |||
Assert.Equal("000101", hex); | |||
} | |||
@@ -50,9 +49,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"MsgNum\":1,\"Result\":1,\"SkipSerialization\":false}"; | |||
var jT808_0x1206 = JT808Serializer.Deserialize<JT808_0x1206>("000101".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x1206), str); | |||
Assert.Equal(1, jT808_0x1206.MsgNum); | |||
Assert.Equal(1, jT808_0x1206.Result); | |||
} | |||
} | |||
} |
@@ -1,4 +1,5 @@ | |||
using JT808.Protocol.Extensions.JT1078.MessageBody; | |||
using JT808.Protocol.Enums; | |||
using JT808.Protocol.Extensions.JT1078.MessageBody; | |||
using JT808.Protocol.Interfaces; | |||
using JT808.Protocol.MessageBody; | |||
using Microsoft.Extensions.DependencyInjection; | |||
@@ -29,81 +30,127 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
{ | |||
Header = new JT808Header | |||
{ | |||
MsgId = Enums.JT808MsgId.设置终端参数.ToUInt16Value(), | |||
MsgId = JT808MsgId.设置终端参数.ToUInt16Value(), | |||
MsgNum = 10, | |||
TerminalPhoneNo = "123456789", | |||
}, | |||
Bodies = new JT808_0x8103 | |||
{ | |||
ParamList = new List<JT808_0x8103_BodyBase>(), | |||
CustomParamList = new List<JT808_0x8103_CustomBodyBase> { | |||
new JT808_0x8103_0x0075() { | |||
AudioOutputEnabled=1, | |||
OSD=2, | |||
RTS_EncodeMode=3, | |||
RTS_KF_Interval=4, | |||
RTS_Resolution=5, | |||
RTS_Target_CodeRate=6, | |||
RTS_Target_FPS=7, | |||
StreamStore_EncodeMode=8, | |||
StreamStore_KF_Interval=9, | |||
StreamStore_Resolution=10, | |||
StreamStore_Target_CodeRate=11, | |||
StreamStore_Target_FPS=12 | |||
ParamList = new List<JT808_0x8103_BodyBase> { | |||
new JT808_0x8103_0x0075 { | |||
AudioOutputEnabled=1, | |||
OSD=2, | |||
RTS_EncodeMode=3, | |||
RTS_KF_Interval=4, | |||
RTS_Resolution=5, | |||
RTS_Target_CodeRate=6, | |||
RTS_Target_FPS=7, | |||
StreamStore_EncodeMode=8, | |||
StreamStore_KF_Interval=9, | |||
StreamStore_Resolution=10, | |||
StreamStore_Target_CodeRate=11, | |||
StreamStore_Target_FPS=12 | |||
}, | |||
new JT808_0x8103_0x0076() { | |||
AudioChannelTotal=1, | |||
AVChannelTotal=2, | |||
VudioChannelTotal=3, | |||
ParamLength=27, | |||
AVChannelRefTables=new List<JT808_0x8103_0x0076_AVChannelRefTable>{ | |||
new JT808_0x8103_0x0076_AVChannelRefTable{ ChannelType=0, IsConnectCloudPlat=1, LogicChannelNo=2, PhysicalChannelNo=3 }, | |||
new JT808_0x8103_0x0076_AVChannelRefTable{ChannelType=4, IsConnectCloudPlat=5, LogicChannelNo=6, PhysicalChannelNo=7 }, | |||
new JT808_0x8103_0x0076_AVChannelRefTable{ChannelType=8, IsConnectCloudPlat=9, LogicChannelNo=10, PhysicalChannelNo=11 }, | |||
new JT808_0x8103_0x0076_AVChannelRefTable{ChannelType=12, IsConnectCloudPlat=13, LogicChannelNo=14, PhysicalChannelNo=15 }, | |||
new JT808_0x8103_0x0076_AVChannelRefTable{ ChannelType=16, IsConnectCloudPlat=17, LogicChannelNo=18, PhysicalChannelNo=19 }, | |||
new JT808_0x8103_0x0076_AVChannelRefTable{ ChannelType=20, IsConnectCloudPlat=21, LogicChannelNo=22, PhysicalChannelNo=23 } | |||
} | |||
}, | |||
new JT808_0x8103_0x0077{ | |||
NeedSetChannelTotal=2, | |||
ParamLength=43, | |||
jT808_0X8103_0X0077_SignalChannels=new List<JT808_0x8103_0x0077_SignalChannel>{ | |||
new JT808_0x8103_0x0077_SignalChannel{ | |||
LogicChannelNo =1, OSD=2, RTS_EncodeMode=3, RTS_KF_Interval=4, RTS_Resolution=5, | |||
RTS_Target_CodeRate =6, RTS_Target_FPS=7, StreamStore_EncodeMode=8, StreamStore_KF_Interval=9, StreamStore_Resolution=10, | |||
StreamStore_Target_CodeRate=11, StreamStore_Target_FPS=12}, | |||
new JT808_0x8103_0x0077_SignalChannel{ | |||
LogicChannelNo=1, OSD=2, RTS_EncodeMode=3, RTS_KF_Interval=4, RTS_Resolution=5, | |||
RTS_Target_CodeRate =6, RTS_Target_FPS=7, StreamStore_EncodeMode=8, StreamStore_KF_Interval=9, StreamStore_Resolution=10, | |||
StreamStore_Target_CodeRate=11, StreamStore_Target_FPS=12} | |||
new JT808_0x8103_0x0076 { | |||
AudioChannelTotal=1, | |||
AVChannelTotal=2, | |||
VudioChannelTotal=3, | |||
ParamLength=27, | |||
AVChannelRefTables=new List<JT808_0x8103_0x0076_AVChannelRefTable>{ | |||
new JT808_0x8103_0x0076_AVChannelRefTable{ | |||
ChannelType =0, | |||
IsConnectCloudPlat =1, | |||
LogicChannelNo =2, | |||
PhysicalChannelNo =3 }, | |||
new JT808_0x8103_0x0076_AVChannelRefTable{ | |||
ChannelType =4, | |||
IsConnectCloudPlat =5, | |||
LogicChannelNo =6, | |||
PhysicalChannelNo =7 }, | |||
new JT808_0x8103_0x0076_AVChannelRefTable{ | |||
ChannelType =8, | |||
IsConnectCloudPlat =9, | |||
LogicChannelNo =10, | |||
PhysicalChannelNo =11 }, | |||
new JT808_0x8103_0x0076_AVChannelRefTable{ | |||
ChannelType =12, | |||
IsConnectCloudPlat =13, | |||
LogicChannelNo =14, | |||
PhysicalChannelNo =15 }, | |||
new JT808_0x8103_0x0076_AVChannelRefTable{ | |||
ChannelType =16, | |||
IsConnectCloudPlat =17, | |||
LogicChannelNo =18, | |||
PhysicalChannelNo =19 }, | |||
new JT808_0x8103_0x0076_AVChannelRefTable{ | |||
ChannelType =20, | |||
IsConnectCloudPlat =21, | |||
LogicChannelNo =22, | |||
PhysicalChannelNo =23 } | |||
} | |||
}, | |||
new JT808_0x8103_0x0077{ | |||
NeedSetChannelTotal=2, | |||
ParamLength=43, | |||
SignalChannels=new List<JT808_0x8103_0x0077_SignalChannel>{ | |||
new JT808_0x8103_0x0077_SignalChannel{ | |||
LogicChannelNo =1, | |||
OSD =2, | |||
RTS_EncodeMode =3, | |||
RTS_KF_Interval =4, | |||
RTS_Resolution =5, | |||
RTS_Target_CodeRate =6, | |||
RTS_Target_FPS =7, | |||
StreamStore_EncodeMode =8, | |||
StreamStore_KF_Interval =9, | |||
StreamStore_Resolution =10, | |||
StreamStore_Target_CodeRate=11, | |||
StreamStore_Target_FPS =12 | |||
}, | |||
new JT808_0x8103_0x0077_SignalChannel{ | |||
LogicChannelNo=1, | |||
OSD =2, | |||
RTS_EncodeMode =3, | |||
RTS_KF_Interval =4, | |||
RTS_Resolution =5, | |||
RTS_Target_CodeRate =6, | |||
RTS_Target_FPS =7, | |||
StreamStore_EncodeMode =8, | |||
StreamStore_KF_Interval =9, | |||
StreamStore_Resolution =10, | |||
StreamStore_Target_CodeRate=11, | |||
StreamStore_Target_FPS =12 | |||
} | |||
} | |||
}, | |||
new JT808_0x8103_0x0079{ | |||
BeginMinute=1, Duration=2, StorageThresholds=3 | |||
}, | |||
new JT808_0x8103_0x007A{ | |||
AlarmShielding=1 | |||
}, | |||
new JT808_0x8103_0x007B{ | |||
NuclearLoadNumber=1, FatigueThreshold=2 | |||
}, | |||
new JT808_0x8103_0x007C{ | |||
SleepWakeMode=1, TimerWakeDaySet=2, WakeConditionType=3, | |||
jT808_0X8103_0X007C_TimerWakeDayParamter=new JT808_0x8103_0x007C_TimerWakeDayParamter{ | |||
TimePeriod1CloseTime="12", | |||
TimePeriod1WakeTime="23", | |||
TimePeriod2CloseTime="34", | |||
TimePeriod2WakeTime="45", | |||
TimePeriod3CloseTime="56", | |||
TimePeriod3WakeTime="67", | |||
TimePeriod4CloseTime="78", | |||
TimePeriod4WakeTime="89", | |||
TimerWakeEnableFlag=10 | |||
} | |||
new JT808_0x8103_0x0079{ | |||
BeginMinute=1, | |||
Duration =2, | |||
StorageThresholds =3 | |||
}, | |||
new JT808_0x8103_0x007A{ | |||
AlarmShielding=1 | |||
}, | |||
new JT808_0x8103_0x007B{ | |||
NuclearLoadNumber=1, | |||
FatigueThreshold =2 | |||
}, | |||
new JT808_0x8103_0x007C{ | |||
SleepWakeMode=1, | |||
TimerWakeDaySet =2, | |||
WakeConditionType =3, | |||
TimerWakeDayParamter=new JT808_0x8103_0x007C_TimerWakeDayParamter{ | |||
TimePeriod1CloseTime="12", | |||
TimePeriod1WakeTime="23", | |||
TimePeriod2CloseTime="34", | |||
TimePeriod2WakeTime="45", | |||
TimePeriod3CloseTime="56", | |||
TimePeriod3WakeTime="67", | |||
TimePeriod4CloseTime="78", | |||
TimePeriod4WakeTime="89", | |||
TimerWakeEnableFlag=10 | |||
} | |||
} | |||
} | |||
} | |||
}; | |||
@@ -115,105 +162,128 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"ParamList\":[],\"CustomParamList\":[{\"ParamId\":117,\"ParamLength\":21,\"RTS_EncodeMode\":3,\"RTS_Resolution\":5,\"RTS_KF_Interval\":4,\"RTS_Target_FPS\":7,\"RTS_Target_CodeRate\":6,\"StreamStore_EncodeMode\":8,\"StreamStore_Resolution\":10,\"StreamStore_KF_Interval\":9,\"StreamStore_Target_FPS\":12,\"StreamStore_Target_CodeRate\":11,\"OSD\":2,\"AudioOutputEnabled\":1},{\"ParamId\":118,\"ParamLength\":27,\"AVChannelTotal\":2,\"AudioChannelTotal\":1,\"VudioChannelTotal\":3,\"AVChannelRefTables\":[{\"PhysicalChannelNo\":3,\"LogicChannelNo\":2,\"ChannelType\":0,\"IsConnectCloudPlat\":1},{\"PhysicalChannelNo\":7,\"LogicChannelNo\":6,\"ChannelType\":4,\"IsConnectCloudPlat\":5},{\"PhysicalChannelNo\":11,\"LogicChannelNo\":10,\"ChannelType\":8,\"IsConnectCloudPlat\":9},{\"PhysicalChannelNo\":15,\"LogicChannelNo\":14,\"ChannelType\":12,\"IsConnectCloudPlat\":13},{\"PhysicalChannelNo\":19,\"LogicChannelNo\":18,\"ChannelType\":16,\"IsConnectCloudPlat\":17},{\"PhysicalChannelNo\":23,\"LogicChannelNo\":22,\"ChannelType\":20,\"IsConnectCloudPlat\":21}]},{\"ParamId\":119,\"ParamLength\":43,\"NeedSetChannelTotal\":2,\"jT808_0X8103_0X0077_SignalChannels\":[{\"LogicChannelNo\":1,\"RTS_EncodeMode\":3,\"RTS_Resolution\":5,\"RTS_KF_Interval\":4,\"RTS_Target_FPS\":7,\"RTS_Target_CodeRate\":6,\"StreamStore_EncodeMode\":8,\"StreamStore_Resolution\":10,\"StreamStore_KF_Interval\":9,\"StreamStore_Target_FPS\":12,\"StreamStore_Target_CodeRate\":11,\"OSD\":2},{\"LogicChannelNo\":1,\"RTS_EncodeMode\":3,\"RTS_Resolution\":5,\"RTS_KF_Interval\":4,\"RTS_Target_FPS\":7,\"RTS_Target_CodeRate\":6,\"StreamStore_EncodeMode\":8,\"StreamStore_Resolution\":10,\"StreamStore_KF_Interval\":9,\"StreamStore_Target_FPS\":12,\"StreamStore_Target_CodeRate\":11,\"OSD\":2}]},{\"ParamId\":121,\"ParamLength\":3,\"StorageThresholds\":3,\"Duration\":2,\"BeginMinute\":1},{\"ParamId\":122,\"ParamLength\":4,\"AlarmShielding\":1},{\"ParamId\":123,\"ParamLength\":2,\"NuclearLoadNumber\":1,\"FatigueThreshold\":2},{\"ParamId\":124,\"ParamLength\":20,\"SleepWakeMode\":1,\"WakeConditionType\":3,\"TimerWakeDaySet\":2,\"jT808_0X8103_0X007C_TimerWakeDayParamter\":{\"TimerWakeEnableFlag\":10,\"TimePeriod1WakeTime\":\"23\",\"TimePeriod1CloseTime\":\"12\",\"TimePeriod2WakeTime\":\"45\",\"TimePeriod2CloseTime\":\"34\",\"TimePeriod3WakeTime\":\"67\",\"TimePeriod3CloseTime\":\"56\",\"TimePeriod4WakeTime\":\"89\",\"TimePeriod4CloseTime\":\"78\"}}],\"SkipSerialization\":false}"; | |||
byte[] bytes = "7E8103009C000123456789000A070000007515030500040700000006080A00090C0000000B000201000000761B02010303020001070604050B0A08090F0E0C0D1312101117161415000000772B0201030500040700000006080A00090C0000000B000201030500040700000006080A00090C0000000B000200000079030302010000007A04000000010000007B0201020000007C140103020A00230012004500340067005600890078587E".ToHexBytes(); | |||
JT808Package jT808_0X8103 = JT808Serializer.Deserialize(bytes); | |||
Assert.Equal(Enums.JT808MsgId.设置终端参数.ToUInt16Value(), jT808_0X8103.Header.MsgId); | |||
Assert.Equal(JT808MsgId.设置终端参数.ToUInt16Value(), jT808_0X8103.Header.MsgId); | |||
Assert.Equal(10, jT808_0X8103.Header.MsgNum); | |||
Assert.Equal("123456789", jT808_0X8103.Header.TerminalPhoneNo); | |||
JT808_0x8103 JT808Bodies = (JT808_0x8103)jT808_0X8103.Bodies; | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0X8103.Bodies), str); | |||
} | |||
[Fact] | |||
public void Test3() | |||
{ | |||
JT808_0x8103 jT808_0x8103 = new JT808_0x8103 | |||
JT808_0x8103 jT808_0x8103 = (JT808_0x8103)jT808_0X8103.Bodies; | |||
foreach (var item in jT808_0x8103.ParamList) | |||
{ | |||
ParamList = new List<JT808_0x8103_BodyBase>(), | |||
CustomParamList = new List<JT808_0x8103_CustomBodyBase> { | |||
new JT808_0x8103_0x0075() { | |||
AudioOutputEnabled=1, | |||
OSD=2, | |||
RTS_EncodeMode=3, | |||
RTS_KF_Interval=4, | |||
RTS_Resolution=5, | |||
RTS_Target_CodeRate=6, | |||
RTS_Target_FPS=7, | |||
StreamStore_EncodeMode=8, | |||
StreamStore_KF_Interval=9, | |||
StreamStore_Resolution=10, | |||
StreamStore_Target_CodeRate=11, | |||
StreamStore_Target_FPS=12 | |||
}, | |||
new JT808_0x8103_0x0076() { | |||
AudioChannelTotal=1, | |||
AVChannelTotal=2, | |||
VudioChannelTotal=3, | |||
ParamLength=27, | |||
AVChannelRefTables=new List<JT808_0x8103_0x0076_AVChannelRefTable>{ | |||
new JT808_0x8103_0x0076_AVChannelRefTable{ ChannelType=0, IsConnectCloudPlat=1, LogicChannelNo=2, PhysicalChannelNo=3 }, | |||
switch (item) | |||
{ | |||
case JT808_0x8103_0x0075 jT808_0x8103_0x0075: | |||
Assert.Equal(1,jT808_0x8103_0x0075.AudioOutputEnabled); | |||
Assert.Equal(2,jT808_0x8103_0x0075.OSD); | |||
Assert.Equal(3,jT808_0x8103_0x0075.RTS_EncodeMode); | |||
Assert.Equal(4,jT808_0x8103_0x0075.RTS_KF_Interval); | |||
Assert.Equal(5,jT808_0x8103_0x0075.RTS_Resolution); | |||
Assert.Equal(6u,jT808_0x8103_0x0075.RTS_Target_CodeRate); | |||
Assert.Equal(7,jT808_0x8103_0x0075.RTS_Target_FPS); | |||
Assert.Equal(8,jT808_0x8103_0x0075.StreamStore_EncodeMode); | |||
Assert.Equal(9,jT808_0x8103_0x0075.StreamStore_KF_Interval); | |||
Assert.Equal(10,jT808_0x8103_0x0075.StreamStore_Resolution); | |||
Assert.Equal(11u,jT808_0x8103_0x0075.StreamStore_Target_CodeRate); | |||
Assert.Equal(12u,jT808_0x8103_0x0075.StreamStore_Target_FPS); | |||
break; | |||
case JT808_0x8103_0x0076 jT808_0x8103_0x0076: | |||
Assert.Equal(1,jT808_0x8103_0x0076.AudioChannelTotal); | |||
Assert.Equal(2, jT808_0x8103_0x0076.AVChannelTotal); | |||
Assert.Equal(3,jT808_0x8103_0x0076.VudioChannelTotal); | |||
Assert.Equal(27,jT808_0x8103_0x0076.ParamLength); | |||
Assert.Equal(0,jT808_0x8103_0x0076.AVChannelRefTables[0].ChannelType); | |||
Assert.Equal(1,jT808_0x8103_0x0076.AVChannelRefTables[0].IsConnectCloudPlat); | |||
Assert.Equal(2,jT808_0x8103_0x0076.AVChannelRefTables[0].LogicChannelNo); | |||
Assert.Equal(3,jT808_0x8103_0x0076.AVChannelRefTables[0].PhysicalChannelNo); | |||
new JT808_0x8103_0x0076_AVChannelRefTable{ChannelType=4, IsConnectCloudPlat=5, LogicChannelNo=6, PhysicalChannelNo=7 }, | |||
new JT808_0x8103_0x0076_AVChannelRefTable{ChannelType=8, IsConnectCloudPlat=9, LogicChannelNo=10, PhysicalChannelNo=11 }, | |||
Assert.Equal(4,jT808_0x8103_0x0076.AVChannelRefTables[1].ChannelType); | |||
Assert.Equal(5,jT808_0x8103_0x0076.AVChannelRefTables[1].IsConnectCloudPlat); | |||
Assert.Equal(6,jT808_0x8103_0x0076.AVChannelRefTables[1].LogicChannelNo); | |||
Assert.Equal(7,jT808_0x8103_0x0076.AVChannelRefTables[1].PhysicalChannelNo); | |||
new JT808_0x8103_0x0076_AVChannelRefTable{ChannelType=12, IsConnectCloudPlat=13, LogicChannelNo=14, PhysicalChannelNo=15 }, | |||
new JT808_0x8103_0x0076_AVChannelRefTable{ ChannelType=16, IsConnectCloudPlat=17, LogicChannelNo=18, PhysicalChannelNo=19 }, | |||
new JT808_0x8103_0x0076_AVChannelRefTable{ ChannelType=20, IsConnectCloudPlat=21, LogicChannelNo=22, PhysicalChannelNo=23 } | |||
} | |||
}, | |||
new JT808_0x8103_0x0077{ | |||
NeedSetChannelTotal=2, | |||
ParamLength=43, | |||
jT808_0X8103_0X0077_SignalChannels=new List<JT808_0x8103_0x0077_SignalChannel>{ | |||
new JT808_0x8103_0x0077_SignalChannel{ | |||
LogicChannelNo =1, OSD=2, RTS_EncodeMode=3, RTS_KF_Interval=4, RTS_Resolution=5, | |||
RTS_Target_CodeRate =6, RTS_Target_FPS=7, StreamStore_EncodeMode=8, StreamStore_KF_Interval=9, StreamStore_Resolution=10, | |||
StreamStore_Target_CodeRate=11, StreamStore_Target_FPS=12}, | |||
new JT808_0x8103_0x0077_SignalChannel{ | |||
LogicChannelNo=1, OSD=2, RTS_EncodeMode=3, RTS_KF_Interval=4, RTS_Resolution=5, | |||
RTS_Target_CodeRate =6, RTS_Target_FPS=7, StreamStore_EncodeMode=8, StreamStore_KF_Interval=9, StreamStore_Resolution=10, | |||
StreamStore_Target_CodeRate=11, StreamStore_Target_FPS=12} | |||
} | |||
}, | |||
new JT808_0x8103_0x0079{ | |||
BeginMinute=1, Duration=2, StorageThresholds=3 | |||
}, | |||
new JT808_0x8103_0x007A{ | |||
AlarmShielding=1 | |||
}, | |||
new JT808_0x8103_0x007B{ | |||
NuclearLoadNumber=1, FatigueThreshold=2 | |||
}, | |||
new JT808_0x8103_0x007C{ | |||
SleepWakeMode=1, TimerWakeDaySet=2, WakeConditionType=3, | |||
jT808_0X8103_0X007C_TimerWakeDayParamter=new JT808_0x8103_0x007C_TimerWakeDayParamter{ | |||
TimePeriod1CloseTime="12", | |||
TimePeriod1WakeTime="23", | |||
TimePeriod2CloseTime="34", | |||
TimePeriod2WakeTime="45", | |||
TimePeriod3CloseTime="56", | |||
TimePeriod3WakeTime="67", | |||
TimePeriod4CloseTime="78", | |||
TimePeriod4WakeTime="89", | |||
TimerWakeEnableFlag=10 | |||
} | |||
} | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x8103); | |||
var hex = JT808Serializer.Serialize(jT808_0x8103).ToHexString(); | |||
Assert.Equal("070000007515030500040700000006080A00090C0000000B000201000000761B02010303020001070604050B0A08090F0E0C0D1312101117161415000000772B0201030500040700000006080A00090C0000000B000201030500040700000006080A00090C0000000B000200000079030302010000007A04000000010000007B0201020000007C140103020A00230012004500340067005600890078", hex); | |||
} | |||
Assert.Equal(8,jT808_0x8103_0x0076.AVChannelRefTables[2].ChannelType); | |||
Assert.Equal(9,jT808_0x8103_0x0076.AVChannelRefTables[2].IsConnectCloudPlat); | |||
Assert.Equal(10,jT808_0x8103_0x0076.AVChannelRefTables[2].LogicChannelNo); | |||
Assert.Equal(11,jT808_0x8103_0x0076.AVChannelRefTables[2].PhysicalChannelNo); | |||
[Fact] | |||
public void Test4() | |||
{ | |||
byte[] bytes = "070000007515030500040700000006080A00090C0000000B000201000000761B02010303020001070604050B0A08090F0E0C0D1312101117161415000000772B0201030500040700000006080A00090C0000000B000201030500040700000006080A00090C0000000B000200000079030302010000007A04000000010000007B0201020000007C140103020A00230012004500340067005600890078".ToHexBytes(); | |||
var jT808_0X8103 = JT808Serializer.Deserialize<JT808_0x8103>(bytes); | |||
Assert.Equal(12,jT808_0x8103_0x0076.AVChannelRefTables[3].ChannelType); | |||
Assert.Equal(13,jT808_0x8103_0x0076.AVChannelRefTables[3].IsConnectCloudPlat); | |||
Assert.Equal(14,jT808_0x8103_0x0076.AVChannelRefTables[3].LogicChannelNo); | |||
Assert.Equal(15,jT808_0x8103_0x0076.AVChannelRefTables[3].PhysicalChannelNo); | |||
Assert.Equal(16,jT808_0x8103_0x0076.AVChannelRefTables[4].ChannelType); | |||
Assert.Equal(17,jT808_0x8103_0x0076.AVChannelRefTables[4].IsConnectCloudPlat); | |||
Assert.Equal(18,jT808_0x8103_0x0076.AVChannelRefTables[4].LogicChannelNo); | |||
Assert.Equal(19,jT808_0x8103_0x0076.AVChannelRefTables[4].PhysicalChannelNo); | |||
Assert.Equal(20,jT808_0x8103_0x0076.AVChannelRefTables[5].ChannelType); | |||
Assert.Equal(21,jT808_0x8103_0x0076.AVChannelRefTables[5].IsConnectCloudPlat); | |||
Assert.Equal(22,jT808_0x8103_0x0076.AVChannelRefTables[5].LogicChannelNo); | |||
Assert.Equal(23,jT808_0x8103_0x0076.AVChannelRefTables[5].PhysicalChannelNo); | |||
break; | |||
case JT808_0x8103_0x0077 jT808_0x8103_0x0077: | |||
Assert.Equal(2,jT808_0x8103_0x0077.NeedSetChannelTotal); | |||
Assert.Equal(43,jT808_0x8103_0x0077.ParamLength); | |||
Assert.Equal("{\"ParamList\":[],\"CustomParamList\":[{\"ParamId\":117,\"ParamLength\":21,\"RTS_EncodeMode\":3,\"RTS_Resolution\":5,\"RTS_KF_Interval\":4,\"RTS_Target_FPS\":7,\"RTS_Target_CodeRate\":6,\"StreamStore_EncodeMode\":8,\"StreamStore_Resolution\":10,\"StreamStore_KF_Interval\":9,\"StreamStore_Target_FPS\":12,\"StreamStore_Target_CodeRate\":11,\"OSD\":2,\"AudioOutputEnabled\":1},{\"ParamId\":118,\"ParamLength\":27,\"AVChannelTotal\":2,\"AudioChannelTotal\":1,\"VudioChannelTotal\":3,\"AVChannelRefTables\":[{\"PhysicalChannelNo\":3,\"LogicChannelNo\":2,\"ChannelType\":0,\"IsConnectCloudPlat\":1},{\"PhysicalChannelNo\":7,\"LogicChannelNo\":6,\"ChannelType\":4,\"IsConnectCloudPlat\":5},{\"PhysicalChannelNo\":11,\"LogicChannelNo\":10,\"ChannelType\":8,\"IsConnectCloudPlat\":9},{\"PhysicalChannelNo\":15,\"LogicChannelNo\":14,\"ChannelType\":12,\"IsConnectCloudPlat\":13},{\"PhysicalChannelNo\":19,\"LogicChannelNo\":18,\"ChannelType\":16,\"IsConnectCloudPlat\":17},{\"PhysicalChannelNo\":23,\"LogicChannelNo\":22,\"ChannelType\":20,\"IsConnectCloudPlat\":21}]},{\"ParamId\":119,\"ParamLength\":43,\"NeedSetChannelTotal\":2,\"jT808_0X8103_0X0077_SignalChannels\":[{\"LogicChannelNo\":1,\"RTS_EncodeMode\":3,\"RTS_Resolution\":5,\"RTS_KF_Interval\":4,\"RTS_Target_FPS\":7,\"RTS_Target_CodeRate\":6,\"StreamStore_EncodeMode\":8,\"StreamStore_Resolution\":10,\"StreamStore_KF_Interval\":9,\"StreamStore_Target_FPS\":12,\"StreamStore_Target_CodeRate\":11,\"OSD\":2},{\"LogicChannelNo\":1,\"RTS_EncodeMode\":3,\"RTS_Resolution\":5,\"RTS_KF_Interval\":4,\"RTS_Target_FPS\":7,\"RTS_Target_CodeRate\":6,\"StreamStore_EncodeMode\":8,\"StreamStore_Resolution\":10,\"StreamStore_KF_Interval\":9,\"StreamStore_Target_FPS\":12,\"StreamStore_Target_CodeRate\":11,\"OSD\":2}]},{\"ParamId\":121,\"ParamLength\":3,\"StorageThresholds\":3,\"Duration\":2,\"BeginMinute\":1},{\"ParamId\":122,\"ParamLength\":4,\"AlarmShielding\":1},{\"ParamId\":123,\"ParamLength\":2,\"NuclearLoadNumber\":1,\"FatigueThreshold\":2},{\"ParamId\":124,\"ParamLength\":20,\"SleepWakeMode\":1,\"WakeConditionType\":3,\"TimerWakeDaySet\":2,\"jT808_0X8103_0X007C_TimerWakeDayParamter\":{\"TimerWakeEnableFlag\":10,\"TimePeriod1WakeTime\":\"23\",\"TimePeriod1CloseTime\":\"12\",\"TimePeriod2WakeTime\":\"45\",\"TimePeriod2CloseTime\":\"34\",\"TimePeriod3WakeTime\":\"67\",\"TimePeriod3CloseTime\":\"56\",\"TimePeriod4WakeTime\":\"89\",\"TimePeriod4CloseTime\":\"78\"}}],\"SkipSerialization\":false}", Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0X8103)); | |||
Assert.Equal(1,jT808_0x8103_0x0077.SignalChannels[0].LogicChannelNo); | |||
Assert.Equal(2,jT808_0x8103_0x0077.SignalChannels[0].OSD); | |||
Assert.Equal(3,jT808_0x8103_0x0077.SignalChannels[0].RTS_EncodeMode); | |||
Assert.Equal(4,jT808_0x8103_0x0077.SignalChannels[0].RTS_KF_Interval); | |||
Assert.Equal(5,jT808_0x8103_0x0077.SignalChannels[0].RTS_Resolution); | |||
Assert.Equal(6u,jT808_0x8103_0x0077.SignalChannels[0].RTS_Target_CodeRate); | |||
Assert.Equal(7,jT808_0x8103_0x0077.SignalChannels[0].RTS_Target_FPS); | |||
Assert.Equal(8,jT808_0x8103_0x0077.SignalChannels[0].StreamStore_EncodeMode); | |||
Assert.Equal(9,jT808_0x8103_0x0077.SignalChannels[0].StreamStore_KF_Interval); | |||
Assert.Equal(10,jT808_0x8103_0x0077.SignalChannels[0].StreamStore_Resolution); | |||
Assert.Equal(11u,jT808_0x8103_0x0077.SignalChannels[0].StreamStore_Target_CodeRate); | |||
Assert.Equal(12,jT808_0x8103_0x0077.SignalChannels[0].StreamStore_Target_FPS); | |||
Assert.Equal(1,jT808_0x8103_0x0077.SignalChannels[1].LogicChannelNo); | |||
Assert.Equal(2,jT808_0x8103_0x0077.SignalChannels[1].OSD); | |||
Assert.Equal(3,jT808_0x8103_0x0077.SignalChannels[1].RTS_EncodeMode); | |||
Assert.Equal(4,jT808_0x8103_0x0077.SignalChannels[1].RTS_KF_Interval); | |||
Assert.Equal(5,jT808_0x8103_0x0077.SignalChannels[1].RTS_Resolution); | |||
Assert.Equal(6u,jT808_0x8103_0x0077.SignalChannels[1].RTS_Target_CodeRate); | |||
Assert.Equal(7,jT808_0x8103_0x0077.SignalChannels[1].RTS_Target_FPS); | |||
Assert.Equal(8,jT808_0x8103_0x0077.SignalChannels[1].StreamStore_EncodeMode); | |||
Assert.Equal(9,jT808_0x8103_0x0077.SignalChannels[1].StreamStore_KF_Interval); | |||
Assert.Equal(10,jT808_0x8103_0x0077.SignalChannels[1].StreamStore_Resolution); | |||
Assert.Equal(11u,jT808_0x8103_0x0077.SignalChannels[1].StreamStore_Target_CodeRate); | |||
Assert.Equal(12,jT808_0x8103_0x0077.SignalChannels[1].StreamStore_Target_FPS); | |||
break; | |||
case JT808_0x8103_0x0079 jT808_0x8103_0x0079: | |||
Assert.Equal(1,jT808_0x8103_0x0079.BeginMinute); | |||
Assert.Equal(2,jT808_0x8103_0x0079.Duration); | |||
Assert.Equal(3,jT808_0x8103_0x0079.StorageThresholds); | |||
break; | |||
case JT808_0x8103_0x007A jT808_0x8103_0x007A: | |||
Assert.Equal(1u,jT808_0x8103_0x007A.AlarmShielding); | |||
break; | |||
case JT808_0x8103_0x007B jT808_0x8103_0x007B: | |||
Assert.Equal(1,jT808_0x8103_0x007B.NuclearLoadNumber); | |||
Assert.Equal(2,jT808_0x8103_0x007B.FatigueThreshold); | |||
break; | |||
case JT808_0x8103_0x007C jT808_0x8103_0x007C: | |||
Assert.Equal(1,jT808_0x8103_0x007C.SleepWakeMode); | |||
Assert.Equal(2,jT808_0x8103_0x007C.TimerWakeDaySet); | |||
Assert.Equal(3,jT808_0x8103_0x007C.WakeConditionType); | |||
Assert.Equal("12", jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod1CloseTime); | |||
Assert.Equal("23",jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod1WakeTime); | |||
Assert.Equal("34",jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod2CloseTime); | |||
Assert.Equal("45",jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod2WakeTime); | |||
Assert.Equal("56",jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod3CloseTime); | |||
Assert.Equal("67",jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod3WakeTime); | |||
Assert.Equal("78",jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod4CloseTime); | |||
Assert.Equal("89", jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod4WakeTime); | |||
Assert.Equal(10,jT808_0x8103_0x007C.TimerWakeDayParamter.TimerWakeEnableFlag); | |||
break; | |||
default: | |||
break; | |||
} | |||
} | |||
} | |||
} | |||
class DefaultGlobalConfig : GlobalConfigBase | |||
@@ -40,9 +40,8 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
JT808_0x9105 jT808_0x9105 = new JT808_0x9105() | |||
{ | |||
LogicChannelNo=1, | |||
DropRate=2 | |||
DropRate=2 | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9105); | |||
var hex = JT808Serializer.Serialize(jT808_0x9105).ToHexString(); | |||
Assert.Equal("0102", hex); | |||
} | |||
@@ -50,9 +49,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"LogicChannelNo\":1,\"DropRate\":2,\"SkipSerialization\":false}"; | |||
var jT808_0x9105 = JT808Serializer.Deserialize<JT808_0x9105>("0102".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9105), str); | |||
Assert.Equal(1, jT808_0x9105.LogicChannelNo); | |||
Assert.Equal(2, jT808_0x9105.DropRate); | |||
} | |||
} | |||
} |
@@ -42,18 +42,17 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
LogicChannelNo = 1, | |||
AVItemType = 2, | |||
BeginTime = Convert.ToDateTime("2019-07-16 10:10:10"), | |||
EndTime = Convert.ToDateTime("2019-07-16 10:10:10"), | |||
FastForwardOrFastRewindMultiples1=3, | |||
FastForwardOrFastRewindMultiples2=4, | |||
MemType=5, | |||
PlayBackWay=6, | |||
ServerIp="127.0.0.1", | |||
ServerIpLength=9, | |||
StreamType=7, | |||
TcpPort=80, | |||
UdpPort=8080 | |||
EndTime = Convert.ToDateTime("2019-07-16 10:10:10"), | |||
FastForwardOrFastRewindMultiples1=3, | |||
FastForwardOrFastRewindMultiples2=4, | |||
MemType=5, | |||
PlayBackWay=6, | |||
ServerIp="127.0.0.1", | |||
ServerIpLength=9, | |||
StreamType=7, | |||
TcpPort=80, | |||
UdpPort=8080 | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9201); | |||
var hex = JT808Serializer.Serialize(jT808_0x9201).ToHexString(); | |||
Assert.Equal("093132372E302E302E3100501F9001020705060304190716101010190716101010", hex); | |||
} | |||
@@ -61,9 +60,20 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"ServerIpLength\":9,\"ServerIp\":\"127.0.0.1\",\"TcpPort\":80,\"UdpPort\":8080,\"LogicChannelNo\":1,\"AVItemType\":2,\"StreamType\":7,\"MemType\":5,\"PlayBackWay\":6,\"FastForwardOrFastRewindMultiples1\":3,\"FastForwardOrFastRewindMultiples2\":4,\"BeginTime\":\"2019-07-16 10:10:10\",\"EndTime\":\"2019-07-16 10:10:10\",\"SkipSerialization\":false}"; | |||
var jT808_0x9201 = JT808Serializer.Deserialize<JT808_0x9201>("093132372E302E302E3100501F9001020705060304190716101010190716101010".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9201), str); | |||
Assert.Equal(1, jT808_0x9201.LogicChannelNo); | |||
Assert.Equal(2, jT808_0x9201.AVItemType); | |||
Assert.Equal(Convert.ToDateTime("2019-07-16 10:10:10"), jT808_0x9201.BeginTime); | |||
Assert.Equal(Convert.ToDateTime("2019-07-16 10:10:10"), jT808_0x9201.EndTime); | |||
Assert.Equal(3, jT808_0x9201.FastForwardOrFastRewindMultiples1); | |||
Assert.Equal(4, jT808_0x9201.FastForwardOrFastRewindMultiples2); | |||
Assert.Equal(5, jT808_0x9201.MemType); | |||
Assert.Equal(6, jT808_0x9201.PlayBackWay); | |||
Assert.Equal("127.0.0.1", jT808_0x9201.ServerIp); | |||
Assert.Equal(9, jT808_0x9201.ServerIpLength); | |||
Assert.Equal(7, jT808_0x9201.StreamType); | |||
Assert.Equal(80, jT808_0x9201.TcpPort); | |||
Assert.Equal(8080, jT808_0x9201.UdpPort); | |||
} | |||
} | |||
} |
@@ -39,12 +39,11 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
{ | |||
JT808_0x9202 jT808_0x9202 = new JT808_0x9202() | |||
{ | |||
AVChannelNo=1, | |||
DragPlaybackPosition=Convert.ToDateTime("2019-07-16 10:10:10"), | |||
FastForwardOrFastRewindMultiples=2, | |||
PlayBackControl=3 | |||
AVChannelNo=1, | |||
DragPlaybackPosition=Convert.ToDateTime("2019-07-16 10:10:10"), | |||
FastForwardOrFastRewindMultiples=2, | |||
PlayBackControl=3 | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9202); | |||
var hex = JT808Serializer.Serialize(jT808_0x9202).ToHexString(); | |||
Assert.Equal("010302190716101010", hex); | |||
} | |||
@@ -52,9 +51,11 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"AVChannelNo\":1,\"PlayBackControl\":3,\"FastForwardOrFastRewindMultiples\":2,\"DragPlaybackPosition\":\"2019-07-16 10:10:10\",\"SkipSerialization\":false}"; | |||
var jT808_0x9202 = JT808Serializer.Deserialize<JT808_0x9202>("010302190716101010".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9202), str); | |||
Assert.Equal(1, jT808_0x9202.AVChannelNo); | |||
Assert.Equal(Convert.ToDateTime("2019-07-16 10:10:10"), jT808_0x9202.DragPlaybackPosition); | |||
Assert.Equal(2, jT808_0x9202.FastForwardOrFastRewindMultiples); | |||
Assert.Equal(3, jT808_0x9202.PlayBackControl); | |||
} | |||
} | |||
} |
@@ -39,15 +39,14 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
{ | |||
JT808_0x9205 jT808_0x9205 = new JT808_0x9205() | |||
{ | |||
AlarmFlag=1, | |||
AVResourceType=2, | |||
BeginTime= Convert.ToDateTime("2019-07-16 10:10:10"), | |||
EndTime= Convert.ToDateTime("2019-07-16 10:10:11"), | |||
LogicChannelNo=3, | |||
MemoryType=4, | |||
AlarmFlag=1, | |||
AVResourceType=2, | |||
BeginTime= Convert.ToDateTime("2019-07-16 10:10:10"), | |||
EndTime= Convert.ToDateTime("2019-07-16 10:10:11"), | |||
LogicChannelNo=3, | |||
MemoryType=4, | |||
StreamType =5 | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9205); | |||
var hex = JT808Serializer.Serialize(jT808_0x9205).ToHexString(); | |||
Assert.Equal("0319071610101019071610101100000001020504", hex); | |||
} | |||
@@ -55,9 +54,14 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"LogicChannelNo\":3,\"BeginTime\":\"2019-07-16 10:10:10\",\"EndTime\":\"2019-07-16 10:10:11\",\"AlarmFlag\":1,\"AVResourceType\":2,\"StreamType\":5,\"MemoryType\":4,\"SkipSerialization\":false}"; | |||
var jT808_0x9205 = JT808Serializer.Deserialize<JT808_0x9205>("0319071610101019071610101100000001020504".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9205), str); | |||
Assert.Equal(1u, jT808_0x9205.AlarmFlag); | |||
Assert.Equal(2, jT808_0x9205.AVResourceType); | |||
Assert.Equal(Convert.ToDateTime("2019-07-16 10:10:10"), jT808_0x9205.BeginTime); | |||
Assert.Equal(Convert.ToDateTime("2019-07-16 10:10:11"), jT808_0x9205.EndTime); | |||
Assert.Equal(3, jT808_0x9205.LogicChannelNo); | |||
Assert.Equal(4, jT808_0x9205.MemoryType); | |||
Assert.Equal(5, jT808_0x9205.StreamType); | |||
} | |||
} | |||
} |
@@ -39,24 +39,24 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
{ | |||
JT808_0x9206 jT808_0x9206 = new JT808_0x9206() | |||
{ | |||
AlarmFlag=1, | |||
AVResourceType=2, | |||
BeginTime= Convert.ToDateTime("2019-07-16 10:10:10"), | |||
EndTime= Convert.ToDateTime("2019-07-16 10:10:11"), | |||
LogicChannelNo=3, | |||
StreamType =5, FileUploadPath="D://1112", | |||
FileUploadPathLength=8, | |||
MemoryPositon=4, | |||
Password="123456", | |||
PasswordLength=6, | |||
Port=808, | |||
ServerIp="127.0.0.1", | |||
ServerIpLength=9, | |||
TaskExcuteCondition=7, | |||
UserName="tk", | |||
UserNameLength=2 | |||
AlarmFlag=1, | |||
AVResourceType=2, | |||
BeginTime= Convert.ToDateTime("2019-07-16 10:10:10"), | |||
EndTime= Convert.ToDateTime("2019-07-16 10:10:11"), | |||
LogicChannelNo=3, | |||
StreamType =5, | |||
FileUploadPath ="D://1112", | |||
FileUploadPathLength=8, | |||
MemoryPositon=4, | |||
Password="123456", | |||
PasswordLength=6, | |||
Port=808, | |||
ServerIp="127.0.0.1", | |||
ServerIpLength=9, | |||
TaskExcuteCondition=7, | |||
UserName="tk", | |||
UserNameLength=2 | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9206); | |||
var hex = JT808Serializer.Serialize(jT808_0x9206).ToHexString(); | |||
Assert.Equal("093132372E302E302E31032802746B0631323334353608443A2F2F31313132031907161010101907161010110000000102050407", hex); | |||
} | |||
@@ -64,9 +64,24 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"ServerIpLength\":9,\"ServerIp\":\"127.0.0.1\",\"Port\":808,\"UserNameLength\":2,\"UserName\":\"tk\",\"PasswordLength\":6,\"Password\":\"123456\",\"FileUploadPathLength\":8,\"FileUploadPath\":\"D://1112\",\"LogicChannelNo\":3,\"BeginTime\":\"2019-07-16 10:10:10\",\"EndTime\":\"2019-07-16 10:10:11\",\"AlarmFlag\":1,\"AVResourceType\":2,\"StreamType\":5,\"MemoryPositon\":4,\"TaskExcuteCondition\":7,\"SkipSerialization\":false}"; | |||
var jT808_0x9206 = JT808Serializer.Deserialize<JT808_0x9206>("093132372E302E302E31032802746B0631323334353608443A2F2F31313132031907161010101907161010110000000102050407".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9206), str); | |||
Assert.Equal(1u, jT808_0x9206.AlarmFlag); | |||
Assert.Equal(2, jT808_0x9206.AVResourceType); | |||
Assert.Equal(Convert.ToDateTime("2019-07-16 10:10:10"), jT808_0x9206.BeginTime); | |||
Assert.Equal(Convert.ToDateTime("2019-07-16 10:10:11"), jT808_0x9206.EndTime); | |||
Assert.Equal(3, jT808_0x9206.LogicChannelNo); | |||
Assert.Equal(5, jT808_0x9206.StreamType); | |||
Assert.Equal("D://1112", jT808_0x9206.FileUploadPath); | |||
Assert.Equal(8, jT808_0x9206.FileUploadPathLength); | |||
Assert.Equal(4, jT808_0x9206.MemoryPositon); | |||
Assert.Equal("123456", jT808_0x9206.Password); | |||
Assert.Equal(6, jT808_0x9206.PasswordLength); | |||
Assert.Equal(808, jT808_0x9206.Port); | |||
Assert.Equal("127.0.0.1", jT808_0x9206.ServerIp); | |||
Assert.Equal(9, jT808_0x9206.ServerIpLength); | |||
Assert.Equal(7, jT808_0x9206.TaskExcuteCondition); | |||
Assert.Equal("tk", jT808_0x9206.UserName); | |||
Assert.Equal(2, jT808_0x9206.UserNameLength); | |||
} | |||
} | |||
} |
@@ -39,10 +39,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
{ | |||
JT808_0x9207 jT808_0x9207 = new JT808_0x9207() | |||
{ | |||
MgsNum=1, | |||
UploadControl=2 | |||
MgsNum=1, | |||
UploadControl=2 | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9207); | |||
var hex = JT808Serializer.Serialize(jT808_0x9207).ToHexString(); | |||
Assert.Equal("000102", hex); | |||
} | |||
@@ -50,9 +49,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"MgsNum\":1,\"UploadControl\":2,\"SkipSerialization\":false}"; | |||
var jT808_0x9207 = JT808Serializer.Deserialize<JT808_0x9207>("000102".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9207), str); | |||
Assert.Equal(1, jT808_0x9207.MgsNum); | |||
Assert.Equal(2, jT808_0x9207.UploadControl); | |||
} | |||
} | |||
} |
@@ -39,11 +39,10 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
{ | |||
JT808_0x9301 jT808_0x9301 = new JT808_0x9301() | |||
{ | |||
LogicChannelNo=1, | |||
Speed=2, | |||
Direction=3 | |||
LogicChannelNo=1, | |||
Speed=2, | |||
Direction=3 | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9301); | |||
var hex = JT808Serializer.Serialize(jT808_0x9301).ToHexString(); | |||
Assert.Equal("010302", hex); | |||
} | |||
@@ -51,9 +50,10 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"LogicChannelNo\":1,\"Direction\":3,\"Speed\":2,\"SkipSerialization\":false}"; | |||
var jT808_0x9301 = JT808Serializer.Deserialize<JT808_0x9301>("010302".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9301), str); | |||
Assert.Equal(1, jT808_0x9301.LogicChannelNo); | |||
Assert.Equal(2, jT808_0x9301.Speed); | |||
Assert.Equal(3, jT808_0x9301.Direction); | |||
} | |||
} | |||
} |
@@ -39,10 +39,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
{ | |||
JT808_0x9302 jT808_0x9302 = new JT808_0x9302() | |||
{ | |||
LogicChannelNo=1, | |||
FocusAdjustmentDirection=2 | |||
LogicChannelNo=1, | |||
FocusAdjustmentDirection=2 | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9302); | |||
var hex = JT808Serializer.Serialize(jT808_0x9302).ToHexString(); | |||
Assert.Equal("0102", hex); | |||
} | |||
@@ -50,9 +49,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"LogicChannelNo\":1,\"FocusAdjustmentDirection\":2,\"SkipSerialization\":false}"; | |||
var jT808_0x9302 = JT808Serializer.Deserialize<JT808_0x9302>("0102".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9302), str); | |||
Assert.Equal(1, jT808_0x9302.LogicChannelNo); | |||
Assert.Equal(2, jT808_0x9302.FocusAdjustmentDirection); | |||
} | |||
} | |||
} |
@@ -39,10 +39,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
{ | |||
JT808_0x9303 jT808_0x9303 = new JT808_0x9303() | |||
{ | |||
LogicChannelNo=1, | |||
IrisAdjustment=2 | |||
LogicChannelNo=1, | |||
IrisAdjustment=2 | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9303); | |||
var hex = JT808Serializer.Serialize(jT808_0x9303).ToHexString(); | |||
Assert.Equal("0102", hex); | |||
} | |||
@@ -50,9 +49,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"LogicChannelNo\":1,\"IrisAdjustment\":2,\"SkipSerialization\":false}"; | |||
var jT808_0x9303 = JT808Serializer.Deserialize<JT808_0x9303>("0102".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9303), str); | |||
Assert.Equal(1, jT808_0x9303.LogicChannelNo); | |||
Assert.Equal(2, jT808_0x9303.IrisAdjustment); | |||
} | |||
} | |||
} |
@@ -39,10 +39,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
{ | |||
JT808_0x9304 jT808_0x9304 = new JT808_0x9304() | |||
{ | |||
LogicChannelNo=1, | |||
StartOrStop=2 | |||
LogicChannelNo=1, | |||
StartOrStop=2 | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9304); | |||
var hex = JT808Serializer.Serialize(jT808_0x9304).ToHexString(); | |||
Assert.Equal("0102", hex); | |||
} | |||
@@ -50,9 +49,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"LogicChannelNo\":1,\"StartOrStop\":2,\"SkipSerialization\":false}"; | |||
var jT808_0x9304 = JT808Serializer.Deserialize<JT808_0x9304>("0102".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9304), str); | |||
Assert.Equal(1, jT808_0x9304.LogicChannelNo); | |||
Assert.Equal(2, jT808_0x9304.StartOrStop); | |||
} | |||
} | |||
} |
@@ -39,10 +39,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
{ | |||
JT808_0x9305 jT808_0x9305 = new JT808_0x9305() | |||
{ | |||
LogicChannelNo=1, | |||
StartOrStop=2 | |||
LogicChannelNo=1, | |||
StartOrStop=2 | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9305); | |||
var hex = JT808Serializer.Serialize(jT808_0x9305).ToHexString(); | |||
Assert.Equal("0102", hex); | |||
} | |||
@@ -50,9 +49,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"LogicChannelNo\":1,\"StartOrStop\":2,\"SkipSerialization\":false}"; | |||
var jT808_0x9305 = JT808Serializer.Deserialize<JT808_0x9305>("0102".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9305), str); | |||
Assert.Equal(1, jT808_0x9305.LogicChannelNo); | |||
Assert.Equal(2, jT808_0x9305.StartOrStop); | |||
} | |||
} | |||
} |
@@ -39,10 +39,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
{ | |||
JT808_0x9306 jT808_0x9306 = new JT808_0x9306() | |||
{ | |||
LogicChannelNo=1, | |||
ChangeMultipleControl=2 | |||
LogicChannelNo=1, | |||
ChangeMultipleControl=2 | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9306); | |||
var hex = JT808Serializer.Serialize(jT808_0x9306).ToHexString(); | |||
Assert.Equal("0102", hex); | |||
} | |||
@@ -50,9 +49,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"LogicChannelNo\":1,\"ChangeMultipleControl\":2,\"SkipSerialization\":false}"; | |||
var jT808_0x9306 = JT808Serializer.Deserialize<JT808_0x9306>("0102".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9306), str); | |||
Assert.Equal(1, jT808_0x9306.LogicChannelNo); | |||
Assert.Equal(2, jT808_0x9306.ChangeMultipleControl); | |||
} | |||
} | |||
} |
@@ -1,4 +1,5 @@ | |||
using JT808.Protocol.Extensions.JT1078.MessageBody; | |||
using JT808.Protocol.Extensions.JT1078.Enums; | |||
using JT808.Protocol.Extensions.JT1078.MessageBody; | |||
using JT808.Protocol.Interfaces; | |||
using Microsoft.Extensions.DependencyInjection; | |||
using System; | |||
@@ -13,25 +14,37 @@ namespace JT808.Protocol.Extensions.JT1078 | |||
public static IJT808Builder AddJT1078Configure(this IJT808Builder jT808Builder) | |||
{ | |||
jT808Builder.Config.Register(Assembly.GetExecutingAssembly()); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x1003>(0x1003, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x1005>(0x1005, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x1205>(0x1205, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x1206>(0x1206, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9003>(0x9003, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9101>(0x9101, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9102>(0x9102, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9105>(0x9105, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9201>(0x9201, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9202>(0x9202, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9205>(0x9205, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9206>(0x9206, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9207>(0x9207, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9301>(0x9301, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9302>(0x9302, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9303>(0x9303, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9304>(0x9304, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9305>(0x9305, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9306>(0x9306, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x1003>((ushort)JT808_JT1078_MsgId.终端上传音视频属性, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x1005>((ushort)JT808_JT1078_MsgId.终端上传乘客流量, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x1205>((ushort)JT808_JT1078_MsgId.终端上传音视频资源列表, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x1206>((ushort)JT808_JT1078_MsgId.文件上传完成通知, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9003>((ushort)JT808_JT1078_MsgId.查询终端音视频属性, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9101>((ushort)JT808_JT1078_MsgId.实时音视频传输请求, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9102>((ushort)JT808_JT1078_MsgId.音视频实时传输控制, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9105>((ushort)JT808_JT1078_MsgId.实时音视频传输状态通知, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9201>((ushort)JT808_JT1078_MsgId.平台下发远程录像回放请求, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9202>((ushort)JT808_JT1078_MsgId.平台下发远程录像回放控制, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9205>((ushort)JT808_JT1078_MsgId.查询资源列表, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9206>((ushort)JT808_JT1078_MsgId.文件上传指令, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9207>((ushort)JT808_JT1078_MsgId.文件上传控制, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9301>((ushort)JT808_JT1078_MsgId.云台旋转, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9302>((ushort)JT808_JT1078_MsgId.云台调整焦距控制, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9303>((ushort)JT808_JT1078_MsgId.云台调整光圈控制, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9304>((ushort)JT808_JT1078_MsgId.云台雨刷控制, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9305>((ushort)JT808_JT1078_MsgId.红外补光控制, ""); | |||
jT808Builder.Config.MsgIdFactory.SetMap<JT808_0x9306>((ushort)JT808_JT1078_MsgId.云台变倍控制, ""); | |||
jT808Builder.Config.JT808_0X0200_Factory.JT808LocationAttachMethod.Add(JT808_JT1078_Constants.JT808_0X0200_0x14, typeof(JT808_0x0200_0x14)); | |||
jT808Builder.Config.JT808_0X0200_Factory.JT808LocationAttachMethod.Add(JT808_JT1078_Constants.JT808_0X0200_0x15, typeof(JT808_0x0200_0x15)); | |||
jT808Builder.Config.JT808_0X0200_Factory.JT808LocationAttachMethod.Add(JT808_JT1078_Constants.JT808_0X0200_0x16, typeof(JT808_0x0200_0x16)); | |||
jT808Builder.Config.JT808_0X0200_Factory.JT808LocationAttachMethod.Add(JT808_JT1078_Constants.JT808_0X0200_0x17, typeof(JT808_0x0200_0x17)); | |||
jT808Builder.Config.JT808_0X0200_Factory.JT808LocationAttachMethod.Add(JT808_JT1078_Constants.JT808_0X0200_0x18, typeof(JT808_0x0200_0x18)); | |||
jT808Builder.Config.JT808_0X8103_Factory.ParamMethods.Add(JT808_JT1078_Constants.JT808_0X8103_0x0075, typeof(JT808_0x8103_0x0075)); | |||
jT808Builder.Config.JT808_0X8103_Factory.ParamMethods.Add(JT808_JT1078_Constants.JT808_0X8103_0x0076, typeof(JT808_0x8103_0x0076)); | |||
jT808Builder.Config.JT808_0X8103_Factory.ParamMethods.Add(JT808_JT1078_Constants.JT808_0X8103_0x0077, typeof(JT808_0x8103_0x0077)); | |||
jT808Builder.Config.JT808_0X8103_Factory.ParamMethods.Add(JT808_JT1078_Constants.JT808_0X8103_0x0079, typeof(JT808_0x8103_0x0079)); | |||
jT808Builder.Config.JT808_0X8103_Factory.ParamMethods.Add(JT808_JT1078_Constants.JT808_0X8103_0x007A, typeof(JT808_0x8103_0x007A)); | |||
jT808Builder.Config.JT808_0X8103_Factory.ParamMethods.Add(JT808_JT1078_Constants.JT808_0X8103_0x007B, typeof(JT808_0x8103_0x007B)); | |||
jT808Builder.Config.JT808_0X8103_Factory.ParamMethods.Add(JT808_JT1078_Constants.JT808_0X8103_0x007C, typeof(JT808_0x8103_0x007C)); | |||
return jT808Builder; | |||
} | |||
} | |||
@@ -0,0 +1,29 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT808.Protocol.Extensions.JT1078.Enums | |||
{ | |||
public enum JT808_JT1078_MsgId:ushort | |||
{ | |||
终端上传音视频属性 = 0x1003, | |||
终端上传乘客流量 = 0x1005, | |||
终端上传音视频资源列表 = 0x1205, | |||
文件上传完成通知 = 0x1206, | |||
查询终端音视频属性 = 0x9003, | |||
实时音视频传输请求 = 0x9101, | |||
音视频实时传输控制 = 0x9102, | |||
实时音视频传输状态通知 = 0x9105, | |||
平台下发远程录像回放请求 = 0x9201, | |||
平台下发远程录像回放控制 = 0x9202, | |||
查询资源列表 = 0x9205, | |||
文件上传指令 = 0x9206, | |||
文件上传控制 = 0x9207, | |||
云台旋转 = 0x9301, | |||
云台调整焦距控制 = 0x9302, | |||
云台调整光圈控制 = 0x9303, | |||
云台雨刷控制 = 0x9304, | |||
红外补光控制 = 0x9305, | |||
云台变倍控制 = 0x9306 | |||
} | |||
} |
@@ -18,11 +18,11 @@ namespace JT808.Protocol.Extensions.JT1078.Formatters | |||
jT808_0X8103_0X0077.ParamLength = reader.ReadByte(); | |||
jT808_0X8103_0X0077.NeedSetChannelTotal = reader.ReadByte(); | |||
if (jT808_0X8103_0X0077.NeedSetChannelTotal > 0) { | |||
jT808_0X8103_0X0077.jT808_0X8103_0X0077_SignalChannels = new List<JT808_0x8103_0x0077_SignalChannel>(); | |||
jT808_0X8103_0X0077.SignalChannels = new List<JT808_0x8103_0x0077_SignalChannel>(); | |||
var formatter = config.GetMessagePackFormatter<JT808_0x8103_0x0077_SignalChannel>(); | |||
for (int i = 0; i < jT808_0X8103_0X0077.NeedSetChannelTotal; i++) | |||
{ | |||
jT808_0X8103_0X0077.jT808_0X8103_0X0077_SignalChannels.Add(formatter.Deserialize(ref reader, config)); | |||
jT808_0X8103_0X0077.SignalChannels.Add(formatter.Deserialize(ref reader, config)); | |||
} | |||
} | |||
return jT808_0X8103_0X0077; | |||
@@ -33,9 +33,9 @@ namespace JT808.Protocol.Extensions.JT1078.Formatters | |||
writer.WriteUInt32(value.ParamId); | |||
writer.Skip(1,out var position); | |||
writer.WriteByte(value.NeedSetChannelTotal); | |||
if (value.jT808_0X8103_0X0077_SignalChannels.Any()) { | |||
if (value.SignalChannels.Any()) { | |||
var formatter = config.GetMessagePackFormatter<JT808_0x8103_0x0077_SignalChannel>(); | |||
foreach (var signalChannel in value.jT808_0X8103_0X0077_SignalChannels) | |||
foreach (var signalChannel in value.SignalChannels) | |||
{ | |||
formatter.Serialize(ref writer, signalChannel, config); | |||
} | |||
@@ -19,7 +19,7 @@ namespace JT808.Protocol.Extensions.JT1078.Formatters | |||
jT808_0x8103_0x007C.SleepWakeMode = reader.ReadByte(); | |||
jT808_0x8103_0x007C.WakeConditionType = reader.ReadByte(); | |||
jT808_0x8103_0x007C.TimerWakeDaySet = reader.ReadByte(); | |||
jT808_0x8103_0x007C.jT808_0X8103_0X007C_TimerWakeDayParamter = config.GetMessagePackFormatter<JT808_0x8103_0x007C_TimerWakeDayParamter>().Deserialize(ref reader, config); | |||
jT808_0x8103_0x007C.TimerWakeDayParamter = config.GetMessagePackFormatter<JT808_0x8103_0x007C_TimerWakeDayParamter>().Deserialize(ref reader, config); | |||
return jT808_0x8103_0x007C; | |||
} | |||
@@ -30,7 +30,7 @@ namespace JT808.Protocol.Extensions.JT1078.Formatters | |||
writer.WriteByte(value.SleepWakeMode); | |||
writer.WriteByte(value.WakeConditionType); | |||
writer.WriteByte(value.TimerWakeDaySet); | |||
config.GetMessagePackFormatter<JT808_0x8103_0x007C_TimerWakeDayParamter>().Serialize(ref writer, value.jT808_0X8103_0X007C_TimerWakeDayParamter, config); | |||
config.GetMessagePackFormatter<JT808_0x8103_0x007C_TimerWakeDayParamter>().Serialize(ref writer, value.TimerWakeDayParamter, config); | |||
writer.WriteByteReturn((byte)(writer.GetCurrentPosition()-position-1),position); | |||
} | |||
} | |||
@@ -15,12 +15,16 @@ | |||
<licenseUrl>https://github.com/SmallChi/JT1078/blob/master/LICENSE</licenseUrl> | |||
<license>https://github.com/SmallChi/JT1078/blob/master/LICENSE</license> | |||
<GeneratePackageOnBuild>false</GeneratePackageOnBuild> | |||
<Version>1.0.0</Version> | |||
<Version>1.0.1</Version> | |||
<PackageLicenseFile>LICENSE</PackageLicenseFile> | |||
</PropertyGroup> | |||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> | |||
<DocumentationFile>\JT808.Protocol.Extensions.JT1078\JT808.Protocol.Extensions.JT1078.xml</DocumentationFile> | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<PackageReference Include="JT808" Version="2.1.0" /> | |||
<PackageReference Include="JT808" Version="2.1.2" /> | |||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="2.2.0" /> | |||
</ItemGroup> | |||
@@ -0,0 +1,59 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT808.Protocol.Extensions.JT1078 | |||
{ | |||
public static class JT808_JT1078_Constants | |||
{ | |||
/// <summary> | |||
/// 视频相关报警 | |||
/// </summary> | |||
public const byte JT808_0X0200_0x14 = 0x14; | |||
/// <summary> | |||
/// 视频信号丢失报警状态 | |||
/// </summary> | |||
public const byte JT808_0X0200_0x15 = 0x15; | |||
/// <summary> | |||
/// 视频信号遮挡报警状态 | |||
/// </summary> | |||
public const byte JT808_0X0200_0x16 = 0x16; | |||
/// <summary> | |||
/// 存储器故障报警状态 | |||
/// </summary> | |||
public const byte JT808_0X0200_0x17 = 0x17; | |||
/// <summary> | |||
/// 异常驾驶行为报警详细描述 | |||
/// </summary> | |||
public const byte JT808_0X0200_0x18 = 0x18; | |||
/// <summary> | |||
/// 音视频参数设置 | |||
/// </summary> | |||
public const uint JT808_0X8103_0x0075 = 0x0075; | |||
/// <summary> | |||
/// 音视频通道列表设置 | |||
/// </summary> | |||
public const uint JT808_0X8103_0x0076 = 0x0076; | |||
/// <summary> | |||
/// 单独视频通道参数设置 | |||
/// </summary> | |||
public const uint JT808_0X8103_0x0077 = 0x0077; | |||
/// <summary> | |||
/// 特殊报警录像参数设置 | |||
/// </summary> | |||
public const uint JT808_0X8103_0x0079 = 0x0079; | |||
/// <summary> | |||
/// 视频相关报警屏蔽字 | |||
/// </summary> | |||
public const uint JT808_0X8103_0x007A = 0x007A; | |||
/// <summary> | |||
/// 图像分析报警参数设置 | |||
/// </summary> | |||
public const uint JT808_0X8103_0x007B = 0x007B; | |||
/// <summary> | |||
/// 终端休眠模式唤醒设置 | |||
/// </summary> | |||
public const uint JT808_0X8103_0x007C = 0x007C; | |||
} | |||
} |
@@ -9,7 +9,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||
/// 0x0200_0x14 | |||
/// </summary> | |||
[JT808Formatter(typeof(JT808_0x0200_0x14_Formatter))] | |||
public class JT808_0x0200_0x14 : JT808_0x0200_CustomBodyBase | |||
public class JT808_0x0200_0x14 : JT808_0x0200_BodyBase | |||
{ | |||
public override byte AttachInfoId { get; set; } = 0x14; | |||
/// <summary> | |||
@@ -9,7 +9,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||
/// 0x0200_0x15 | |||
/// </summary> | |||
[JT808Formatter(typeof(JT808_0x0200_0x15_Formatter))] | |||
public class JT808_0x0200_0x15 : JT808_0x0200_CustomBodyBase | |||
public class JT808_0x0200_0x15 : JT808_0x0200_BodyBase | |||
{ | |||
public override byte AttachInfoId { get; set; } = 0x15; | |||
/// <summary> | |||
@@ -9,7 +9,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||
/// 0x0200_0x16 | |||
/// </summary> | |||
[JT808Formatter(typeof(JT808_0x0200_0x16_Formatter))] | |||
public class JT808_0x0200_0x16 : JT808_0x0200_CustomBodyBase | |||
public class JT808_0x0200_0x16 : JT808_0x0200_BodyBase | |||
{ | |||
public override byte AttachInfoId { get; set; } = 0x16; | |||
/// <summary> | |||
@@ -9,7 +9,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||
/// 0x0200_0x17 | |||
/// </summary> | |||
[JT808Formatter(typeof(JT808_0x0200_0x17_Formatter))] | |||
public class JT808_0x0200_0x17 : JT808_0x0200_CustomBodyBase | |||
public class JT808_0x0200_0x17 : JT808_0x0200_BodyBase | |||
{ | |||
public override byte AttachInfoId { get; set; } = 0x17; | |||
/// <summary> | |||
@@ -9,7 +9,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||
/// 0x0200_0x18 | |||
/// </summary> | |||
[JT808Formatter(typeof(JT808_0x0200_0x18_Formatter))] | |||
public class JT808_0x0200_0x18 : JT808_0x0200_CustomBodyBase | |||
public class JT808_0x0200_0x18 : JT808_0x0200_BodyBase | |||
{ | |||
public override byte AttachInfoId { get; set; } = 0x18; | |||
/// <summary> | |||
@@ -9,7 +9,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||
/// 0x8103_0x0075 | |||
/// </summary> | |||
[JT808Formatter(typeof(JT808_0x8103_0x0075_Formatter))] | |||
public class JT808_0x8103_0x0075 : JT808_0x8103_CustomBodyBase | |||
public class JT808_0x8103_0x0075 : JT808_0x8103_BodyBase | |||
{ | |||
public override uint ParamId { get; set; } = 0x0075; | |||
/// <summary> | |||
@@ -11,7 +11,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||
/// 0x8103_0x0076 | |||
/// </summary> | |||
[JT808Formatter(typeof(JT808_0x8103_0x0076_Formatter))] | |||
public class JT808_0x8103_0x0076 : JT808_0x8103_CustomBodyBase | |||
public class JT808_0x8103_0x0076 : JT808_0x8103_BodyBase | |||
{ | |||
public override uint ParamId { get; set; } = 0x0076; | |||
/// <summary> | |||
@@ -10,7 +10,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||
/// 0x8103_0x0077 | |||
/// </summary> | |||
[JT808Formatter(typeof(JT808_0x8103_0x0077_Formatter))] | |||
public class JT808_0x8103_0x0077 : JT808_0x8103_CustomBodyBase | |||
public class JT808_0x8103_0x0077 : JT808_0x8103_BodyBase | |||
{ | |||
public override uint ParamId { get; set; } = 0x0077; | |||
/// <summary> | |||
@@ -22,6 +22,6 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||
/// </summary> | |||
public byte NeedSetChannelTotal { get; set; } | |||
public List<JT808_0x8103_0x0077_SignalChannel> jT808_0X8103_0X0077_SignalChannels { get; set; } | |||
public List<JT808_0x8103_0x0077_SignalChannel> SignalChannels { get; set; } | |||
} | |||
} |
@@ -10,7 +10,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||
/// 0x8103_0x0079 | |||
/// </summary> | |||
[JT808Formatter(typeof(JT808_0x8103_0x0079_Formatter))] | |||
public class JT808_0x8103_0x0079 : JT808_0x8103_CustomBodyBase | |||
public class JT808_0x8103_0x0079 : JT808_0x8103_BodyBase | |||
{ | |||
public override uint ParamId { get; set; } = 0x0079; | |||
/// <summary> | |||
@@ -10,7 +10,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||
/// 0x8103_0x007A | |||
/// </summary> | |||
[JT808Formatter(typeof(JT808_0x8103_0x007A_Formatter))] | |||
public class JT808_0x8103_0x007A : JT808_0x8103_CustomBodyBase | |||
public class JT808_0x8103_0x007A : JT808_0x8103_BodyBase | |||
{ | |||
public override uint ParamId { get; set; } = 0x007A; | |||
/// <summary> | |||
@@ -10,7 +10,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||
/// 0x8103_0x007B | |||
/// </summary> | |||
[JT808Formatter(typeof(JT808_0x8103_0x007B_Formatter))] | |||
public class JT808_0x8103_0x007B : JT808_0x8103_CustomBodyBase | |||
public class JT808_0x8103_0x007B : JT808_0x8103_BodyBase | |||
{ | |||
public override uint ParamId { get; set; } = 0x007B; | |||
/// <summary> | |||
@@ -10,7 +10,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||
/// 0x8103_0x007C | |||
/// </summary> | |||
[JT808Formatter(typeof(JT808_0x8103_0x007C_Formatter))] | |||
public class JT808_0x8103_0x007C : JT808_0x8103_CustomBodyBase | |||
public class JT808_0x8103_0x007C : JT808_0x8103_BodyBase | |||
{ | |||
public override uint ParamId { get; set; } = 0x007C; | |||
/// <summary> | |||
@@ -32,6 +32,6 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody | |||
/// <summary> | |||
/// 日定时唤醒参数列表 | |||
/// </summary> | |||
public JT808_0x8103_0x007C_TimerWakeDayParamter jT808_0X8103_0X007C_TimerWakeDayParamter { get; set; } | |||
public JT808_0x8103_0x007C_TimerWakeDayParamter TimerWakeDayParamter { get; set; } | |||
} | |||
} |
@@ -27,26 +27,21 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test1() | |||
{ | |||
var PlateFormIds = new byte[11]; | |||
var AuthorizeCode1s = new byte[64]; | |||
var AuthorizeCode2s= new byte[64]; | |||
PlateFormIds = Enumerable.Range(0, 11).Select(s => (byte)s).ToArray(); | |||
AuthorizeCode1s = Enumerable.Range(0, 64).Select(s => (byte)s).ToArray(); | |||
AuthorizeCode2s = Enumerable.Range(0, 64).Select(s => (byte)s).ToArray(); | |||
var PlateFormIds = Enumerable.Range(0, 11).Select(s => (byte)s).ToArray(); | |||
var AuthorizeCode1s = Enumerable.Range(0, 64).Select(s => (byte)s).ToArray(); | |||
var AuthorizeCode2s = Enumerable.Range(0, 64).Select(s => (byte)s).ToArray(); | |||
JT809_JT1078_0x1700 jT809_JT1078_0x1700 = new JT809_JT1078_0x1700() | |||
{ | |||
VehicleNo="粤B12345", | |||
VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, | |||
SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.时效口令上报消息, | |||
SubBodies= new JT809_JT1078_0x1700_0x1701() { | |||
PlateFormId= PlateFormIds, | |||
AuthorizeCode1= AuthorizeCode1s, | |||
VehicleNo="粤B12345", | |||
VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, | |||
SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.时效口令上报消息, | |||
SubBodies= new JT809_JT1078_0x1700_0x1701() { | |||
PlateFormId= PlateFormIds, | |||
AuthorizeCode1= AuthorizeCode1s, | |||
AuthorizeCode2= AuthorizeCode2s | |||
} | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1700); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x1700).ToHexString(); | |||
Assert.Equal("D4C1423132333435000000000000000000000000000217010000008B000102030405060708090A000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F", hex); | |||
} | |||
@@ -54,9 +49,17 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":5889,\"DataLength\":139,\"SubBodies\":{\"PlateFormId\":\"AAECAwQFBgcICQo=\",\"AuthorizeCode1\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw==\",\"AuthorizeCode2\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw==\"}}"; | |||
var PlateFormIds = Enumerable.Range(0, 11).Select(s => (byte)s).ToArray(); | |||
var AuthorizeCode1s = Enumerable.Range(0, 64).Select(s => (byte)s).ToArray(); | |||
var AuthorizeCode2s = Enumerable.Range(0, 64).Select(s => (byte)s).ToArray(); | |||
var jT809_JT1078_0x1700 = JT809Serializer.Deserialize<JT809_JT1078_0x1700>("D4C1423132333435000000000000000000000000000217010000008B000102030405060708090A000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1700), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x1700.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1700.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.时效口令上报消息, jT809_JT1078_0x1700.SubBusinessType); | |||
var jT809_JT1078_0x1700_0x1701 = jT809_JT1078_0x1700.SubBodies as JT809_JT1078_0x1700_0x1701; | |||
Assert.Equal(PlateFormIds, jT809_JT1078_0x1700_0x1701.PlateFormId); | |||
Assert.Equal(AuthorizeCode1s, jT809_JT1078_0x1700_0x1701.AuthorizeCode1); | |||
Assert.Equal(AuthorizeCode2s, jT809_JT1078_0x1700_0x1701.AuthorizeCode2); | |||
} | |||
[Fact] | |||
@@ -69,7 +72,6 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
SubBusinessType = (ushort)JT809_JT1078_SubBusinessType.时效口令请求消息, | |||
SubBodies = new JT809_JT1078_0x1700_0x1702() | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1700); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x1700).ToHexString(); | |||
Assert.Equal("D4C14231323334350000000000000000000000000002170200000000", hex); | |||
} | |||
@@ -77,9 +79,10 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test4() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":5890,\"DataLength\":0,\"SubBodies\":{}}"; | |||
var jT809_JT1078_0x1700 = JT809Serializer.Deserialize<JT809_JT1078_0x1700>("D4C14231323334350000000000000000000000000002170200000000".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1700), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x1700.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1700.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.时效口令请求消息, jT809_JT1078_0x1700.SubBusinessType); | |||
} | |||
} | |||
} |
@@ -29,16 +29,15 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
{ | |||
JT809_JT1078_0x1800 jT809_JT1078_0x1800 = new JT809_JT1078_0x1800() | |||
{ | |||
VehicleNo="粤B12345", | |||
VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, | |||
VehicleNo="粤B12345", | |||
VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, | |||
SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.实时音视频请求应答消息, | |||
SubBodies= new JT809_JT1078_0x1800_0x1801() { | |||
ServerIp="127.0.0.1", | |||
ServerPort=8080, | |||
Result=1 | |||
SubBodies= new JT809_JT1078_0x1800_0x1801() { | |||
ServerIp="127.0.0.1", | |||
ServerPort=8080, | |||
Result=1 | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1800); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x1800).ToHexString(); | |||
Assert.Equal("D4C142313233343500000000000000000000000000021801000000230100000000000000000000000000000000000000000000003132372E302E302E311F90", hex); | |||
} | |||
@@ -46,9 +45,14 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":6145,\"DataLength\":35,\"SubBodies\":{\"Result\":1,\"ServerIp\":\"127.0.0.1\",\"ServerPort\":8080}}"; | |||
var jT809_JT1078_0x1800 = JT809Serializer.Deserialize<JT809_JT1078_0x1800>("D4C142313233343500000000000000000000000000021801000000230100000000000000000000000000000000000000000000003132372E302E302E311F90".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1800), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x1800.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1800.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.实时音视频请求应答消息, jT809_JT1078_0x1800.SubBusinessType); | |||
var jT809_JT1078_0x1800_0x1801 = jT809_JT1078_0x1800.SubBodies as JT809_JT1078_0x1800_0x1801; | |||
Assert.Equal("127.0.0.1", jT809_JT1078_0x1800_0x1801.ServerIp); | |||
Assert.Equal(8080, jT809_JT1078_0x1800_0x1801.ServerPort); | |||
Assert.Equal(1, jT809_JT1078_0x1800_0x1801.Result); | |||
} | |||
[Fact] | |||
@@ -63,7 +67,6 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
Result=1 | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1800); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x1800).ToHexString(); | |||
Assert.Equal("D4C1423132333435000000000000000000000000000218020000000101", hex); | |||
} | |||
@@ -71,9 +74,12 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test4() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":6146,\"DataLength\":1,\"SubBodies\":{\"Result\":1}}"; | |||
var jT809_JT1078_0x1800 = JT809Serializer.Deserialize<JT809_JT1078_0x1800>("D4C1423132333435000000000000000000000000000218020000000101".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1800), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x1800.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1800.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.主动请求停止实时音视频传输应答消息, jT809_JT1078_0x1800.SubBusinessType); | |||
var jT809_JT1078_0x1800_0x1802 = jT809_JT1078_0x1800.SubBodies as JT809_JT1078_0x1800_0x1802; | |||
Assert.Equal(1, jT809_JT1078_0x1800_0x1802.Result); | |||
} | |||
} | |||
} |
@@ -33,7 +33,7 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
}); | |||
} | |||
public object jT809_JT1078_0x1800 { get; private set; } | |||
[Fact] | |||
public void Test1() | |||
@@ -47,29 +47,28 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
ItemNum=2, | |||
ItemList=new List<JT809_JT1078_0x1900_Record> { | |||
new JT809_JT1078_0x1900_Record{ | |||
AlarmType=1, | |||
AlarmType=1, | |||
AVItemType=2, | |||
ChannelId=3, | |||
EndTime=Convert.ToDateTime("2019-07-16 10:10:10"), | |||
FileSize=4, | |||
MemType=5, | |||
StartTime=Convert.ToDateTime("2019-07-15 10:10:10"), | |||
StreamType=6 | |||
ChannelId=3, | |||
FileSize=4, | |||
MemType=5, | |||
StartTime=Convert.ToDateTime("2019-07-15 10:10:10"), | |||
EndTime=Convert.ToDateTime("2019-07-16 10:10:10"), | |||
StreamType=6 | |||
}, | |||
new JT809_JT1078_0x1900_Record{ | |||
AlarmType=11, | |||
AlarmType=11, | |||
AVItemType=21, | |||
ChannelId=31, | |||
EndTime=Convert.ToDateTime("2019-06-16 10:10:10"), | |||
FileSize=41, | |||
MemType=51, | |||
StartTime=Convert.ToDateTime("2019-06-15 10:10:10"), | |||
StreamType=61 | |||
ChannelId=31, | |||
FileSize=41, | |||
MemType=51, | |||
StartTime=Convert.ToDateTime("2019-06-15 10:10:10"), | |||
EndTime=Convert.ToDateTime("2019-06-16 10:10:10"), | |||
StreamType=61 | |||
} | |||
} | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1900); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x1900).ToHexString(); | |||
Assert.Equal("D4C142313233343500000000000000000000000000021901000000440000000203000000005D2BE082000000005D2D32020000000000000001020605000000041F000000005D045382000000005D05A502000000000000000B153D3300000029", hex); | |||
} | |||
@@ -77,9 +76,30 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":6401,\"DataLength\":68,\"SubBodies\":{\"ItemNum\":2,\"ItemList\":[{\"ChannelId\":3,\"StartTime\":\"2019-07-15 10:10:10\",\"EndTime\":\"2019-07-16 10:10:10\",\"AlarmType\":1,\"AVItemType\":2,\"StreamType\":6,\"MemType\":5,\"FileSize\":4},{\"ChannelId\":31,\"StartTime\":\"2019-06-15 10:10:10\",\"EndTime\":\"2019-06-16 10:10:10\",\"AlarmType\":11,\"AVItemType\":21,\"StreamType\":61,\"MemType\":51,\"FileSize\":41}]}}"; | |||
var jT809_JT1078_0x1900 = JT809Serializer.Deserialize<JT809_JT1078_0x1900>("D4C142313233343500000000000000000000000000021901000000440000000203000000005D2BE082000000005D2D32020000000000000001020605000000041F000000005D045382000000005D05A502000000000000000B153D3300000029".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1900), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x1900.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1900.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.主动上传音视频资源目录信息消息, jT809_JT1078_0x1900.SubBusinessType); | |||
var jT809_JT1078_0x1900_0x1901 = jT809_JT1078_0x1900.SubBodies as JT809_JT1078_0x1900_0x1901; | |||
Assert.Equal(2u, jT809_JT1078_0x1900_0x1901.ItemNum); | |||
Assert.Equal(1u, jT809_JT1078_0x1900_0x1901.ItemList[0].AlarmType); | |||
Assert.Equal(2, jT809_JT1078_0x1900_0x1901.ItemList[0].AVItemType); | |||
Assert.Equal(3, jT809_JT1078_0x1900_0x1901.ItemList[0].ChannelId); | |||
Assert.Equal(4u, jT809_JT1078_0x1900_0x1901.ItemList[0].FileSize); | |||
Assert.Equal(5, jT809_JT1078_0x1900_0x1901.ItemList[0].MemType); | |||
Assert.Equal(Convert.ToDateTime("2019-07-15 10:10:10"), jT809_JT1078_0x1900_0x1901.ItemList[0].StartTime); | |||
Assert.Equal(Convert.ToDateTime("2019-07-16 10:10:10"), jT809_JT1078_0x1900_0x1901.ItemList[0].EndTime); | |||
Assert.Equal(6, jT809_JT1078_0x1900_0x1901.ItemList[0].StreamType); | |||
Assert.Equal(11u, jT809_JT1078_0x1900_0x1901.ItemList[1].AlarmType); | |||
Assert.Equal(21, jT809_JT1078_0x1900_0x1901.ItemList[1].AVItemType); | |||
Assert.Equal(31, jT809_JT1078_0x1900_0x1901.ItemList[1].ChannelId); | |||
Assert.Equal(41u, jT809_JT1078_0x1900_0x1901.ItemList[1].FileSize); | |||
Assert.Equal(51, jT809_JT1078_0x1900_0x1901.ItemList[1].MemType); | |||
Assert.Equal(Convert.ToDateTime("2019-06-15 10:10:10"), jT809_JT1078_0x1900_0x1901.ItemList[1].StartTime); | |||
Assert.Equal(Convert.ToDateTime("2019-06-16 10:10:10"), jT809_JT1078_0x1900_0x1901.ItemList[1].EndTime); | |||
Assert.Equal(61, jT809_JT1078_0x1900_0x1901.ItemList[1].StreamType); | |||
} | |||
[Fact] | |||
@@ -91,33 +111,32 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
VehicleColor = Protocol.Enums.JT809VehicleColorType.黄色, | |||
SubBusinessType = (ushort)JT809_JT1078_SubBusinessType.查询音视频资源目录应答消息, | |||
SubBodies = new JT809_JT1078_0x1900_0x1902() { | |||
Result=1, | |||
ItemNum=2, | |||
ItemList = new List<JT809_JT1078_0x1900_Record> { | |||
new JT809_JT1078_0x1900_Record{ | |||
AlarmType=1, | |||
AVItemType=2, | |||
ChannelId=3, | |||
EndTime=Convert.ToDateTime("2019-07-16 10:10:10"), | |||
FileSize=4, | |||
MemType=5, | |||
StartTime=Convert.ToDateTime("2019-07-15 10:10:10"), | |||
StreamType=6 | |||
}, | |||
new JT809_JT1078_0x1900_Record{ | |||
AlarmType=11, | |||
AVItemType=21, | |||
ChannelId=31, | |||
EndTime=Convert.ToDateTime("2019-06-16 10:10:10"), | |||
FileSize=41, | |||
MemType=51, | |||
StartTime=Convert.ToDateTime("2019-06-15 10:10:10"), | |||
StreamType=61 | |||
} | |||
Result=1, | |||
ItemNum=2, | |||
ItemList = new List<JT809_JT1078_0x1900_Record> { | |||
new JT809_JT1078_0x1900_Record{ | |||
AlarmType=1, | |||
AVItemType=2, | |||
ChannelId=3, | |||
FileSize=4, | |||
MemType=5, | |||
StartTime=Convert.ToDateTime("2019-07-15 10:10:10"), | |||
EndTime=Convert.ToDateTime("2019-07-16 10:10:10"), | |||
StreamType=6 | |||
}, | |||
new JT809_JT1078_0x1900_Record{ | |||
AlarmType=11, | |||
AVItemType=21, | |||
ChannelId=31, | |||
FileSize=41, | |||
MemType=51, | |||
StartTime=Convert.ToDateTime("2019-06-15 10:10:10"), | |||
EndTime=Convert.ToDateTime("2019-06-16 10:10:10"), | |||
StreamType=61 | |||
} | |||
} | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1900); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x1900).ToHexString(); | |||
Assert.Equal("D4C14231323334350000000000000000000000000002190200000045010000000203000000005D2BE082000000005D2D32020000000000000001020605000000041F000000005D045382000000005D05A502000000000000000B153D3300000029", hex); | |||
} | |||
@@ -125,9 +144,31 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test4() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":6402,\"DataLength\":69,\"SubBodies\":{\"Result\":1,\"ItemNum\":2,\"ItemList\":[{\"ChannelId\":3,\"StartTime\":\"2019-07-15 10:10:10\",\"EndTime\":\"2019-07-16 10:10:10\",\"AlarmType\":1,\"AVItemType\":2,\"StreamType\":6,\"MemType\":5,\"FileSize\":4},{\"ChannelId\":31,\"StartTime\":\"2019-06-15 10:10:10\",\"EndTime\":\"2019-06-16 10:10:10\",\"AlarmType\":11,\"AVItemType\":21,\"StreamType\":61,\"MemType\":51,\"FileSize\":41}]}}"; | |||
var jT809_JT1078_0x1900 = JT809Serializer.Deserialize<JT809_JT1078_0x1900>("D4C14231323334350000000000000000000000000002190200000045010000000203000000005D2BE082000000005D2D32020000000000000001020605000000041F000000005D045382000000005D05A502000000000000000B153D3300000029".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1900), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x1900.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1900.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.查询音视频资源目录应答消息, jT809_JT1078_0x1900.SubBusinessType); | |||
var jT809_JT1078_0x1900_0x1902 = jT809_JT1078_0x1900.SubBodies as JT809_JT1078_0x1900_0x1902; | |||
Assert.Equal(2u, jT809_JT1078_0x1900_0x1902.ItemNum); | |||
Assert.Equal(1, jT809_JT1078_0x1900_0x1902.Result); | |||
Assert.Equal(1u, jT809_JT1078_0x1900_0x1902.ItemList[0].AlarmType); | |||
Assert.Equal(2, jT809_JT1078_0x1900_0x1902.ItemList[0].AVItemType); | |||
Assert.Equal(3, jT809_JT1078_0x1900_0x1902.ItemList[0].ChannelId); | |||
Assert.Equal(4u, jT809_JT1078_0x1900_0x1902.ItemList[0].FileSize); | |||
Assert.Equal(5, jT809_JT1078_0x1900_0x1902.ItemList[0].MemType); | |||
Assert.Equal(Convert.ToDateTime("2019-07-15 10:10:10"), jT809_JT1078_0x1900_0x1902.ItemList[0].StartTime); | |||
Assert.Equal(Convert.ToDateTime("2019-07-16 10:10:10"), jT809_JT1078_0x1900_0x1902.ItemList[0].EndTime); | |||
Assert.Equal(6, jT809_JT1078_0x1900_0x1902.ItemList[0].StreamType); | |||
Assert.Equal(11u, jT809_JT1078_0x1900_0x1902.ItemList[1].AlarmType); | |||
Assert.Equal(21, jT809_JT1078_0x1900_0x1902.ItemList[1].AVItemType); | |||
Assert.Equal(31, jT809_JT1078_0x1900_0x1902.ItemList[1].ChannelId); | |||
Assert.Equal(41u, jT809_JT1078_0x1900_0x1902.ItemList[1].FileSize); | |||
Assert.Equal(51, jT809_JT1078_0x1900_0x1902.ItemList[1].MemType); | |||
Assert.Equal(Convert.ToDateTime("2019-06-15 10:10:10"), jT809_JT1078_0x1900_0x1902.ItemList[1].StartTime); | |||
Assert.Equal(Convert.ToDateTime("2019-06-16 10:10:10"), jT809_JT1078_0x1900_0x1902.ItemList[1].EndTime); | |||
Assert.Equal(61, jT809_JT1078_0x1900_0x1902.ItemList[1].StreamType); | |||
} | |||
} | |||
} |
@@ -40,17 +40,16 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
{ | |||
JT809_JT1078_0x1A00 jT809_JT1078_0x1A00 = new JT809_JT1078_0x1A00() | |||
{ | |||
VehicleNo="粤B12345", | |||
VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, | |||
SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.远程录像回放请求应答消息, | |||
VehicleNo="粤B12345", | |||
VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, | |||
SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.远程录像回放请求应答消息, | |||
SubBodies= new JT809_JT1078_0x1A00_0x1A01() | |||
{ | |||
Result=1, | |||
ServerIp="127.0.0.1", | |||
ServerPort=8080 | |||
Result=1, | |||
ServerIp="127.0.0.1", | |||
ServerPort=8080 | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1A00); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x1A00).ToHexString(); | |||
Assert.Equal("D4C142313233343500000000000000000000000000021A010000002300000000000000000000000000000000000000000000003132372E302E302E311F9001", hex); | |||
} | |||
@@ -58,9 +57,14 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":6657,\"DataLength\":35,\"SubBodies\":{\"ServerIp\":\"127.0.0.1\",\"ServerPort\":8080,\"Result\":1}}"; | |||
var jT809_JT1078_0x1A00 = JT809Serializer.Deserialize<JT809_JT1078_0x1A00>("D4C142313233343500000000000000000000000000021A010000002300000000000000000000000000000000000000000000003132372E302E302E311F9001".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1A00), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x1A00.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1A00.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.远程录像回放请求应答消息, jT809_JT1078_0x1A00.SubBusinessType); | |||
var jT809_JT1078_0x1A00_0x1A01 = jT809_JT1078_0x1A00.SubBodies as JT809_JT1078_0x1A00_0x1A01; | |||
Assert.Equal(1, jT809_JT1078_0x1A00_0x1A01.Result); | |||
Assert.Equal("127.0.0.1", jT809_JT1078_0x1A00_0x1A01.ServerIp); | |||
Assert.Equal(8080, jT809_JT1078_0x1A00_0x1A01.ServerPort); | |||
} | |||
[Fact] | |||
@@ -75,7 +79,6 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
Result=1 | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1A00); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x1A00).ToHexString(); | |||
Assert.Equal("D4C142313233343500000000000000000000000000021A020000000101", hex); | |||
} | |||
@@ -83,9 +86,12 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test4() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":6658,\"DataLength\":1,\"SubBodies\":{\"Result\":1}}"; | |||
var jT809_JT1078_0x1A00 = JT809Serializer.Deserialize<JT809_JT1078_0x1A00>("D4C142313233343500000000000000000000000000021A020000000101".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1A00), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x1A00.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1A00.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.远程录像回放控制应答消息, jT809_JT1078_0x1A00.SubBusinessType); | |||
var jT809_JT1078_0x1A00_0x1A02 = jT809_JT1078_0x1A00.SubBodies as JT809_JT1078_0x1A00_0x1A02; | |||
Assert.Equal(1, jT809_JT1078_0x1A00_0x1A02.Result); | |||
} | |||
} | |||
} |
@@ -40,16 +40,15 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
{ | |||
JT809_JT1078_0x1B00 jT809_JT1078_0x1B00 = new JT809_JT1078_0x1B00() | |||
{ | |||
VehicleNo="粤B12345", | |||
VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, | |||
SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.远程录像下载请求应答消息, | |||
VehicleNo="粤B12345", | |||
VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, | |||
SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.远程录像下载请求应答消息, | |||
SubBodies= new JT809_JT1078_0x1B00_0x1B01() | |||
{ | |||
Result=1, | |||
SessionId=2 | |||
Result=1, | |||
SessionId=2 | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1B00); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x1B00).ToHexString(); | |||
Assert.Equal("D4C142313233343500000000000000000000000000021B0100000003010002", hex); | |||
} | |||
@@ -57,9 +56,13 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":6913,\"DataLength\":3,\"SubBodies\":{\"Result\":1,\"SessionId\":2}}"; | |||
var jT809_JT1078_0x1B00 = JT809Serializer.Deserialize<JT809_JT1078_0x1B00>("D4C142313233343500000000000000000000000000021B0100000003010002".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1B00), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x1B00.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1B00.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.远程录像下载请求应答消息, jT809_JT1078_0x1B00.SubBusinessType); | |||
var jT809_JT1078_0x1B00_0x1B01 = jT809_JT1078_0x1B00.SubBodies as JT809_JT1078_0x1B00_0x1B01; | |||
Assert.Equal(1, jT809_JT1078_0x1B00_0x1B01.Result); | |||
Assert.Equal(2, jT809_JT1078_0x1B00_0x1B01.SessionId); | |||
} | |||
[Fact] | |||
@@ -71,16 +74,15 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
VehicleColor = Protocol.Enums.JT809VehicleColorType.黄色, | |||
SubBusinessType = (ushort)JT809_JT1078_SubBusinessType.远程录像下载通知消息, | |||
SubBodies = new JT809_JT1078_0x1B00_0x1B02() { | |||
Result=1, | |||
UserName="tk", | |||
Result=1, | |||
UserName="tk", | |||
SessionId=2, | |||
ServerIp="127.0.0.1", | |||
FilePath="D://123/456", | |||
Password="tk123456", | |||
TcpPort=8080 | |||
ServerIp="127.0.0.1", | |||
FilePath="D://123/456", | |||
Password="tk123456", | |||
TcpPort=8080 | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1B00); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x1B00).ToHexString(); | |||
Assert.Equal("D4C142313233343500000000000000000000000000021B020000013401000200000000000000000000000000000000000000000000003132372E302E302E311F900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000746B0000000000000000000000000000746B313233343536000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000443A2F2F3132332F343536", hex); | |||
} | |||
@@ -88,9 +90,18 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test4() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":6914,\"DataLength\":308,\"SubBodies\":{\"Result\":1,\"SessionId\":2,\"ServerIp\":\"127.0.0.1\",\"TcpPort\":8080,\"UserName\":\"tk\",\"Password\":\"tk123456\",\"FilePath\":\"D://123/456\"}}"; | |||
var jT809_JT1078_0x1B00 = JT809Serializer.Deserialize<JT809_JT1078_0x1B00>("D4C142313233343500000000000000000000000000021B020000013401000200000000000000000000000000000000000000000000003132372E302E302E311F900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000746B0000000000000000000000000000746B313233343536000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000443A2F2F3132332F343536".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1B00), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x1B00.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1B00.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.远程录像下载通知消息, jT809_JT1078_0x1B00.SubBusinessType); | |||
var jT809_JT1078_0x1B00_0x1B02 = jT809_JT1078_0x1B00.SubBodies as JT809_JT1078_0x1B00_0x1B02; | |||
Assert.Equal(1, jT809_JT1078_0x1B00_0x1B02.Result); | |||
Assert.Equal("tk", jT809_JT1078_0x1B00_0x1B02.UserName); | |||
Assert.Equal(2, jT809_JT1078_0x1B00_0x1B02.SessionId); | |||
Assert.Equal("127.0.0.1", jT809_JT1078_0x1B00_0x1B02.ServerIp); | |||
Assert.Equal("D://123/456", jT809_JT1078_0x1B00_0x1B02.FilePath); | |||
Assert.Equal("tk123456", jT809_JT1078_0x1B00_0x1B02.Password); | |||
Assert.Equal(8080, jT809_JT1078_0x1B00_0x1B02.TcpPort); | |||
} | |||
[Fact] | |||
@@ -106,7 +117,6 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
Result = 1 | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1B00); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x1B00).ToHexString(); | |||
Assert.Equal("D4C142313233343500000000000000000000000000021B030000000101", hex); | |||
} | |||
@@ -114,9 +124,12 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test6() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":6915,\"DataLength\":1,\"SubBodies\":{\"Result\":1}}"; | |||
var jT809_JT1078_0x1B00 = JT809Serializer.Deserialize<JT809_JT1078_0x1B00>("D4C142313233343500000000000000000000000000021B030000000101".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1B00), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x1B00.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1B00.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.远程录像下载控制应答消息, jT809_JT1078_0x1B00.SubBusinessType); | |||
var jT809_JT1078_0x1B00_0x1B03 = jT809_JT1078_0x1B00.SubBodies as JT809_JT1078_0x1B00_0x1B03; | |||
Assert.Equal(1, jT809_JT1078_0x1B00_0x1B03.Result); | |||
} | |||
} | |||
} |
@@ -29,12 +29,11 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
{ | |||
JT809_JT1078_0x9700 jT809_JT1078_0x9700 = new JT809_JT1078_0x9700() | |||
{ | |||
VehicleNo="粤B12345", | |||
VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, | |||
VehicleNo="粤B12345", | |||
VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, | |||
SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.时效口令请求应答消息, | |||
SubBodies= new JT809_JT1078_0x9700_0x9702() | |||
SubBodies= new JT809_JT1078_0x9700_0x9702() | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9700); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x9700).ToHexString(); | |||
Assert.Equal("D4C14231323334350000000000000000000000000002970200000000", hex); | |||
} | |||
@@ -42,9 +41,10 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":38658,\"DataLength\":0,\"SubBodies\":{}}"; | |||
var jT809_JT1078_0x9700 = JT809Serializer.Deserialize<JT809_JT1078_0x9700>("D4C14231323334350000000000000000000000000002970200000000".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9700), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x9700.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9700.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.时效口令请求应答消息, jT809_JT1078_0x9700.SubBusinessType); | |||
} | |||
} | |||
} |
@@ -28,20 +28,19 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
public void Test1() | |||
{ | |||
var GnssDatas = Enumerable.Range(0, 36).Select(m => (byte)m).ToArray(); | |||
var AuthorizeCodes = Enumerable.Range(0, 64).Select(m => (byte)m).ToArray(); | |||
var AuthorizeCodes = Enumerable.Range(0, 64).Select(m => (byte)m).ToArray(); | |||
JT809_JT1078_0x9800 jT809_JT1078_0x9800 = new JT809_JT1078_0x9800() | |||
{ | |||
VehicleNo="粤B12345", | |||
VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, | |||
VehicleNo="粤B12345", | |||
VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, | |||
SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.实时音视频请求消息, | |||
SubBodies= new JT809_JT1078_0x9800_0x9801() { | |||
AVitemType=1, | |||
ChannelId=2, | |||
GnssData= GnssDatas, | |||
AuthorizeCode= AuthorizeCodes | |||
SubBodies= new JT809_JT1078_0x9800_0x9801() { | |||
AVitemType=1, | |||
ChannelId=2, | |||
GnssData= GnssDatas, | |||
AuthorizeCode= AuthorizeCodes | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9800); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x9800).ToHexString(); | |||
Assert.Equal("D4C142313233343500000000000000000000000000029801000000660201000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223", hex); | |||
} | |||
@@ -49,9 +48,17 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":38913,\"DataLength\":102,\"SubBodies\":{\"ChannelId\":2,\"AVitemType\":1,\"AuthorizeCode\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw==\",\"GnssData\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj\"}}"; | |||
var GnssDatas = Enumerable.Range(0, 36).Select(m => (byte)m).ToArray(); | |||
var AuthorizeCodes = Enumerable.Range(0, 64).Select(m => (byte)m).ToArray(); | |||
var jT809_JT1078_0x1900 = JT809Serializer.Deserialize<JT809_JT1078_0x1900>("D4C142313233343500000000000000000000000000029801000000660201000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1900), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x1900.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1900.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.实时音视频请求消息, jT809_JT1078_0x1900.SubBusinessType); | |||
var jT809_JT1078_0x9800_0x9801 = jT809_JT1078_0x1900.SubBodies as JT809_JT1078_0x9800_0x9801; | |||
Assert.Equal(1, jT809_JT1078_0x9800_0x9801.AVitemType); | |||
Assert.Equal(2, jT809_JT1078_0x9800_0x9801.ChannelId); | |||
Assert.Equal(GnssDatas, jT809_JT1078_0x9800_0x9801.GnssData); | |||
Assert.Equal(AuthorizeCodes, jT809_JT1078_0x9800_0x9801.AuthorizeCode); | |||
} | |||
[Fact] | |||
@@ -64,10 +71,9 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
SubBusinessType = (ushort)JT809_JT1078_SubBusinessType.主动请求停止实时音视频传输消息, | |||
SubBodies = new JT809_JT1078_0x9800_0x9802() { | |||
ChannelId=1, | |||
AVitemType=2 | |||
AVitemType=2 | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9800); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x9800).ToHexString(); | |||
Assert.Equal("D4C142313233343500000000000000000000000000029802000000020102", hex); | |||
} | |||
@@ -75,9 +81,13 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test4() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":38914,\"DataLength\":2,\"SubBodies\":{\"ChannelId\":1,\"AVitemType\":2}}"; | |||
var jT809_JT1078_0x9800 = JT809Serializer.Deserialize<JT809_JT1078_0x9800>("D4C142313233343500000000000000000000000000029802000000020102".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9800), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x9800.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9800.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.主动请求停止实时音视频传输消息, jT809_JT1078_0x9800.SubBusinessType); | |||
var jT809_JT1078_0x9800_0x9802 = jT809_JT1078_0x9800.SubBodies as JT809_JT1078_0x9800_0x9802; | |||
Assert.Equal(1, jT809_JT1078_0x9800_0x9802.ChannelId); | |||
Assert.Equal(2, jT809_JT1078_0x9800_0x9802.AVitemType); | |||
} | |||
} | |||
} |
@@ -40,15 +40,14 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
{ | |||
JT809_JT1078_0x9900 jT809_JT1078_0x9900 = new JT809_JT1078_0x9900() | |||
{ | |||
VehicleNo="粤B12345", | |||
VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, | |||
VehicleNo="粤B12345", | |||
VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, | |||
SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.主动上传音视频资源目录信息应答消息, | |||
SubBodies= new JT809_JT1078_0x9900_0x9901() { | |||
SubBodies= new JT809_JT1078_0x9900_0x9901() { | |||
Result=1, | |||
ItemNumber=2 | |||
ItemNumber=2 | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9900); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x9900).ToHexString(); | |||
Assert.Equal("D4C142313233343500000000000000000000000000029901000000020102", hex); | |||
} | |||
@@ -56,9 +55,13 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":39169,\"DataLength\":2,\"SubBodies\":{\"Result\":1,\"ItemNumber\":2}}"; | |||
var jT809_JT1078_0x9900 = JT809Serializer.Deserialize<JT809_JT1078_0x9900>("D4C142313233343500000000000000000000000000029901000000020102".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9900), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x9900.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9900.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.主动上传音视频资源目录信息应答消息, jT809_JT1078_0x9900.SubBusinessType); | |||
var jT809_JT1078_0x9900_0x9901 = jT809_JT1078_0x9900.SubBodies as JT809_JT1078_0x9900_0x9901; | |||
Assert.Equal(1, jT809_JT1078_0x9900_0x9901.Result); | |||
Assert.Equal(2, jT809_JT1078_0x9900_0x9901.ItemNumber); | |||
} | |||
[Fact] | |||
@@ -75,15 +78,14 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
ChannelId = 1, | |||
AlarmType = 2, | |||
AVItemType = 3, | |||
EndTime = Convert.ToDateTime("2017-07-16 10:10:10"), | |||
MemType = 4, | |||
StartTime = Convert.ToDateTime("2017-07-15 10:10:10"), | |||
StreamType=5, | |||
AuthorizeCode= AuthorizeCodes, | |||
GnssData= GnssDatas | |||
EndTime = Convert.ToDateTime("2017-07-16 10:10:10"), | |||
StreamType =5, | |||
AuthorizeCode= AuthorizeCodes, | |||
GnssData= GnssDatas | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9900); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x9900).ToHexString(); | |||
Assert.Equal("D4C1423132333435000000000000000000000000000299020000008001000000005969798200000000596ACB020000000000000002030504000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223", hex); | |||
} | |||
@@ -91,9 +93,22 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test4() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":39170,\"DataLength\":128,\"SubBodies\":{\"ChannelId\":1,\"StartTime\":\"2017-07-15 10:10:10\",\"EndTime\":\"2017-07-16 10:10:10\",\"AlarmType\":2,\"AVItemType\":3,\"StreamType\":5,\"MemType\":4,\"AuthorizeCode\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw==\",\"GnssData\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj\"}}"; | |||
var GnssDatas = Enumerable.Range(0, 36).Select(m => (byte)m).ToArray(); | |||
var AuthorizeCodes = Enumerable.Range(0, 64).Select(m => (byte)m).ToArray(); | |||
var jT809_JT1078_0x9900 = JT809Serializer.Deserialize<JT809_JT1078_0x9900>("D4C1423132333435000000000000000000000000000299020000008001000000005969798200000000596ACB020000000000000002030504000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9900), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x9900.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9900.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.查询音视频资源目录请求消息, jT809_JT1078_0x9900.SubBusinessType); | |||
var jT809_JT1078_0x9900_0x9902 = jT809_JT1078_0x9900.SubBodies as JT809_JT1078_0x9900_0x9902; | |||
Assert.Equal(1, jT809_JT1078_0x9900_0x9902.ChannelId); | |||
Assert.Equal(2u, jT809_JT1078_0x9900_0x9902.AlarmType); | |||
Assert.Equal(3, jT809_JT1078_0x9900_0x9902.AVItemType); | |||
Assert.Equal(4, jT809_JT1078_0x9900_0x9902.MemType); | |||
Assert.Equal(Convert.ToDateTime("2017-07-15 10:10:10"), jT809_JT1078_0x9900_0x9902.StartTime); | |||
Assert.Equal(Convert.ToDateTime("2017-07-16 10:10:10"), jT809_JT1078_0x9900_0x9902.EndTime); | |||
Assert.Equal(5, jT809_JT1078_0x9900_0x9902.StreamType); | |||
Assert.Equal(AuthorizeCodes, jT809_JT1078_0x9900_0x9902.AuthorizeCode); | |||
Assert.Equal(GnssDatas, jT809_JT1078_0x9900_0x9902.GnssData); | |||
} | |||
} | |||
} |
@@ -53,10 +53,9 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
MemType = 3, | |||
StreamType = 4, | |||
PlayBackStartTime = Convert.ToDateTime("2017-07-16 10:10:10"), | |||
PlayBackEndTime = Convert.ToDateTime("2017-07-17 10:10:10") | |||
} | |||
PlayBackEndTime = Convert.ToDateTime("2017-07-17 10:10:10") | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9A00); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x9A00).ToHexString(); | |||
Assert.Equal("D4C142313233343500000000000000000000000000029A01000000780201040300000000596ACB0200000000596C1C82000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223", hex); | |||
} | |||
@@ -64,9 +63,21 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":39425,\"DataLength\":120,\"SubBodies\":{\"ChannelId\":2,\"AVItemType\":1,\"StreamType\":4,\"MemType\":3,\"PlayBackStartTime\":\"2017-07-16 10:10:10\",\"PlayBackEndTime\":\"2017-07-17 10:10:10\",\"AuthorizeCode\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw==\",\"GnssData\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj\"}}"; | |||
var GnssDatas = Enumerable.Range(0, 36).Select(m => (byte)m).ToArray(); | |||
var AuthorizeCodes = Enumerable.Range(0, 64).Select(m => (byte)m).ToArray(); | |||
var jT809_JT1078_0x9A00 = JT809Serializer.Deserialize<JT809_JT1078_0x9A00>("D4C142313233343500000000000000000000000000029A01000000780201040300000000596ACB0200000000596C1C82000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9A00), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x9A00.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9A00.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.远程录像回放请求消息, jT809_JT1078_0x9A00.SubBusinessType); | |||
var jT809_JT1078_0x9A00_0x9A01 = jT809_JT1078_0x9A00.SubBodies as JT809_JT1078_0x9A00_0x9A01; | |||
Assert.Equal(AuthorizeCodes, jT809_JT1078_0x9A00_0x9A01.AuthorizeCode); | |||
Assert.Equal(GnssDatas, jT809_JT1078_0x9A00_0x9A01.GnssData); | |||
Assert.Equal(1,jT809_JT1078_0x9A00_0x9A01.AVItemType); | |||
Assert.Equal(2,jT809_JT1078_0x9A00_0x9A01.ChannelId); | |||
Assert.Equal(3,jT809_JT1078_0x9A00_0x9A01.MemType); | |||
Assert.Equal(4,jT809_JT1078_0x9A00_0x9A01.StreamType); | |||
Assert.Equal(Convert.ToDateTime("2017-07-16 10:10:10"), jT809_JT1078_0x9A00_0x9A01.PlayBackStartTime); | |||
Assert.Equal(Convert.ToDateTime("2017-07-17 10:10:10"), jT809_JT1078_0x9A00_0x9A01.PlayBackEndTime); | |||
} | |||
[Fact] | |||
@@ -80,12 +91,11 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
VehicleColor = Protocol.Enums.JT809VehicleColorType.黄色, | |||
SubBusinessType = (ushort)JT809_JT1078_SubBusinessType.远程录像回放控制消息, | |||
SubBodies = new JT809_JT1078_0x9A00_0x9A02() { | |||
ControlType=1, | |||
DateTime= Convert.ToDateTime("2017-07-17 10:10:10"), | |||
FastTime=1 | |||
ControlType=1, | |||
DateTime= Convert.ToDateTime("2017-07-17 10:10:10"), | |||
FastTime=1 | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9A00); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x9A00).ToHexString(); | |||
Assert.Equal("D4C142313233343500000000000000000000000000029A020000000A010100000000596C1C82", hex); | |||
} | |||
@@ -93,9 +103,14 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test4() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":39426,\"DataLength\":10,\"SubBodies\":{\"ControlType\":1,\"FastTime\":1,\"DateTime\":\"2017-07-17 10:10:10\"}}"; | |||
var jT809_JT1078_0x9A00 = JT809Serializer.Deserialize<JT809_JT1078_0x9A00>("D4C142313233343500000000000000000000000000029A020000000A010100000000596C1C82".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9A00), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x9A00.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9A00.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.远程录像回放控制消息, jT809_JT1078_0x9A00.SubBusinessType); | |||
var jT809_JT1078_0x9A00_0x9A02 = jT809_JT1078_0x9A00.SubBodies as JT809_JT1078_0x9A00_0x9A02; | |||
Assert.Equal(1, jT809_JT1078_0x9A00_0x9A02.ControlType); | |||
Assert.Equal(Convert.ToDateTime("2017-07-17 10:10:10"), jT809_JT1078_0x9A00_0x9A02.DateTime); | |||
Assert.Equal(1, jT809_JT1078_0x9A00_0x9A02.FastTime); | |||
} | |||
} | |||
} |
@@ -52,13 +52,12 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
ChannelId = 2, | |||
MemType = 3, | |||
StreamType = 4, | |||
StartTime = Convert.ToDateTime("2017-07-16 10:10:10"), | |||
EndTime = Convert.ToDateTime("2017-07-17 10:10:10"), | |||
AlarmType=5, | |||
FileSize=6 | |||
} | |||
StartTime = Convert.ToDateTime("2017-07-16 10:10:10"), | |||
EndTime = Convert.ToDateTime("2017-07-17 10:10:10"), | |||
AlarmType=5, | |||
FileSize=6 | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9B00); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x9B00).ToHexString(); | |||
Assert.Equal("D4C142313233343500000000000000000000000000029B01000000840200000000596ACB0200000000596C1C82000000000000000501040300000006000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223", hex); | |||
} | |||
@@ -66,9 +65,23 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":39681,\"DataLength\":132,\"SubBodies\":{\"ChannelId\":2,\"StartTime\":\"2017-07-16 10:10:10\",\"EndTime\":\"2017-07-17 10:10:10\",\"AlarmType\":5,\"AVItemType\":1,\"StreamType\":4,\"MemType\":3,\"FileSize\":6,\"AuthorizeCode\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw==\",\"GnssData\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj\"}}"; | |||
var GnssDatas = Enumerable.Range(0, 36).Select(m => (byte)m).ToArray(); | |||
var AuthorizeCodes = Enumerable.Range(0, 64).Select(m => (byte)m).ToArray(); | |||
var jT809_JT1078_0x9B00 = JT809Serializer.Deserialize<JT809_JT1078_0x9B00>("D4C142313233343500000000000000000000000000029B01000000840200000000596ACB0200000000596C1C82000000000000000501040300000006000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9B00), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x9B00.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9B00.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.远程录像下载请求消息, jT809_JT1078_0x9B00.SubBusinessType); | |||
var jT809_JT1078_0x9B00_0x9B01 = jT809_JT1078_0x9B00.SubBodies as JT809_JT1078_0x9B00_0x9B01; | |||
Assert.Equal(AuthorizeCodes, jT809_JT1078_0x9B00_0x9B01.AuthorizeCode); | |||
Assert.Equal(GnssDatas, jT809_JT1078_0x9B00_0x9B01.GnssData); | |||
Assert.Equal(1, jT809_JT1078_0x9B00_0x9B01.AVItemType); | |||
Assert.Equal(2, jT809_JT1078_0x9B00_0x9B01.ChannelId); | |||
Assert.Equal(3, jT809_JT1078_0x9B00_0x9B01.MemType); | |||
Assert.Equal(4, jT809_JT1078_0x9B00_0x9B01.StreamType); | |||
Assert.Equal(Convert.ToDateTime("2017-07-16 10:10:10"), jT809_JT1078_0x9B00_0x9B01.StartTime); | |||
Assert.Equal(Convert.ToDateTime("2017-07-17 10:10:10"), jT809_JT1078_0x9B00_0x9B01.EndTime); | |||
Assert.Equal(5u, jT809_JT1078_0x9B00_0x9B01.AlarmType); | |||
Assert.Equal(6u, jT809_JT1078_0x9B00_0x9B01.FileSize); | |||
} | |||
[Fact] | |||
@@ -80,11 +93,10 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
VehicleColor = Protocol.Enums.JT809VehicleColorType.黄色, | |||
SubBusinessType = (ushort)JT809_JT1078_SubBusinessType.远程录像下载完成通知应答消息, | |||
SubBodies = new JT809_JT1078_0x9B00_0x9B02() { | |||
Result=1, | |||
SessionId=2 | |||
Result=1, | |||
SessionId=2 | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9B00); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x9B00).ToHexString(); | |||
Assert.Equal("D4C142313233343500000000000000000000000000029B0200000003010002", hex); | |||
} | |||
@@ -92,9 +104,13 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test4() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":39682,\"DataLength\":3,\"SubBodies\":{\"Result\":1,\"SessionId\":2}}"; | |||
var jT809_JT1078_0x9B00 = JT809Serializer.Deserialize<JT809_JT1078_0x9B00>("D4C142313233343500000000000000000000000000029B0200000003010002".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9B00), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x9B00.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9B00.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.远程录像下载完成通知应答消息, jT809_JT1078_0x9B00.SubBusinessType); | |||
var jT809_JT1078_0x9B00_0x9B02 = jT809_JT1078_0x9B00.SubBodies as JT809_JT1078_0x9B00_0x9B02; | |||
Assert.Equal(1, jT809_JT1078_0x9B00_0x9B02.Result); | |||
Assert.Equal(2, jT809_JT1078_0x9B00_0x9B02.SessionId); | |||
} | |||
[Fact] | |||
public void Test5() | |||
@@ -107,10 +123,9 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
SubBodies = new JT809_JT1078_0x9B00_0x9B03() | |||
{ | |||
Type=1, | |||
SessionId = 2 | |||
SessionId = 2 | |||
} | |||
}; | |||
var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9B00); | |||
var hex = JT809Serializer.Serialize(jT809_JT1078_0x9B00).ToHexString(); | |||
Assert.Equal("D4C142313233343500000000000000000000000000029B0300000003000201", hex); | |||
} | |||
@@ -118,9 +133,13 @@ namespace JT809.Protocol.Extensions.JT1078.Test | |||
[Fact] | |||
public void Test6() | |||
{ | |||
var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":39683,\"DataLength\":3,\"SubBodies\":{\"SessionId\":2,\"Type\":1}}"; | |||
var jT809_JT1078_0x9B00 = JT809Serializer.Deserialize<JT809_JT1078_0x9B00>("D4C142313233343500000000000000000000000000029B0300000003000201".ToHexBytes()); | |||
Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9B00), str); | |||
Assert.Equal("粤B12345", jT809_JT1078_0x9B00.VehicleNo); | |||
Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9B00.VehicleColor); | |||
Assert.Equal((ushort)JT809_JT1078_SubBusinessType.远程录像下载控制消息, jT809_JT1078_0x9B00.SubBusinessType); | |||
var jT809_JT1078_0x9B00_0x9B03 = jT809_JT1078_0x9B00.SubBodies as JT809_JT1078_0x9B00_0x9B03; | |||
Assert.Equal(1, jT809_JT1078_0x9B00_0x9B03.Type); | |||
Assert.Equal(2, jT809_JT1078_0x9B00_0x9B03.SessionId); | |||
} | |||
} | |||
} |