Example #1
0
 public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Up_0x00 value, IJT808Config config)
 {
     writer.WriteBCD(value.StandardYear, 2);
     writer.WriteByte(value.ModifyNumber);
 }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="writer"></param>
        /// <param name="config"></param>
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x8100 value = new JT808_0x8100();

            value.AckMsgNum = reader.ReadUInt16();
            writer.WriteNumber($"[{ value.AckMsgNum.ReadNumber()}]应答流水号", value.AckMsgNum);
            value.JT808TerminalRegisterResult = (JT808TerminalRegisterResult)reader.ReadByte();
            writer.WriteNumber($"[{ ((byte)value.JT808TerminalRegisterResult).ReadNumber()}]结果-{value.JT808TerminalRegisterResult.ToString()}", (byte)value.JT808TerminalRegisterResult);
            // 只有在成功后才有该字段
            if (value.JT808TerminalRegisterResult == JT808TerminalRegisterResult.成功)
            {
                var codeBuffer = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength()).ToArray();
                value.Code = reader.ReadRemainStringContent();
                writer.WriteString($"[{codeBuffer.ToHexString()}]鉴权码", value.Code);
            }
        }
 public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0x001B value, IJT808Config config)
 {
     writer.WriteUInt32(value.ParamId);
     writer.WriteByte(value.ParamLength);
     writer.WriteUInt32(value.ParamValue);
 }
Example #4
0
        /// <summary>
        /// 格式分析
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="writer"></param>
        /// <param name="config"></param>
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            var value = new JT808_0x9101();

            value.ServerIpLength = reader.ReadByte();
            writer.WriteNumber($"[{value.ServerIpLength.ReadNumber()}]服务器IP地址长度", value.ServerIpLength);
            string ipHex = reader.ReadVirtualArray(value.ServerIpLength).ToArray().ToHexString();

            value.ServerIp = reader.ReadString(value.ServerIpLength);
            writer.WriteString($"[{ipHex}]服务器IP地址", value.ServerIp);
            value.TcpPort = reader.ReadUInt16();
            writer.WriteNumber($"[{value.TcpPort.ReadNumber()}]服务器视频通道监听端口号(TCP)", value.TcpPort);
            value.UdpPort = reader.ReadUInt16();
            writer.WriteNumber($"[{value.UdpPort.ReadNumber()}]服务器视频通道监听端口号(UDP)", value.UdpPort);
            value.ChannelNo = reader.ReadByte();
            writer.WriteString($"[{value.ChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelNo));
            value.DataType = reader.ReadByte();
            writer.WriteString($"[{value.DataType.ReadNumber()}]数据类型", DataTypeDisplay(value.DataType));
            value.StreamType = reader.ReadByte();
            writer.WriteString($"[{value.StreamType.ReadNumber()}]码流类型", value.StreamType == 0?"主码流":"子码流");
            string DataTypeDisplay(byte DataType)
            {
                return(DataType switch
                {
                    0 => "音视频",
                    1 => "视频",
                    2 => "双向对讲",
                    3 => "监听",
                    4 => "中心广播",
                    5 => "透传",
                    _ => "未知",
                });
            }
Example #5
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="writer"></param>
 /// <param name="value"></param>
 /// <param name="config"></param>
 public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF367 value, IJT808Config config)
 {
     writer.WriteUInt32(value.ParamId);
     writer.WriteByte(2);
     writer.WriteByte(value.RearApproachAlarmTimeThreshold);
     writer.WriteByte(value.LateralRearApproachAlarmTimeThreshold);
 }
Example #6
0
        public int Serialize(ref byte[] bytes, int offset, JT808_0x8103_0x0012 value, IJT808Config config)
        {
            offset += 1;
            var lenth = JT808BinaryExtensions.WriteStringLittle(bytes, offset, value.ParamValue);

            JT808BinaryExtensions.WriteByteLittle(bytes, offset - 1, (byte)lenth);
            offset += lenth;
            return(offset);
        }
