示例#1
0
        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);
        }
示例#2
0
        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();
        }
示例#3
0
        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);
        }