namespace Aging.Infrastructure.Contracts
{
///
/// 设备驱动状态信息
///
public sealed class DeviceDriverStatus
{
///
/// 设备是否已连接
///
public bool IsConnected { get; set; }
///
/// 设备是否健康(无故障)
///
public bool IsHealthy { get; set; }
///
/// 最后一次错误信息
///
public string LastError { get; set; } = "";
///
/// 最后一次错误发生的时间
///
public DateTime? LastErrorTime { get; set; }
///
/// 通信延迟(毫秒)
///
public double LatencyMs { get; set; }
///
/// 重连次数
///
public int ReconnectCount { get; set; }
}
///
/// 设备连接状态变化事件参数
///
public sealed class DeviceConnectionEventArgs : EventArgs
{
///
/// 设备标识符
///
public string DeviceId { get; set; } = "";
///
/// 是否已连接
///
public bool IsConnected { get; set; }
///
/// 状态变化原因(可选)
///
public string? Reason { get; set; }
}
///
/// 设备驱动统一接口。
/// 所有硬件设备驱动必须实现此接口,提供连接、断开、命令发送和查询功能。
///
public interface IDeviceDriver : IDisposable
{
///
/// 设备唯一标识符
///
string DeviceId { get; }
///
/// 设备当前是否已连接
///
bool IsConnected { get; }
///
/// 异步连接设备
///
/// 取消令牌
Task ConnectAsync(CancellationToken ct);
///
/// 异步断开设备连接
///
Task DisconnectAsync();
///
/// 发送命令到设备
///
/// 命令字符串
/// 取消令牌
/// 设备响应字符串
Task SendCommandAsync(string command, CancellationToken ct);
///
/// 向设备发送查询并获取响应
///
/// 查询字符串
/// 取消令牌
/// 设备查询响应字符串
Task QueryAsync(string query, CancellationToken ct);
///
/// 获取设备当前状态信息
///
/// 设备驱动状态
DeviceDriverStatus GetStatus();
///
/// 设备连接状态变化事件
///
event EventHandler? ConnectionChanged;
}
}