Example #7
0
 public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8400 value, IJT808Config config)
 {
     writer.WriteByte((byte)value.CallBack);
     writer.WriteString(value.PhoneNumber);
 }
Example #8
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="writer"></param>
 /// <param name="value"></param>
 /// <param name="config"></param>
 public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x25 value, IJT808Config config)
 {
     writer.WriteByte(value.AttachInfoId);
     writer.WriteByte(value.AttachInfoLength);
     writer.WriteInt32(value.CarSignalStatus);
 }
Example #9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="writer"></param>
        /// <param name="config"></param>
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x8900_0xF7 value = new JT808_0x8900_0xF7();

            value.USBCount = reader.ReadByte();
            writer.WriteNumber($"[{value.USBCount.ReadNumber()}]外设ID列表总数", value.USBCount);
            if (value.USBCount > 0)
            {
                writer.WriteStartArray("外设ID列表");
                for (int i = 0; i < value.USBCount; i++)
                {
                    writer.WriteStartObject();
                    byte usbId = reader.ReadByte();
                    writer.WriteNumber($"[{usbId.ReadNumber()}]外设ID", usbId);
                    writer.WriteEndObject();
                }
                writer.WriteEndArray();
            }
        }
Example #10
0
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x8203 value = new JT808_0x8203();

            value.AlarmMsgNum = reader.ReadUInt16();
            writer.WriteNumber($"[{ value.AlarmMsgNum.ReadNumber()}]报警消息流水号", value.AlarmMsgNum);
            value.ManualConfirmAlarmType = reader.ReadUInt32();
            writer.WriteNumber($"[{ value.ManualConfirmAlarmType.ReadNumber()}]人工确认报警类型", value.ManualConfirmAlarmType);
        }
Example #11
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="writer"></param>
        /// <param name="config"></param>
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x0200_0x25 value = new JT808_0x0200_0x25();

            value.AttachInfoId = reader.ReadByte();
            writer.WriteNumber($"[{value.AttachInfoId.ReadNumber()}]附加信息Id", value.AttachInfoId);
            value.AttachInfoLength = reader.ReadByte();
            writer.WriteNumber($"[{value.AttachInfoLength.ReadNumber()}]附加信息长度", value.AttachInfoLength);
            value.CarSignalStatus = reader.ReadInt32();
            writer.WriteNumber($"[{value.CarSignalStatus.ReadNumber()}]扩展车辆信号状态位", value.CarSignalStatus);
        }
Example #12
0
 public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8203 value, IJT808Config config)
 {
     writer.WriteUInt16(value.AlarmMsgNum);
     writer.WriteUInt32(value.ManualConfirmAlarmType);
 }
Example #13
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="writer"></param>
 /// <param name="value"></param>
 /// <param name="config"></param>
 public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0x0075 value, IJT808Config config)
 {
     writer.WriteUInt32(value.ParamId);
     writer.WriteByte(value.ParamLength);
     writer.WriteByte(value.RTS_EncodeMode);
     writer.WriteByte(value.RTS_Resolution);
     writer.WriteUInt16(value.RTS_KF_Interval);
     writer.WriteByte(value.RTS_Target_FPS);
     writer.WriteUInt32(value.RTS_Target_CodeRate);
     writer.WriteByte(value.StreamStore_EncodeMode);
     writer.WriteByte(value.StreamStore_Resolution);
     writer.WriteUInt16(value.StreamStore_KF_Interval);
     writer.WriteByte(value.StreamStore_Target_FPS);
     writer.WriteUInt32(value.StreamStore_Target_CodeRate);
     writer.WriteUInt16(value.OSD);
     writer.WriteByte(value.AudioOutputEnabled);
 }
