Ver código fonte

1.升级808库

2.修改1078注册
3.增加1078常量
4.增加消息id,扩展消息id说明,增加代码可读性
5.增加代码注释
6.修改单元测试
7.更新808协议库
tags/v1.0.1
smallchi 5 anos atrás
committed by waterliu99
pai
commit
0e21c72fbb
46 arquivos alterados com 858 adições e 509 exclusões
  1. +13
    -13
      src/JT808.Protocol.Extensions.JT1078.Test/JT808LocationAttach.cs
  2. +9
    -3
      src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1003Test.cs
  3. +7
    -6
      src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1005Test.cs
  4. +42
    -25
      src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1205Test.cs
  5. +4
    -5
      src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1206Test.cs
  6. +226
    -156
      src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x8103CustomId.cs
  7. +3
    -4
      src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9105Test.cs
  8. +23
    -13
      src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9201Test.cs
  9. +8
    -7
      src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9202Test.cs
  10. +13
    -9
      src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9205Test.cs
  11. +34
    -19
      src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9206Test.cs
  12. +4
    -5
      src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9207Test.cs
  13. +6
    -6
      src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9301Test.cs
  14. +4
    -5
      src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9302Test.cs
  15. +4
    -5
      src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9303Test.cs
  16. +4
    -5
      src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9304Test.cs
  17. +4
    -5
      src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9305Test.cs
  18. +4
    -5
      src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9306Test.cs
  19. +33
    -20
      src/JT808.Protocol.Extensions.JT1078/DependencyInjectionExtensions.cs
  20. +29
    -0
      src/JT808.Protocol.Extensions.JT1078/Enums/JT808_JT1078_MsgId.cs
  21. +4
    -4
      src/JT808.Protocol.Extensions.JT1078/Formatters/JT808_0x8103_0x0077_Formatter.cs
  22. +2
    -2
      src/JT808.Protocol.Extensions.JT1078/Formatters/JT808_0x8103_0x007C_Formatter.cs
  23. +6
    -2
      src/JT808.Protocol.Extensions.JT1078/JT808.Protocol.Extensions.JT1078.csproj
  24. +59
    -0
      src/JT808.Protocol.Extensions.JT1078/JT808_JT1078_Constants.cs
  25. +1
    -1
      src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x14.cs
  26. +1
    -1
      src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x15.cs
  27. +1
    -1
      src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x16.cs
  28. +1
    -1
      src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x17.cs
  29. +1
    -1
      src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x18.cs
  30. +1
    -1
      src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0075.cs
  31. +1
    -1
      src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0076.cs
  32. +2
    -2
      src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0077.cs
  33. +1
    -1
      src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0079.cs
  34. +1
    -1
      src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x007A.cs
  35. +1
    -1
      src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x007B.cs
  36. +2
    -2
      src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x007C.cs
  37. +23
    -20
      src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1700Test.cs
  38. +18
    -12
      src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1800Test.cs
  39. +85
    -44
      src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1900Test.cs
  40. +18
    -12
      src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1A00Test.cs
  41. +33
    -20
      src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1B00Test.cs
  42. +6
    -6
      src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9700Test.cs
  43. +25
    -15
      src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9800Test.cs
  44. +29
    -14
      src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9900Test.cs
  45. +26
    -11
      src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9A00Test.cs
  46. +36
    -17
      src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9B00Test.cs

+ 13
- 13
src/JT808.Protocol.Extensions.JT1078.Test/JT808LocationAttach.cs Ver arquivo

@@ -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);
}
}
}

+ 9
- 3
src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1003Test.cs Ver arquivo

@@ -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);
}
}
}

+ 7
- 6
src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1005Test.cs Ver arquivo

@@ -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
- 25
src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1205Test.cs Ver arquivo

@@ -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);
}
}
}

+ 4
- 5
src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1206Test.cs Ver arquivo

@@ -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);
}
}
}

+ 226
- 156
src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x8103CustomId.cs Ver arquivo

@@ -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


+ 3
- 4
src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9105Test.cs Ver arquivo

@@ -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);
}
}
}

+ 23
- 13
src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9201Test.cs Ver arquivo

