public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1400_0x1402 value, IJT809Config config) { if (config.Version == JT809Version.JTT2011) { writer.WriteByte((byte)value.WarnSrc); } else { writer.WriteStringPadRight(value.SourcePlatformId, 11); } writer.WriteUInt16((ushort)value.WarnType); writer.WriteUTCDateTime(value.WarnTime); if (config.Version == JT809Version.JTT2011) { writer.WriteUInt32(value.InfoID); } else { writer.WriteUTCDateTime(value.StartTime); writer.WriteUTCDateTime(value.EndTime); writer.WriteStringPadRight(value.VehicleNo, 21); writer.WriteByte((byte)value.VehicleColor); writer.WriteStringPadRight(value.DestinationPlatformId, 11); writer.WriteUInt32(value.DRVLineId); } // 先计算内容长度(汉字为两个字节) writer.Skip(4, out int lengthPosition); writer.WriteString(value.InfoContent); writer.WriteInt32Return(writer.GetCurrentPosition() - lengthPosition - 4, lengthPosition); }
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1102 value, IJT809Config config) { writer.WriteBigNumber(value.PlateformId, 11); writer.WriteUTCDateTime(value.StartTime); writer.WriteUTCDateTime(value.EndTime); writer.WriteUInt32(value.LoseDymamicSum); writer.WriteByte(value.DisconnectNum); writer.WriteUInt32(value.DisconnectTime); }
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9102 value, IJT809Config config) { writer.WriteUInt16(value.SubBusinessType); writer.Skip(4, out int subContentLengthPosition); writer.WriteStringPadRight(value.PlateformId, 11); writer.WriteUTCDateTime(value.StartTime); writer.WriteUTCDateTime(value.EndTime); writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); }
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x1900_Record value, IJT809Config config) { writer.WriteByte(value.ChannelId); writer.WriteUTCDateTime(value.StartTime); writer.WriteUTCDateTime(value.EndTime); writer.WriteUInt64(value.AlarmType); writer.WriteByte(value.AVItemType); writer.WriteByte(value.StreamType); writer.WriteByte(value.MemType); writer.WriteUInt32(value.FileSize); }
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9A00_0x9A01 value, IJT809Config config) { writer.WriteByte(value.ChannelId); writer.WriteByte(value.AVItemType); writer.WriteByte(value.StreamType); writer.WriteByte(value.MemType); writer.WriteUTCDateTime(value.PlayBackStartTime); writer.WriteUTCDateTime(value.PlayBackEndTime); writer.WriteArray(value.AuthorizeCode); writer.WriteArray(value.GnssData); }
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1102 value, IJT809Config config) { writer.WriteUInt16(value.SubBusinessType); writer.WriteUInt32(value.DataLength); writer.WriteStringPadRight(value.PlateformId, 11); writer.WriteUTCDateTime(value.StartTime); writer.WriteUTCDateTime(value.EndTime); writer.WriteUInt32(value.LoseDymamicSum); writer.WriteByte(value.DisconnectNum); writer.WriteUInt32(value.DisconnectTime); }
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9400_0x9401 value, IJT809Config config) { writer.WriteByte((byte)value.WarnSrc); writer.WriteUInt16((ushort)value.WarnType); writer.WriteUTCDateTime(value.WarnTime); writer.WriteHex(value.SupervisionID, 4); writer.WriteUTCDateTime(value.SupervisionEndTime); writer.WriteByte(value.SupervisionLevel); writer.WriteStringPadRight(value.Supervisor, 16); writer.WriteStringPadRight(value.SupervisorTel, 20); writer.WriteStringPadRight(value.SupervisorEmail, 32); }
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9900_0x9902 value, IJT809Config config) { writer.WriteByte(value.ChannelId); writer.WriteUTCDateTime(value.StartTime); writer.WriteUTCDateTime(value.EndTime); writer.WriteUInt64(value.AlarmType); writer.WriteByte(value.AVItemType); writer.WriteByte(value.StreamType); writer.WriteByte(value.MemType); writer.WriteStringPadRight(value.AuthorizeCode, 64); writer.WriteArray(value.GnssData); }
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1400_0x1413 value, IJT809Config config) { writer.WriteBigNumber(value.SourcePlatformId, 11); writer.WriteUTCDateTime(value.WarnTime); writer.WriteUInt16(value.SourceDataType); writer.WriteUInt32(value.SourceMsgSn); writer.WriteUTCDateTime(value.SupervisionEndTime); writer.WriteByte((byte)value.SupervisionLevel); writer.WriteStringPadRight(value.Supervisor, 16); writer.WriteStringPadRight(value.SupervisorTel, 20); writer.WriteStringPadRight(value.SupervisorEmail, 32); }
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1300_0x1303 value, IJT809Config config) { writer.WriteByte(value.SerialCount); foreach (var item in value.SerialList) { writer.WriteArray(item); } writer.WriteUTCDateTime(value.Time); }
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9400_0x9403 value, IJT809Config config) { writer.WriteByte((byte)value.WarnSrc); writer.WriteUInt16((ushort)value.WarnType); writer.WriteUTCDateTime(value.WarnTime); // 先计算内容长度(汉字为两个字节) writer.Skip(4, out int lengthPosition); writer.WriteString(value.WarnContent); writer.WriteInt32Return(writer.GetCurrentPosition() - lengthPosition - 4, lengthPosition); }
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9500_0x9505 value, IJT809Config config) { writer.WriteBCD(value.AuthenticationCode, 20); writer.WriteStringPadRight(value.AccessPointName, 20); writer.WriteStringPadRight(value.UserName, 49); writer.WriteStringPadRight(value.Password, 22); writer.WriteStringPadRight(value.ServerIP, 32); writer.WriteUInt16(value.TcpPort); writer.WriteUInt16(value.UdpPort); writer.WriteUTCDateTime(value.EndTime); }
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1200_0x120C value, IJT809Config config) { writer.WriteStringPadRight(value.DriverName, 16); writer.WriteStringPadRight(value.DriverID, 20); writer.WriteStringPadRight(value.Licence, 40); writer.WriteStringPadRight(value.OrgName, 200); if (config.Version == JT809Version.JTT2019) { writer.WriteUTCDateTime(value.ValidDate); } }
public void Serialize(ref JT809MessagePackWriter writer, JT809Header value, IJT809Config config) { writer.WriteUInt32(value.MsgLength); writer.WriteUInt32(value.MsgSN); writer.WriteUInt16(value.BusinessType); writer.WriteUInt32(value.MsgGNSSCENTERID); writer.WriteArray(value.Version.Buffer); writer.WriteByte((byte)value.EncryptFlag); writer.WriteUInt32(value.EncryptKey); writer.WriteUTCDateTime(value.Time); }
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1300_0x1303 value, IJT809Config config) { if (value.EndMessageNumber - value.BeginMessageNumber >= byte.MaxValue) { throw new JT809Exception(JT809ErrorCode.IllegalArgument, "序列号间隔不能大于255"); } value.SerialCount = (byte)(value.EndMessageNumber - value.BeginMessageNumber + 1); writer.WriteUInt16(RetranDataType); writer.WriteByte(value.SerialCount); writer.WriteUInt32(value.BeginMessageNumber); writer.WriteUInt32(value.EndMessageNumber); writer.WriteUTCDateTime(value.Time); }
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9500_0x9504 value, IJT809Config config) { if (config.Version == JT809Version.JTT2019) { writer.WriteUTCDateTime(value.StartTime); writer.WriteUTCDateTime(value.EndTime); writer.WriteByte((byte)value.Command); } else { writer.WriteByte((byte)value.Command); switch (value.Command) { case JT809CommandType.记录仪标准版本: case JT809CommandType.当前驾驶人信息: case JT809CommandType.记录仪时间: case JT809CommandType.记录仪累计行驶里程: case JT809CommandType.记录仪脉冲系数: case JT809CommandType.车辆信息: case JT809CommandType.记录仪状态信号配置信息: case JT809CommandType.记录仪唯一性编号: break; case JT809CommandType.采集记录仪行驶记录: case JT809CommandType.采集记录仪位置信息记录: case JT809CommandType.采集记录仪事故疑点记录: case JT809CommandType.采集记录仪超时驾驶记录: case JT809CommandType.采集记录仪驾驶人身份记录: case JT809CommandType.采集记录仪外部供电记录: case JT809CommandType.采集记录仪参数修改记录: case JT809CommandType.采集记录仪速度状态日志: writer.WriteDateTime6(value.StartTime); writer.WriteDateTime6(value.EndTime); writer.WriteUInt16(value.Max); break; } } }
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9103 value, IJT809Config config) { writer.WriteUInt16(value.SubBusinessType); // 先写入内容,然后在根据内容反写内容长度 writer.Skip(4, out int subContentLengthPosition); writer.WriteByte((byte)value.ManageMsgSNInform.Count); foreach (var item in value.ManageMsgSNInform) { writer.WriteUInt16(item.SubBusinessType); writer.WriteUInt32(item.MsgSN); writer.WriteUTCDateTime(item.Time); } writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); }
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x1200_0x1207 value, IJT809Config config) { writer.WriteUTCDateTime(value.StartTime); writer.WriteUTCDateTime(value.EndTime); }
public void Serialize(ref JT809MessagePackWriter writer, JT809_JT1078_0x9A00_0x9A02 value, IJT809Config config) { writer.WriteByte(value.ControlType); writer.WriteByte(value.FastTime); writer.WriteUTCDateTime(value.DateTime); }
public void Serialize(ref JT809MessagePackWriter writer, JT809Package value, IJT809Config config) { // -----------开始组包---------- // 1.起始符 writer.WriteByte(value.BeginFlag); // 2.写入头部数据 // 2.1.跳过数据长度的写入 writer.Skip(4, out int lengthPosition); // 2.2.报文序列号 value.Header.MsgSN = value.Header.MsgSN > 0 ? value.Header.MsgSN : config.MsgSNDistributed.Increment(); writer.WriteUInt32(value.Header.MsgSN); // 2.3.业务数据类型 writer.WriteUInt16(value.Header.BusinessType); // 2.4.下级平台接入码 writer.WriteUInt32(value.Header.MsgGNSSCENTERID); // 2.5.版本号 writer.WriteArray(value.Header.Version.Buffer); // 2.6.报文加密 writer.WriteByte((byte)value.Header.EncryptFlag); // 2.7.数据加密密钥 writer.WriteUInt32(value.Header.EncryptKey); // 2.8 发送消息时系统UTC时间 writer.WriteUTCDateTime(value.Header.Time); // 3.写入数据体 // 3.1.记录当前开始位置 int startIndex = writer.GetCurrentPosition(); // 3.2.写入数据对应数据体 if (value.Bodies != null) { JT809MessagePackFormatterResolverExtensions.JT809DynamicSerialize( config.GetMessagePackFormatterByType(value.Bodies.GetType()), ref writer, value.Bodies, config); } // 3.3.记录当前结束位置 int endIndex = writer.GetCurrentPosition(); int contentLength = endIndex - startIndex; if (contentLength > 0) { // 3.4. 数据加密 switch (value.Header.EncryptFlag) { case JT809Header_Encrypt.None: break; case JT809Header_Encrypt.Common: // 3.5. 提取数据体并进行加密处理 byte[] messageBodyDatEncrypted = config.Encrypt.Encrypt(writer.Extract(startIndex), config.EncryptOptions, value.Header.EncryptKey); int flagLength = messageBodyDatEncrypted.Length - contentLength; if (flagLength == 0) { // 相等复制 writer.CopyTo(messageBodyDatEncrypted, startIndex); } else if (flagLength > 0) { // 扩容 writer.Skip(flagLength, out _); writer.CopyTo(messageBodyDatEncrypted, startIndex); } else { // 缩减 writer.CopyTo(messageBodyDatEncrypted, startIndex); writer.Shrink(-flagLength); } break; } } // 4.计算内容的总长度(校验码2+终止符1=3) writer.WriteInt32Return(writer.GetCurrentPosition() + 3, lengthPosition); // 5.校验码 writer.WriteCRC16(); // 6.终止符 writer.WriteByte(value.EndFlag); // 7.转义 writer.WriteEncode(); // -----------组包完成---------- }
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9300_0x9303 value, IJT809Config config) { writer.WriteArray(value.SerialList); writer.WriteUTCDateTime(value.Time); }
public void Serialize(ref JT809MessagePackWriter writer, JT809_0x9102 value, IJT809Config config) { writer.WriteStringPadRight(value.PlateformId, 11); writer.WriteUTCDateTime(value.StartTime); writer.WriteUTCDateTime(value.EndTime); }
public void Serialize(ref JT809MessagePackWriter writer, JT809_2019_0x9101 value, IJT809Config config) { writer.WriteUInt32(value.DynamicInfoTotal); writer.WriteUTCDateTime(value.StartTime); writer.WriteUTCDateTime(value.EndTime); }