Example #14
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="writer"></param>
        /// <param name="config"></param>
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x8103_0x0075 value = new JT808_0x8103_0x0075();

            value.ParamId = reader.ReadUInt32();
            writer.WriteNumber($"[{value.ParamId.ReadNumber()}]参数 ID", value.ParamId);
            value.ParamLength = reader.ReadByte();
            writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]数据长度", value.ParamLength);
            value.RTS_EncodeMode = reader.ReadByte();
            writer.WriteString($"[{value.RTS_EncodeMode.ReadNumber()}]实时流编码模式", RTS_EncodeModeDisplay(value.RTS_EncodeMode));
            value.RTS_Resolution = reader.ReadByte();
            writer.WriteString($"[{value.RTS_Resolution.ReadNumber()}]实时流分辨率", RTS_ResolutionDisplay(value.RTS_Resolution));
            value.RTS_KF_Interval = reader.ReadUInt16();
            writer.WriteNumber($"[{value.RTS_KF_Interval.ReadNumber()}]实时流关键帧间隔(帧)", value.RTS_KF_Interval);
            value.RTS_Target_FPS = reader.ReadByte();
            writer.WriteNumber($"[{value.RTS_Target_FPS.ReadNumber()}]实时流目标帧率(帧/s)", value.RTS_Target_FPS);
            value.RTS_Target_CodeRate = reader.ReadUInt32();
            writer.WriteNumber($"[{value.RTS_Target_CodeRate.ReadNumber()}]实时流目标码流(kbps)", value.RTS_Target_CodeRate);
            value.StreamStore_EncodeMode = reader.ReadByte();
            writer.WriteString($"[{value.StreamStore_EncodeMode.ReadNumber()}]存储量编码模式", StreamStore_EncodeModeDisplay(value.StreamStore_EncodeMode));
            value.StreamStore_Resolution = reader.ReadByte();
            writer.WriteString($"[{value.StreamStore_Resolution.ReadNumber()}]存储流分辨率", StreamStore_ResolutionDisplay(value.StreamStore_Resolution));
            value.StreamStore_KF_Interval = reader.ReadUInt16();
            writer.WriteNumber($"[{value.StreamStore_KF_Interval.ReadNumber()}]存储流关键帧间隔(帧)", value.StreamStore_KF_Interval);
            value.StreamStore_Target_FPS = reader.ReadByte();
            writer.WriteNumber($"[{value.StreamStore_Target_FPS.ReadNumber()}]存储流目标帧率(帧/s)", value.StreamStore_Target_FPS);
            value.StreamStore_Target_CodeRate = reader.ReadUInt32();
            writer.WriteNumber($"[{value.StreamStore_Target_CodeRate.ReadNumber()}]存储流目标码流(kbps)", value.StreamStore_Target_CodeRate);
            value.OSD = reader.ReadUInt16();
            writer.WriteString($"[{value.OSD.ReadNumber()}]OBD字幕叠加设置", OBDDisplay(value.OSD));
            value.AudioOutputEnabled = reader.ReadByte();
            writer.WriteString($"[{value.AudioOutputEnabled.ReadNumber()}]是否启用音频输出", value.AudioOutputEnabled == 0 ? "不启用" : "启用");
            string RTS_EncodeModeDisplay(byte RTS_EncodeMode)
            {
                switch (RTS_EncodeMode)
                {
                case 0:
                    return("CBR固定码流");

                case 1:
                    return("VBR可变码流");

                case 2:
                    return("ABR平均码流");

                default:
                    break;
                }
                return("未知");
            }

            string RTS_ResolutionDisplay(byte RTS_Resolution)
            {
                switch (RTS_Resolution)
                {
                case 0:
                    return("QCIF");

                case 1:
                    return("CIF");

                case 2:
                    return("WCIF");

                case 3:
                    return("D1");

                case 4:
                    return("WD1");

                case 5:
                    return("720P");

                case 6:
                    return("1080P");

                default:
                    break;
                }
                return("未知");
            }

            string StreamStore_EncodeModeDisplay(byte StreamStore_EncodeMode)
            {
                {
                    switch (RTS_EncodeMode)
                    {
                    case 0:
                        return("CBR固定码流");

                    case 1:
                        return("VBR可变码流");

                    case 2:
                        return("ABR平均码流");

                    default:
                        break;
                    }
                    return("未知");
                }
            }

            string StreamStore_ResolutionDisplay(byte StreamStore_Resolution)
            {
                switch (RTS_Resolution)
                {
                case 0:
                    return("QCIF");

                case 1:
                    return("CIF");

                case 2:
                    return("WCIF");

                case 3:
                    return("D1");

                case 4:
                    return("WD1");

                case 5:
                    return("720P");

                case 6:
                    return("1080P");

                default:
                    break;
                }
                return("未知");
            }

            string OBDDisplay(ushort OBD)
            {
                string obdDisplay = string.Empty;

                obdDisplay += ((OBD & 0x0001) == 1) ? ",日期和时间" : "";
                obdDisplay += ((OBD >> 1 & 0x0001) == 1) ? ",车牌号码" : "";
                obdDisplay += ((OBD >> 2 & 0x0001) == 1) ? ",逻辑通道号" : "";
                obdDisplay += ((OBD >> 3 & 0x0001) == 1) ? ",经纬度" : "";
                obdDisplay += ((OBD >> 4 & 0x0001) == 1) ? ",行驶记录速度" : "";
                obdDisplay += ((OBD >> 5 & 0x0001) == 1) ? ",卫星定位速度" : "";
                obdDisplay += ((OBD >> 6 & 0x0001) == 1) ? ",连续驾驶时间" : "";
                return(obdDisplay.Length > 0 ? obdDisplay.Substring(1) : "");
            }
        }
