public JT808_0x0705 Deserialize(ReadOnlySpan <byte> bytes, out int readSize, IJT808Config config) { int offset = 0; JT808_0x0705 jT808_0X0705 = new JT808_0x0705 { CanItemCount = JT808BinaryExtensions.ReadUInt16Little(bytes, ref offset), FirstCanReceiveTime = JT808BinaryExtensions.ReadDateTime5Little(bytes, ref offset), CanItems = new List <JT808CanProperty>() }; for (var i = 0; i < jT808_0X0705.CanItemCount; i++) { JT808CanProperty jT808CanProperty = new JT808CanProperty { CanId = JT808BinaryExtensions.ReadBytesLittle(bytes, ref offset, 4) }; if (jT808CanProperty.CanId.Length != 4) { throw new JT808Exception(Enums.JT808ErrorCode.NotEnoughLength, $"{nameof(jT808CanProperty.CanId)}->4"); } jT808CanProperty.CanData = JT808BinaryExtensions.ReadBytesLittle(bytes, ref offset, 8); if (jT808CanProperty.CanData.Length != 8) { throw new JT808Exception(Enums.JT808ErrorCode.NotEnoughLength, $"{nameof(jT808CanProperty.CanData)}->8"); } jT808_0X0705.CanItems.Add(jT808CanProperty); } readSize = offset; return(jT808_0X0705); }
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x0705 value = new JT808_0x0705(); value.CanItemCount = reader.ReadUInt16(); writer.WriteNumber($"[{value.CanItemCount.ReadNumber()}]数据项个数", value.CanItemCount); var dateTimeBuffer = reader.ReadVirtualArray(5).ToArray(); value.FirstCanReceiveTime = reader.ReadDateTime5(); writer.WriteString($"[{dateTimeBuffer.ToHexString()}]CAN总线数据接收时间", value.FirstCanReceiveTime.ToString("HH-mm-ss:fff")); writer.WriteStartArray("CAN总线数据项"); for (var i = 0; i < value.CanItemCount; i++) { writer.WriteStartObject(); JT808CanProperty jT808CanProperty = new JT808CanProperty(); jT808CanProperty.CanId = reader.ReadUInt32(); writer.WriteNumber($"[{ jT808CanProperty.CanId.ReadNumber()}]CAN_ID", jT808CanProperty.CanId); jT808CanProperty.CanData = reader.ReadArray(8).ToArray(); writer.WriteString($"CAN_数据", jT808CanProperty.CanData.ToHexString()); if (jT808CanProperty.CanData.Length != 8) { throw new JT808Exception(Enums.JT808ErrorCode.NotEnoughLength, $"{nameof(jT808CanProperty.CanData)}->8"); } writer.WriteEndObject(); } writer.WriteEndArray(); }
public JT808_0x0705 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x0705 jT808_0X0705 = new JT808_0x0705(); jT808_0X0705.CanItemCount = reader.ReadUInt16(); jT808_0X0705.FirstCanReceiveTime = reader.ReadDateTime5(); jT808_0X0705.CanItems = new List <JT808CanProperty>(); for (var i = 0; i < jT808_0X0705.CanItemCount; i++) { JT808CanProperty jT808CanProperty = new JT808CanProperty(); jT808CanProperty.CanId = reader.ReadUInt32(); jT808CanProperty.CanData = reader.ReadArray(8).ToArray(); if (jT808CanProperty.CanData.Length != 8) { throw new JT808Exception(Enums.JT808ErrorCode.NotEnoughLength, $"{nameof(jT808CanProperty.CanData)}->8"); } jT808_0X0705.CanItems.Add(jT808CanProperty); } return(jT808_0X0705); }