Files
StandardSence/StandardScene.Core/Charge/CommunicationMessage.cs
T
2026-06-14 11:19:15 +08:00

90 lines
2.0 KiB
C#

using System;
namespace StandardScene.Charge
{
/// <summary>
/// 通讯报文数据模型
/// </summary>
public class CommunicationMessage
{
/// <summary>
/// 报文ID(自动生成)
/// </summary>
public string MessageId { get; set; }
/// <summary>
/// 时间戳
/// </summary>
public DateTime Timestamp { get; set; }
/// <summary>
/// 方向(发送/接收)
/// </summary>
public MessageDirection Direction { get; set; }
/// <summary>
/// IP地址
/// </summary>
public string IpAddress { get; set; }
/// <summary>
/// 端口号
/// </summary>
public int Port { get; set; }
/// <summary>
/// 原始报文数据(十六进制字符串)
/// </summary>
public string RawData { get; set; }
/// <summary>
/// 报文长度(字节)
/// </summary>
public int Length { get; set; }
/// <summary>
/// 协议类型
/// </summary>
public string Type { get; set; }
/// <summary>
/// 关联的充电桩ID(可选)
/// </summary>
public string StationId { get; set; }
public CommunicationMessage()
{
MessageId = GenerateMessageId();
Timestamp = DateTime.Now;
}
private static string GenerateMessageId()
{
return $"MSG{DateTime.Now:yyyyMMddHHmmssfff}{new Random().Next(100, 999)}";
}
public override string ToString()
{
return $"[{Timestamp:HH:mm:ss.fff}] {Direction} {IpAddress}:{Port} - {Length}字节";
}
}
//解析后的数据
/// <summary>
/// 报文方向枚举
/// </summary>
public enum MessageDirection
{
/// <summary>
/// 发送
/// </summary>
Send = 0,
/// <summary>
/// 接收
/// </summary>
Receive = 1
}
}