Example #15
0
        public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0x0011 value, IJT808Config config)
        {
            writer.WriteUInt32(value.ParamId);
            writer.Skip(1, out int skipPosition);
            writer.WriteString(value.ParamValue);
            int length = writer.GetCurrentPosition() - skipPosition - 1;

            writer.WriteByteReturn((byte)length, skipPosition);
        }
Example #16
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="writer"></param>
 /// <param name="value"></param>
 /// <param name="config"></param>
 public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8900_0xF7 value, IJT808Config config)
 {
     if (value.MultipleUSB != null && value.MultipleUSB.Count > 0)
     {
         writer.WriteByte((byte)value.MultipleUSB.Count);
         foreach (var item in value.MultipleUSB)
         {
             writer.WriteByte(item);
         }
     }
 }
Example #17
0
 public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0500 value, IJT808Config config)
 {
     writer.WriteUInt16(value.MsgNum);
     config.GetMessagePackFormatter <JT808_0x0200>().Serialize(ref writer, value.JT808_0x0200, config);
 }
Example #18
0
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x1205 value = new JT808_0x1205();

            value.MsgNum = reader.ReadUInt16();
            writer.WriteNumber($"[{value.MsgNum.ReadNumber()}]流水号", value.MsgNum);
            value.AVResouceTotal = reader.ReadUInt32();
            writer.WriteNumber($"[{value.AVResouceTotal.ReadNumber()}]音视频资源总数", value.AVResouceTotal);
            writer.WriteStartArray("音视频资源列表");
            var formatter = config.GetMessagePackFormatter <JT808_0x1205_AVResouce>();

            for (int i = 0; i < value.AVResouceTotal; i++)
            {
                writer.WriteStartObject();
                formatter.Analyze(ref reader, writer, config);
                writer.WriteEndObject();
            }
            writer.WriteEndArray();
        }
Example #19
0
        public JT808_0x8103_0x0012 Deserialize(ReadOnlySpan <byte> bytes, out int readSize, IJT808Config config)
        {
            int offset = 0;
            JT808_0x8103_0x0012 jT808_0x8103_0x0012 = new JT808_0x8103_0x0012
            {
                ParamLength = JT808BinaryExtensions.ReadByteLittle(bytes, ref offset)
            };

            jT808_0x8103_0x0012.ParamValue = JT808BinaryExtensions.ReadStringLittle(bytes, ref offset, jT808_0x8103_0x0012.ParamLength);
            readSize = offset;
            return(jT808_0x8103_0x0012);
        }