@@ -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);
}
}
}

+ 8
- 7
src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9202Test.cs Ver arquivo

@@ -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);
}
}
}

+ 13
- 9
src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9205Test.cs Ver arquivo

@@ -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);
}
}
}

+ 34
- 19
src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9206Test.cs Ver arquivo

@@ -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);
}
}
}

+ 4
- 5
src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9207Test.cs Ver arquivo

@@ -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);
}
}
}

+ 6
- 6
src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9301Test.cs Ver arquivo

@@ -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);
}
}
}

+ 4
- 5
src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9302Test.cs Ver arquivo

@@ -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);
}
}
}

+ 4
- 5
src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9303Test.cs Ver arquivo

@@ -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);
}
}
}

+ 4
- 5
src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9304Test.cs Ver arquivo

@@ -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);
}
}
}

+ 4
- 5
src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9305Test.cs Ver arquivo

@@ -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);
}
}
}

+ 4
- 5
src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9306Test.cs Ver arquivo

@@ -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);
}
}
}

+ 33
- 20
src/JT808.Protocol.Extensions.JT1078/DependencyInjectionExtensions.cs Ver arquivo

@@ -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;
}
}


+ 29
- 0
src/JT808.Protocol.Extensions.JT1078/Enums/JT808_JT1078_MsgId.cs Ver arquivo

@@ -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
}
}

+ 4
- 4
src/JT808.Protocol.Extensions.JT1078/Formatters/JT808_0x8103_0x0077_Formatter.cs Ver arquivo

@@ -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);
}


+ 2
- 2
src/JT808.Protocol.Extensions.JT1078/Formatters/JT808_0x8103_0x007C_Formatter.cs Ver arquivo

@@ -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);
}
}


+ 6
- 2
src/JT808.Protocol.Extensions.JT1078/JT808.Protocol.Extensions.JT1078.csproj Ver arquivo

@@ -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>



+ 59
- 0
src/JT808.Protocol.Extensions.JT1078/JT808_JT1078_Constants.cs Ver arquivo

@@ -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;
}
}

+ 1
- 1
src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x14.cs Ver arquivo

@@ -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>


+ 1
- 1
src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x15.cs Ver arquivo

@@ -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>


+ 1
- 1
src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x16.cs Ver arquivo

@@ -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>


+ 1
- 1
src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x17.cs Ver arquivo

@@ -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>


+ 1
- 1
src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x18.cs Ver arquivo

@@ -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>


+ 1
- 1
src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0075.cs Ver arquivo

@@ -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>


+ 1
- 1
src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0076.cs Ver arquivo

@@ -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>


+ 2
- 2
src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0077.cs Ver arquivo

@@ -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; }
}
}

+ 1
- 1
src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0079.cs Ver arquivo

@@ -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>


+ 1
- 1
src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x007A.cs Ver arquivo

@@ -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>


+ 1
- 1
src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x007B.cs Ver arquivo

@@ -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>


+ 2
- 2
src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x007C.cs Ver arquivo

@@ -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; }
}
}

+ 23
- 20
src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1700Test.cs Ver arquivo

@@ -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);
}
}
}

+ 18
- 12
src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1800Test.cs Ver arquivo

@@ -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);
}
}
}

+ 85
- 44
src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1900Test.cs Ver arquivo

@@ -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);
}
}
}

+ 18
- 12
src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1A00Test.cs Ver arquivo

@@ -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);
}
}
}

+ 33
- 20
src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1B00Test.cs Ver arquivo

@@ -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);
}
}
}

+ 6
- 6
src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9700Test.cs Ver arquivo

@@ -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);
}
}
}

+ 25
- 15
src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9800Test.cs Ver arquivo

@@ -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);
}
}
}

+ 29
- 14
src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9900Test.cs Ver arquivo

@@ -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);
}
}
}

+ 26
- 11
src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9A00Test.cs Ver arquivo

@@ -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);
}
}
}

+ 36
- 17
src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9B00Test.cs Ver arquivo

@@ -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);
}
}
}

||||||
x
 
000:0
Carregando…
Cancelar
Salvar