English | 中文
- Master base conversion: binary to hexadecimal;
- Master BCD and Hex coding;
- Master all kinds of displacement, xor;
- Master common reflexes;
- Master the use of JObject;
- Command fast CTRL + C, CTRL + V;
- Master the basic usage of Span<T>;
- Master the above skills, you can begin to move bricks.
Head logo | Header | Data volume/Subcontracted data volume | Checksum | tail logo |
---|---|---|---|---|
Begin | JT808Header | JT808Bodies/JT808SubDataBodies | CheckCode | End |
7E | - | - | - | 7E |
Message Id | Message body properties | Protocol Version (2019 version) | Terminal Phone Number | Message sequence number | Total number of message packages (dependent on subcontracting) | Package Number (depends on subcontracting or not) |
---|---|---|---|---|---|---|
MsgId | JT808HeaderMessageBodyProperty | ProtocolVersion | TerminalPhoneNo | MsgNum | PackgeCount | PackageIndex |
Protocol Version (2019 version) | Whether the subcontract | Encryption identification | Body length |
---|---|---|---|
VersionFlag | IsPackge | Encrypt | DataLength |
According to the corresponding message ID:MsgId
Notic:Data content (excluding header and tail identifiers) is escaped
The escape rules are as follows:
- If the data contains character 0x7e, replace it with character 0x7d followed by character 0x02;
- If character 0x7d exists in the data content, replace it with character 0x7d followed by character 0x01.
The cause of the anti-escape:Verify the TCP message boundary for the JT808 protocol.
MsgId 0x0200:Location information reporting
JT808Package jT808Package = new JT808Package();
jT808Package.Header = new JT808Header
{
MsgId = (ushort)JT808.Protocol.Enums.JT808MsgId._0x0200,
ManualMsgNum = 126,
TerminalPhoneNo = "123456789012"
};
JT808_0x0200 jT808_0x0200 = new JT808_0x0200();
jT808_0x0200.AlarmFlag = 1;
jT808_0x0200.Altitude = 40;
jT808_0x0200.GPSTime = DateTime.Parse("2018-10-15 10:10:10");
jT808_0x0200.Lat = 12222222;
jT808_0x0200.Lng = 132444444;
jT808_0x0200.Speed = 60;
jT808_0x0200.Direction = 0;
jT808_0x0200.StatusFlag = 2;
jT808_0x0200.BasicLocationAttachData = new Dictionary<byte, JT808_0x0200_BodyBase>();
jT808_0x0200.BasicLocationAttachData.Add(JT808Constants.JT808_0x0200_0x01, new JT808_0x0200_0x01
{
Mileage = 100
});
jT808_0x0200.BasicLocationAttachData.Add(JT808Constants.JT808_0x0200_0x02, new JT808_0x0200_0x02
{
Oil = 125
});
jT808Package.Bodies = jT808_0x0200;
byte[] data = JT808Serializer.Serialize(jT808Package);
var hex = data.ToHexString();
// output result Hex:
// 7E 02 00 00 26 12 34 56 78 90 12 00 7D 02 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 7D 01 13 7E
1.original package:
7E 02 00 00 26 12 34 56 78 90 12 00 (7D 02) 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 (7D 01) 13 7E
2.Reverse escape
7D 02 ->7E
7D 01 ->7D
After the escape
7E 02 00 00 26 12 34 56 78 90 12 00 7E 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 7D 13 7E
3.disassembly
7E --Head logo
02 00 --data head->message id
00 26 --data head->message body properties
12 34 56 78 90 12 --data head->terminal phone number
00 7E --data head->message sequence number
00 00 00 01 --message body->alarm flag
00 00 00 02 --message body->status flag
00 BA 7F 0E --message body->latitude
07 E4 F1 1C --message body->longitude
00 28 --message body->elevation
00 3C --message body->speed
00 00 --message body->direction
18 10 15 10 10 10 --message body->gps time
01 --message body->additional information->mileage
04 --message body->additional information->length
00 00 00 64 --message body->additional information->mileage value
02 --message body->additional information->oil
02 --message body->additional information->length
00 7D --message body->additional information->oil value
13 --Checksum
7E --tail logo
//1.Convert to a byte array
byte[] bytes = "7E 02 00 00 26 12 34 56 78 90 12 00 7D 02 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 7D 01 13 7E".ToHexBytes();
//2.Deserialize the array
var jT808Package = JT808Serializer.Deserialize(bytes);
//3.packet header
Assert.Equal(Enums.JT808MsgId._0x0200, jT808Package.Header.MsgId);
Assert.Equal(38, jT808Package.Header.MessageBodyProperty.DataLength);
Assert.Equal(126, jT808Package.Header.MsgNum);
Assert.Equal("123456789012", jT808Package.Header.TerminalPhoneNo);
Assert.False(jT808Package.Header.MessageBodyProperty.IsPackge);
Assert.Equal(0, jT808Package.Header.PackageIndex);
Assert.Equal(0, jT808Package.Header.PackgeCount);
Assert.Equal(JT808EncryptMethod.None, jT808Package.Header.MessageBodyProperty.Encrypt);
//4.The packet body
JT808_0x0200 jT808_0x0200 = (JT808_0x0200)jT808Package.Bodies;
Assert.Equal((uint)1, jT808_0x0200.AlarmFlag);
Assert.Equal((uint)40, jT808_0x0200.Altitude);
Assert.Equal(DateTime.Parse("2018-10-15 10:10:10"), jT808_0x0200.GPSTime);
Assert.Equal(12222222, jT808_0x0200.Lat);
Assert.Equal(132444444, jT808_0x0200.Lng);
Assert.Equal(60, jT808_0x0200.Speed);
Assert.Equal(0, jT808_0x0200.Direction);
Assert.Equal((uint)2, jT808_0x0200.StatusFlag);
//4.1.Additional information 1
Assert.Equal(100, ((JT808_0x0200_0x01)jT808_0x0200.BasicLocationAttachData[JT808Constants.JT808_0x0200_0x01]).Mileage);
//4.2.Additional information 2
Assert.Equal(125, ((JT808_0x0200_0x02)jT808_0x0200.BasicLocationAttachData[JT808Constants.JT808_0x0200_0x02]).Oil);
// Create the JT808Package package using the extension method of the message Id
JT808Package jT808Package = Enums.JT808MsgId._0x0200.Create("123456789012",
new JT808_0x0200 {
AlarmFlag = 1,
Altitude = 40,
GPSTime = DateTime.Parse("2018-10-15 10:10:10"),
Lat = 12222222,
Lng = 132444444,
Speed = 60,
Direction = 0,
StatusFlag = 2,
BasicLocationAttachData = new Dictionary<byte, JT808LocationAttachBase>
{
{ JT808Constants.JT808_0x0200_0x01,new JT808_0x0200_0x01{Mileage = 100}},
{ JT808Constants.JT808_0x0200_0x02,new JT808_0x0200_0x02{Oil = 125}}
}
});
byte[] data = JT808Serializer.Serialize(jT808Package);
var hex = data.ToHexString();
//output result hex:
//7E 02 00 00 26 12 34 56 78 90 12 00 01 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 7D 01 6C 7E
// Initial Configuration
IJT808Config DT1JT808Config = new DT1Config();
IJT808Config DT2JT808Config = new DT2Config();
// Register custom message external assemblies
DT1JT808Config.Register(Assembly.GetExecutingAssembly());
// Skip checksum validation
DT1JT808Config.SkipCRCCode = true;
// Add a user-defined message Id based on the device terminal Id
DT1JT808Config.MsgIdFactory.SetMap<DT1Demo6>();
DT1JT808Config.FormatterFactory.SetMap<DT1Demo6>();
DT2JT808Config.MsgIdFactory.SetMap<DT2Demo6>();
DT2JT808Config.FormatterFactory.SetMap<DT2Demo6>();
// Initializes the serialization instance
JT808Serializer DT1JT808Serializer = new JT808Serializer(DT1JT808Config);
JT808Serializer DT2JT808Serializer = new JT808Serializer(DT2JT808Config);
Problems encountered - Additional information about custom locations for multiple devices and protocols
scene: One device vendor corresponds to multiple device types. Different device types may have the same Id of the user-defined location additional information. As a result, the ids of the user-defined additional information conflict and cannot be resolved.
solution:
-
You can make a factory based on the device type to decouple the dependency on the common serializer.
-
You can configure (GlobalConfigBase) based on the device type and bind the corresponding protocol parsers to different GlobalConfigBase instances.
If anyone has another solution, please let me know. Thank you.
scene: When the device uploads multimedia data, due to the large amount of data, it cannot upload at one time, so it adopts the subcontracting method.
solution:
-
The first packet of data is parsed in the usual way;
-
When the second packet comes up, it merges with the SubDataBodies of the first packet;
-
When N packet data comes in, continue as in Step 2.
General Knowledge 1:Since the maximum length of the message body is 10bits (1023 bytes), there is a hard condition that the maximum length cannot be exceeded.
General Knowledge 2:General industry subcontracting is an integer multiple of 256, too much is not good, too little is not good, must be just right.
scene: Because each device vendor is different, the private protocol of the device may use the same message ID as the instruction, causing the platform to fail to resolve the message.
solution: You can configure (GlobalConfigBase) according to the device type and bind the corresponding protocol parser according to the GlobalConfigBase instance.
How to compatibility with the 2019 version.
The latest protocol documentation has been written for compatibility, which is the version identifier at bit 14 in the message body attribute.
-
If the 14th bit is 0, the protocol is the 2011 version.
-
When bit 14 is 1, the protocol is the 2019 version.
Protocol analyzer is also very useful in data anomalies and error correction, always can not rely on 24K krypton eye to observe the data, so you can develop the protocol at the same time to write the protocol analyzer, so that it is convenient for technology or technical support troubleshooting problems, improve efficiency.
Add dashcam serializer, which can either exist alone or be assembled into 808 data packets.
scene1: Some devices, not in accordance with the NATIONAL standard additional information Id, the additional information Id is two bytes, so that there will be repeated additional Id in the reported data, resulting in platform parsing errors.
scene2: Since the length of additional information customized by the equipment manufacturer of Guangdong Standard can be four or four bytes, it needs to be compatible.
scene3: Some devices report two ids with the same additional information. In this case, only one Id can be parsed and the other Id can be discarded in the exception additional information.
Additional Information | Number of additional ID bytes | Number of additional length bytes | Remarks |
---|---|---|---|
JT808_0x0200_CustomBodyBase | 1 BYTE | 1 BYTE | standard |
JT808_0x0200_CustomBodyBase2 | 2 BYTE | 1 BYTE | custom |
JT808_0x0200_CustomBodyBase3 | 2 BYTE | 2 BYTE | custom |
JT808_0x0200_CustomBodyBase4 | 1 BYTE | 4 BYTE | custom |
Notice:The default is the standard to parse, if there is unknown add-on, may not be the correct resolution, it is better to develop according to the protocol document and then register the parser to parse.
scene: On some devices, abnormal positioning data reported by the supplement is inconsistent with the length of the original content, resulting in errors in data parsing of the whole packet. If the device is not upgraded and cannot be changed, the amount of data reported by the supplement can be resolved as much as possible.
scene: Since the device of Yue Biao has extended the 0x8105 terminal control message command parameter of the 2019 version, it needs to be compatible.
scene: Because the protocol library itself may have a message parsing error, or put up PR, but may not be released in time, at this time you need to copy the original message parsing, transform, and then re-register.
scene: Because some vendors do not comply with the requirements, the application uses the 2013 protocol but the version identifier position in the message header is 1, causing the application to believe that the 2019 protocol is used. Parse the error. At this point, you can force parsing to 2013, then fix the version identity and reserialize the message for use by downstream services.
scene: A registration message compatible with the 2011 protocol.
scene: The platform delivers subcontracted data to the equipment.
We can refer to the subcontracting data structure of the equipment in [Example 5], and then to achieve it.
scene: The additional data of the JT/T808 0x0200 standard protocol is explicitly reserved for some additional information ids. Therefore, according to the standard, some device manufacturers use the additional information ids of the standard. Therefore, to resolve the problem, you can refer to the external custom additional information registration method.
scene: Due to access many different equipment vendor's agreement, but each protocol docking and less, think at the same time in a class library under the unified management, then in each manufacturer not conflict using the assembly way of registration is no problem, once has the conflict, then use the assembly way registered will quote Id conflict, The library does not support this way of isolation, so I use [SetMap] to manage this situation.
BenchmarkDotNet v0.14.0, Windows 11 (10.0.22631.4460/23H2/2023Update/SunValley3)
Intel Core i7-8700K CPU 3.70GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores
.NET SDK 9.0.100
[Host] : .NET 9.0.0 (9.0.24.52809), X64 RyuJIT AVX2
Job-PAIVRG : .NET 9.0.0 (9.0.24.52809), X64 RyuJIT AVX2
Platform=AnyCpu Server=False Toolchain=.NET 9.0
Method | Categories | N | Mean | Error | StdDev | Gen0 | Gen1 | Allocated |
---|---|---|---|---|---|---|---|---|
0x0100Serialize | 0x0100Serializer | 100 | 56.59 μs | 0.331 μs | 0.310 μs | 10.8032 | - | 66.41 KB |
0x0100Deserialize | 0x0100Serializer | 100 | 49.57 μs | 0.624 μs | 0.553 μs | 15.8081 | - | 96.88 KB |
0x0100Serialize | 0x0100Serializer | 10000 | 5,443.03 μs | 20.140 μs | 18.839 μs | 1078.1250 | - | 6640.63 KB |
0x0100Deserialize | 0x0100Serializer | 10000 | 5,171.28 μs | 47.999 μs | 44.899 μs | 1578.1250 | - | 9687.51 KB |
0x0100Serialize | 0x0100Serializer | 100000 | 54,690.88 μs | 314.675 μs | 294.347 μs | 10800.0000 | - | 66406.35 KB |
0x0100Deserialize | 0x0100Serializer | 100000 | 49,058.00 μs | 513.922 μs | 480.723 μs | 15727.2727 | - | 96875.09 KB |
0x0200_All_AttachId_Serialize | 0x0200Serializer | 100 | 107.02 μs | 0.674 μs | 0.598 μs | 29.4189 | 0.1221 | 180.47 KB |
0x0200_All_AttachId_Deserialize | 0x0200Serializer | 100 | 103.93 μs | 0.414 μs | 0.367 μs | 38.2080 | 0.2441 | 234.38 KB |
0x0200_All_AttachId_Serialize | 0x0200Serializer | 10000 | 10,739.81 μs | 77.963 μs | 69.112 μs | 2937.5000 | - | 18046.89 KB |
0x0200_All_AttachId_Deserialize | 0x0200Serializer | 10000 | 10,746.98 μs | 82.140 μs | 76.833 μs | 3812.5000 | 15.6250 | 23437.52 KB |
0x0200_All_AttachId_Serialize | 0x0200Serializer | 100000 | 106,682.00 μs | 1,466.321 μs | 1,224.444 μs | 29400.0000 | - | 180468.95 KB |
0x0200_All_AttachId_Deserialize | 0x0200Serializer | 100000 | 104,389.33 μs | 516.581 μs | 483.210 μs | 38200.0000 | 200.0000 | 234375.2 KB |
SN | Message Id | Completion | Unit Test | Message body name | 2019 version | 2011 version |
---|---|---|---|---|---|---|
1 | 0x0001 | √ | √ | Terminal universal reply | ||
2 | 0x8001 | √ | √ | Platform Universal response | ||
3 | 0x0002 | √ | √ | Terminal heart | ||
4 | 0x8003 | √ | √ | Forwarding subcontract request | Is the new | |
5 | 0x0100 | √ | √ | Terminal registration | changed | be modified |
6 | 0x8100 | √ | √ | Terminal registration reply | ||
7 | 0x0003 | √ | √ | Terminal logout | ||
8 | 0x0102 | √ | √ | Terminal authentication | changed | |
9 | 0x8103 | √ | √ | Setting Terminal Parameters | changedAndNew | be modified |
10 | 0x8104 | √ | √ | Querying Terminal Parameters | ||
11 | 0x0104 | √ | √ | Query terminal parameter response | ||
12 | 0x8105 | √ | √ | Terminal control | ||
13 | 0x8106 | √ | √ | Example Query specified terminal parameters | Is the new | |
14 | 0x8107 | √ | The message body is empty | Querying Terminal Properties | Is the new | |
15 | 0x0107 | √ | √ | Query the response of the terminal properties | Is the new | |
16 | 0x8108 | √ | √ | Query terminal properties reply Deliver the terminal upgrade package | Is the new | |
17 | 0x0108 | √ | √ | Terminal upgrade result notification | Is the new | |
18 | 0x0200 | √ | √ | Location information reporting | Add Additional information | be modified |
19 | 0x8201 | √ | √ | Location information query | ||
20 | 0x0201 | √ | √ | Location information query response | ||
21 | 0x8202 | √ | √ | Temporary position tracking control | ||
22 | 0x8203 | √ | √ | Manually confirm the alarm message | Is the new | |
23 | 0x8300 | √ | √ | Text message delivery | changed | be modified |
24 | 0x8301 | √ | √ | Event set | delete | |
25 | 0x0301 | √ | √ | Event report | delete | |
26 | 0x8302 | √ | √ | Questions issued | delete | |
27 | 0x0302 | √ | √ | Question answering | delete | |
28 | 0x8303 | √ | √ | Information on demand menu Settings | delete | |
29 | 0x0303 | √ | √ | Information on demand/Information cancel | delete | |
30 | 0x8304 | √ | √ | Information service | delete | |
31 | 0x8400 | √ | √ | Back to the dial | ||
32 | 0x8401 | √ | √ | Set up a phone book | ||
33 | 0x8500 | √ | √ | Vehicle control | changed | |
34 | 0x0500 | √ | √ | Vehicle control response | ||
35 | 0x8600 | √ | √ | Set the circular area | changed | be modified |
36 | 0x8601 | √ | √ | Delete circular area | ||
37 | 0x8602 | √ | √ | Set rectangle area | changed | |
38 | 0x8603 | √ | √ | Delete rectangular area | ||
39 | 0x8604 | √ | √ | Set polygon region | changed | |
40 | 0x8605 | √ | √ | Delete polygon area | ||
41 | 0x8606 | √ | √ | Set the route | changed | |
42 | 0x8607 | √ | √ | Delete the route | ||
43 | 0x8700 | √ | √ | Drive recorder data acquisition command | be modified | |
44 | 0x0700 | √ | √ | Data upload from driving recorder | ||
45 | 0x8701 | √ | √ | Driving recorder parameters down command | be modified | |
46 | 0x0701 | √ | √ | Electronic waybill reporting | ||
47 | 0x0702 | √ | √ | Collect and report driver identity information | changed | be modified |
48 | 0x8702 | √ | The message body is empty | Report driver identification request | Is the new | |
49 | 0x0704 | √ | √ | Upload location data in batches | changed | |
50 | 0x0705 | √ | √ | CAN bus data upload | changed | |
51 | 0x0800 | √ | √ | Upload multimedia event information | be modified | |
52 | 0x0801 | √ | √ | Multimedia Data upload | changed | be modified |
53 | 0x8800 | √ | √ | Reply to multimedia data upload | be modified | |
54 | 0x8801 | √ | √ | The camera immediately shoots the command | changed | |
55 | 0x0805 | √ | √ | The camera immediately shoots the command reply | changed | |
56 | 0x8802 | √ | √ | Store multimedia data retrieval | ||
57 | 0x0802 | √ | √ | Store multimedia data retrieval replies | be modified | |
58 | 0x8803 | √ | √ | Store multimedia data upload | ||
59 | 0x8804 | √ | √ | Recording Start Command | ||
60 | 0x8805 | √ | √ | Single storage multimedia data retrieval upload command | changed | |
61 | 0x8900 | √ | √ | Data is transmitted through downlink | changed | be modified |
62 | 0x0900 | √ | √ | Data is transparently transmitted upstream | changed | be modified |
63 | 0x0901 | √ | √ | Data compression reporting | ||
64 | 0x8A00 | √ | √ | Platform RSA Public Key | ||
65 | 0x0A00 | √ | √ | Terminal RSA Public Key | ||
66 | 0x8F00~0x8FFF | reserved | reserved | Platform downlink message reserved | ||
67 | 0x0F00~0x0FFF | reserved | reserved | The uplink message on the terminal is reserved | ||
68 | 0x0004 | √ | √ | Queries server time requests | new | |
69 | 0x8004 | √ | √ | Query the server time response | new | |
70 | 0x0005 | √ | √ | The terminal sends the subcontract request | new | |
71 | 0x8204 | √ | √ | Link detection | new | |
72 | 0x8608 | √ | √ | Example Query area or line data | new | |
73 | 0x0608 | √ | √ | Query area or line data reply | new | |
74 | 0xE000~0xEFFF | reserved | reserved | The vendor defines the uplink message | new | |
75 | 0xF000~0xFFFF | reserved | reserved | Vendor defined downlink messages | new |
SN | Message Id | Completion | Unit Test | Message body name |
---|---|---|---|---|
1 | 0x0200_0x14 | √ | √ | Video related alarm |
2 | 0x0200_0x15 | √ | √ | Video signal loss alarm status |
3 | 0x0200_0x16 | √ | √ | Video signal occlusion alarm status |
4 | 0x0200_0x17 | √ | √ | Memory fault alarm status |
5 | 0x0200_0x18 | √ | √ | Abnormal driving behavior alarm detailed description |
6 | 0x8103_0x0075 | √ | √ | Audio and video parameter Settings |
7 | 0x8103_0x0076 | √ | √ | Set the audio and video channel list |
8 | 0x8103_0x0077 | √ | √ | Separate video channel parameter Settings |
9 | 0x8103_0x0079 | √ | √ | Special alarm video parameter setting |
10 | 0x8103_0x007A | √ | √ | Video related alarm masking word |
11 | 0x8103_0x007B | √ | √ | Image analysis alarm parameter setting |
12 | 0x8103_0x007C | √ | √ | Wake up in hibernation mode |
13 | 0x1003 | √ | √ | The terminal uploads audio and video properties |
14 | 0x1005 | √ | √ | Terminal uploads passenger flow |
15 | 0x1205 | √ | √ | The terminal uploads the audio and video resource list |
16 | 0x1206 | √ | √ | Notification of file upload completion |
17 | 0x9003 | √ | √ | Example Query audio and video properties of terminals |
18 | 0x9101 | √ | √ | Real-time audio and video transmission request |
19 | 0x9102 | √ | √ | Audio and video real-time transmission control |
20 | 0x9105 | √ | √ | Real-time audio and video transmission status notification |
21 | 0x9201 | √ | √ | The platform delivers a remote video playback request |
22 | 0x9202 | √ | √ | Platform delivers remote video playback control |
23 | 0x9205 | √ | √ | Querying a Resource List |
24 | 0x9206 | √ | √ | File upload command |
25 | 0x9207 | √ | √ | File Upload Control |
26 | 0x9301 | √ | √ | PTZ rotation |
27 | 0x9302 | √ | √ | PTZ Adjust focal length control |
28 | 0x9303 | √ | √ | PTZ Adjust aperture control |
29 | 0x9304 | √ | √ | PTZ Wiper control |
30 | 0x9305 | √ | √ | Infrared light filling control |
31 | 0x9306 | √ | √ | Head doubling control |
Use DI:
IServiceCollection serviceDescriptors1 = new ServiceCollection();
serviceDescriptors1.AddJT808Configure()
.AddJT1078Configure();
Use Global:
JT808Serializer.Instance.Register(JT808_JT1078_Constants.GetCurrentAssembly());
SN | Message Id | Completion | Unit Test | Message body name |
---|---|---|---|---|
1 | 0x1210 | √ | √ | Alarm attachment information message |
2 | 0x1211 | √ | √ | Uploading File Information |
3 | 0x1212 | √ | √ | Message indicating that file uploading is complete |
4 | 0x9208 | √ | √ | Alarm attachment upload instruction |
5 | 0x9212 | √ | √ | File upload complete reply message |
6 | 0x0200_0x64 | √ | √ | Advanced driver assistance system alarm information |
7 | 0x0200_0x65 | √ | √ | Driver status monitoring system alarm information |
8 | 0x0200_0x66 | √ | √ | Tire pressure monitoring system alarm information |
9 | 0x0200_0x67 | √ | √ | Blind area monitoring system alarm information |
10 | 0x8103_0xF364 | √ | √ | Advanced driver assistance system parameters |
11 | 0x8103_0xF365 | √ | √ | Driver condition monitoring system parameters |
12 | 0x8103_0xF366 | √ | √ | Tire pressure monitoring system parameters |
13 | 0x8103_0xF367 | √ | √ | Blind area monitoring system parameters |
14 | 0x0900 | √ | √ | Upload basic Information |
15 | 0x0900_0xF7 | √ | √ | Operating status of peripheral |
16 | 0x0900_0xF8 | √ | √ | Peripheral system information |
17 | 0x8900 | √ | √ | Querying Basic Information |
18 | 0x8900_0xF7 | √ | √ | Operating status of peripheral |
19 | 0x8900_0xF8 | √ | √ | Peripheral system information |
Use DI:
IServiceCollection serviceDescriptors1 = new ServiceCollection();
serviceDescriptors1.AddJT808Configure()
.AddSuBiaoConfigure();
Use Global:
JT808Serializer.Instance.Register(JT808_SuBiao_Constants.GetCurrentAssembly());
Notice:Based on JT/T808 version 2019
SN | Message Id | Completion | Unit Test | Message body name |
---|---|---|---|---|
1 | 0x1210 | √ | √ | Alarm attachment information message |
2 | 0x1211 | √ | √ | Uploading File Information |
3 | 0x1212 | √ | √ | Message indicating that file uploading is complete |
4 | 0x9208 | √ | √ | Alarm attachment upload instruction |
5 | 0x9212 | √ | √ | File upload complete reply message |
6 | 0x1FC4 | √ | √ | Terminal upgrade progress reported |
7 | 0x0200_0x64 | √ | √ | Advanced driver assistance system alarm information |
8 | 0x0200_0x65 | √ | √ | Driver status monitoring system alarm information |
9 | 0x0200_0x66 | √ | √ | Tire pressure monitoring system alarm information |
10 | 0x0200_0x67 | √ | √ | Blind area monitoring system alarm information |
11 | 0x8103_0xF364 | √ | √ | Advanced driver assistance system parameters |
12 | 0x8103_0xF365 | √ | √ | Driver condition monitoring system parameters |
13 | 0x8103_0xF366 | √ | √ | Tire pressure monitoring system parameters |
14 | 0x8103_0xF367 | √ | √ | Blind area monitoring system parameters |
15 | 0x8103_0xF370 | √ | √ | Smart video protocol version information |
16 | 0x0900 | √ | √ | Upload basic Information |
17 | 0x0900_0xF7 | √ | √ | Operating status of peripheral |
18 | 0x0900_0xF8 | √ | √ | Peripheral system information |
19 | 0x8900 | √ | √ | Querying Basic Information |
20 | 0x8900_0xF7 | √ | √ | Operating status of peripheral |
21 | 0x8900_0xF8 | √ | √ | Peripheral system information |
Use DI:
IServiceCollection serviceDescriptors1 = new ServiceCollection();
serviceDescriptors1.AddJT808Configure()
.AddYueBiaoConfigure();
Use Global:
JT808Serializer.Instance.Register(JT808_YueBiao_Constants.GetCurrentAssembly());