Example #20
0
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x8103_0x0003 jT808_0x8103_0x0003 = new JT808_0x8103_0x0003();

            jT808_0x8103_0x0003.ParamId     = reader.ReadUInt32();
            jT808_0x8103_0x0003.ParamLength = reader.ReadByte();
            jT808_0x8103_0x0003.ParamValue  = reader.ReadUInt32();
            writer.WriteNumber($"[{ jT808_0x8103_0x0003.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0003.ParamId);
            writer.WriteNumber($"[{jT808_0x8103_0x0003.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0003.ParamLength);
            writer.WriteNumber($"[{ jT808_0x8103_0x0003.ParamValue.ReadNumber()}]参数值[TCP消息重传次数]", jT808_0x8103_0x0003.ParamValue);
        }
Example #21
0
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x8400 value = new JT808_0x8400();

            value.CallBack = (JT808CallBackType)reader.ReadByte();
            writer.WriteNumber($"[{((byte)value.CallBack).ReadNumber()}]{value.CallBack.ToString()}", (byte)value.CallBack);
            // 最长为 20 字节
            var pnoBuffer = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength()).ToArray();

            value.PhoneNumber = reader.ReadRemainStringContent();
            writer.WriteString($"[{pnoBuffer.ToHexString()}]电话号码", value.PhoneNumber);
        }
Example #22
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="writer"></param>
 /// <param name="value"></param>
 /// <param name="config"></param>
 public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Down_0x11 value, IJT808Config config)
 {
     writer.WriteDateTime_yyMMddHHmmss(value.StartTime);
     writer.WriteDateTime_yyMMddHHmmss(value.EndTime);
     writer.WriteUInt16(value.Count);
 }
Example #23
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="writer"></param>
        /// <param name="config"></param>
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x8103_0xF367 value = new JT808_0x8103_0xF367();

            value.ParamId     = reader.ReadUInt32();
            value.ParamLength = reader.ReadByte();
            writer.WriteNumber($"[{ value.ParamId.ReadNumber()}]参数ID", value.ParamId);
            writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]参数长度", value.ParamLength);
            value.RearApproachAlarmTimeThreshold = reader.ReadByte();
            writer.WriteNumber($"[{value.RearApproachAlarmTimeThreshold.ReadNumber()}]后方接近报警时间阈值", value.RearApproachAlarmTimeThreshold);
            value.LateralRearApproachAlarmTimeThreshold = reader.ReadByte();
            writer.WriteNumber($"[{value.LateralRearApproachAlarmTimeThreshold.ReadNumber()}]侧后方接近报警时间阈值", value.LateralRearApproachAlarmTimeThreshold);
        }
Example #24
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="writer"></param>
        /// <param name="config"></param>
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_CarDVR_Down_0x11 value = new JT808_CarDVR_Down_0x11();

            value.StartTime = reader.ReadDateTime_yyMMddHHmmss();
            writer.WriteString($"[{value.StartTime:yyMMddHHmmss}]开始时间", value.StartTime.ToString("yyyy-MM-dd HH:mm:ss"));
            value.EndTime = reader.ReadDateTime_yyMMddHHmmss();
            writer.WriteString($"[{value.EndTime:yyMMddHHmmss}]结束时间", value.EndTime.ToString("yyyy-MM-dd HH:mm:ss"));
            value.Count = reader.ReadUInt16();
            writer.WriteNumber($"[{value.Count.ReadNumber()}]最大单位数据块个数", value.Count);
        }
Example #25
0
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x9206 value = new JT808_0x9206();

            value.ServerIpLength = reader.ReadByte();
            writer.WriteNumber($"[{value.ServerIpLength.ReadNumber()}]服务器IP地址长度", value.ServerIpLength);
            string ipHex = reader.ReadVirtualArray(value.ServerIpLength).ToArray().ToHexString();

            value.ServerIp = reader.ReadString(value.ServerIpLength);
            writer.WriteString($"[{ipHex}]服务器IP地址", value.ServerIp);
            value.Port = reader.ReadUInt16();
            writer.WriteNumber($"[{value.Port.ReadNumber()}]服务器端口", value.Port);
            value.UserNameLength = reader.ReadByte();
            writer.WriteNumber($"[{value.UserNameLength.ReadNumber()}]用户名长度", value.UserNameLength);
            string userNameHex = reader.ReadVirtualArray(value.UserNameLength).ToArray().ToHexString();

            value.UserName = reader.ReadString(value.UserNameLength);
            writer.WriteString($"[{userNameHex}]用户名", value.UserName);
            value.PasswordLength = reader.ReadByte();
            writer.WriteNumber($"[{value.PasswordLength.ReadNumber()}]密码长度", value.PasswordLength);
            string passwordHex = reader.ReadVirtualArray(value.PasswordLength).ToArray().ToHexString();

            value.Password = reader.ReadString(value.PasswordLength);
            writer.WriteString($"[{passwordHex}]密码", value.Password);
            value.FileUploadPathLength = reader.ReadByte();
            writer.WriteNumber($"[{value.FileUploadPathLength.ReadNumber()}]文件上传路径长度", value.FileUploadPathLength);
            string fileUploadPathHex = reader.ReadVirtualArray(value.FileUploadPathLength).ToArray().ToHexString();

            value.FileUploadPath = reader.ReadString(value.FileUploadPathLength);
            writer.WriteString($"[{fileUploadPathHex}]文件上传路径", value.FileUploadPath);

            value.LogicChannelNo = reader.ReadByte();
            writer.WriteString($"[{value.LogicChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.LogicChannelNo));
            value.BeginTime = reader.ReadDateTime6();
            writer.WriteString($"[{value.BeginTime.ToString("yyMMddHHmmss")}]起始时间", value.BeginTime.ToString("yyyy-MM-dd HH:mm:ss"));
            value.EndTime = reader.ReadDateTime6();
            writer.WriteString($"[{value.EndTime.ToString("yyMMddHHmmss")}]起始时间", value.EndTime.ToString("yyyy-MM-dd HH:mm:ss"));
            value.AlarmFlag = reader.ReadUInt32();
            writer.WriteNumber($"[{value.AlarmFlag.ReadNumber()}]报警标志", value.AlarmFlag);
            value.AVResourceType = reader.ReadByte();
            writer.WriteString($"[{value.AVResourceType.ReadNumber()}]音视频类型", AVResourceTypeDisplay(value.AVResourceType));
            value.StreamType = reader.ReadByte();
            writer.WriteString($"[{value.StreamType.ReadNumber()}]码流类型", StreamTypeDisplay(value.StreamType));
            value.MemoryPositon = reader.ReadByte();
            writer.WriteString($"[{value.MemoryPositon.ReadNumber()}]存储器类型", MemoryPositonDisplay(value.MemoryPositon));
            value.TaskExcuteCondition = reader.ReadByte();
            writer.WriteString($"[{value.TaskExcuteCondition.ReadNumber()}]任务执行条件", TaskExcuteConditionDisplay(value.TaskExcuteCondition));

            string AVResourceTypeDisplay(byte AVResourceType)
            {
                switch (AVResourceType)
                {
                case 0:
                    return("音视频");

                case 1:
                    return("音频");

                case 2:
                    return("视频");

                case 3:
                    return("音频或视频");

                default:
                    return("未知");
                }
            }

            string StreamTypeDisplay(byte StreamType)
            {
                switch (StreamType)
                {
                case 0:
                    return("所有码流");

                case 1:
                    return("主码流");

                case 2:
                    return("子码流");

                default:
                    return("未知");
                }
            }

            string MemoryPositonDisplay(byte MemoryPositon)
            {
                switch (MemoryPositon)
                {
                case 0:
                    return("主存储器或灾备服务器");

                case 1:
                    return("主存储器");

                case 2:
                    return("灾备服务器");

                default:
                    return("未知");
                }
            }

            string LogicalChannelNoDisplay(byte LogicalChannelNo)
            {
                switch (LogicalChannelNo)
                {
                case 1:
                    return("驾驶员");

                case 2:
                    return("车辆正前方");

                case 3:
                    return("车前门");

                case 4:
                    return("车厢前部");

                case 5:
                    return("车厢后部");

                case 7:
                    return("行李舱");

                case 8:
                    return("车辆左侧");

                case 9:
                    return("车辆右侧");

                case 10:
                    return("车辆正后方");

                case 11:
                    return("车厢中部");

                case 12:
                    return("车中门");

                case 13:
                    return("驾驶席车门");

                case 33:
                    return("驾驶员");

                case 36:
                    return("车厢前部");

                case 37:
                    return("车厢后部");

                default:
                    return("预留");
                }
            }

            string TaskExcuteConditionDisplay(byte TaskExcuteCondition)
            {
                string taskExcuteConditionDisplay = string.Empty;

                taskExcuteConditionDisplay += (TaskExcuteCondition & 0x01) == 1 ? ",WIFI":"";
                taskExcuteConditionDisplay += (TaskExcuteCondition & 0x01) == 1 ? ",LAN" : "";
                taskExcuteConditionDisplay += (TaskExcuteCondition & 0x01) == 1 ? ",3G/4G" : "";
                return(taskExcuteConditionDisplay.Length > 0 ? taskExcuteConditionDisplay.Substring(1) : "");
            }
        }
Example #26
0
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x8300 jT808_0X8300 = new JT808_0x8300();

            jT808_0X8300.TextFlag = reader.ReadByte();
            writer.WriteNumber($"[{ jT808_0X8300.TextFlag.ReadNumber()}]文本信息标志位", jT808_0X8300.TextFlag);
            if (reader.Version == JT808Version.JTT2019)
            {
                jT808_0X8300.TextType = reader.ReadByte();
                writer.WriteNumber($"[{ jT808_0X8300.TextType.ReadNumber()}]文本类型-{(jT808_0X8300.TextType==1? "通知":"服务")}", jT808_0X8300.TextType);
            }
            var txtBuffer = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength()).ToArray();

            jT808_0X8300.TextInfo = reader.ReadRemainStringContent();
            writer.WriteString($"[{txtBuffer.ToHexString()}]答案内容", jT808_0X8300.TextInfo);
        }
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x8103_0x001B jT808_0x8103_0x001B = new JT808_0x8103_0x001B();

            jT808_0x8103_0x001B.ParamId     = reader.ReadUInt32();
            jT808_0x8103_0x001B.ParamLength = reader.ReadByte();
            jT808_0x8103_0x001B.ParamValue  = reader.ReadUInt32();
            writer.WriteNumber($"[{ jT808_0x8103_0x001B.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x001B.ParamId);
            writer.WriteNumber($"[{jT808_0x8103_0x001B.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x001B.ParamLength);
            writer.WriteNumber($"[{ jT808_0x8103_0x001B.ParamValue.ReadNumber()}]参数值[道路运输证IC卡认证主服务器TCP端口]", jT808_0x8103_0x001B.ParamValue);
        }
Example #28
0
 public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8003 value, IJT808Config config)
 {
     writer.WriteUInt16(value.OriginalMsgNum);
     writer.WriteByte((byte)(value.AgainPackageData.Length / 2));
     writer.WriteArray(value.AgainPackageData);
 }
Example #29
0
 public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0x0079 value, IJT808Config config)
 {
     writer.WriteUInt32(value.ParamId);
     writer.WriteByte(value.ParamLength);
     writer.WriteByte(value.StorageThresholds);
     writer.WriteByte(value.Duration);
     writer.WriteByte(value.BeginMinute);
 }
Example #30
0
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_CarDVR_Up_0x00 value = new JT808_CarDVR_Up_0x00();

            value.StandardYear = reader.ReadBCD(2);
            writer.WriteString($"[{value.StandardYear}]记录仪执行标准年号", value.StandardYear);
            value.ModifyNumber = reader.ReadByte();
            writer.WriteNumber($"[{value.ModifyNumber.ReadNumber()}]修改单号", value.ModifyNumber);
        }