#region copyright //------------------------------------------------------------------------------ // 此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 // 此代码版权(除特别声明外的代码)归作者本人Diego所有 // 源代码使用协议遵循本仓库的开源协议及附加协议 // Gitee源代码仓库:https://gitee.com/diego2098/ThingsGateway // Github源代码仓库:https://github.com/kimdiego2098/ThingsGateway // 使用文档:https://diego2098.gitee.io/thingsgateway-docs/ // QQ群:605534569 //------------------------------------------------------------------------------ #endregion using System.ComponentModel; namespace ThingsGateway.Application; /// /// 上传设备运行状态 /// public class UploadDeviceRunTime : UploadDevice { /// /// 设备驱动名称 /// [Description("设备驱动名称")] public string PluginName { get; set; } /// /// 关联变量数量 /// [Description("关联变量数量")] public int UploadVariableCount { get; set; } /// /// 设备活跃时间 /// [Description("活跃时间")] public DateTimeOffset ActiveTime { get; private set; } = DateTimeOffset.MinValue; /// /// 设备状态 /// [Description("设备状态")] public DeviceStatusEnum DeviceStatus { get { if (KeepRun) return deviceStatus; else return DeviceStatusEnum.Pause; } private set { if (deviceStatus != value) { deviceStatus = value; } } } private string lastErrorMessage; /// /// 最后一次失败原因 /// [Description("最后一次失败原因")] public string LastErrorMessage { get { return lastErrorMessage; } private set { lastErrorMessage = SysDateTimeExtensions.CurrentDateTime.ToDefaultDateTimeFormat() + " - " + value; } } /// /// 运行 /// [Description("运行")] public bool KeepRun { get; set; } = true; private int errorCount; /// /// 距上次成功时的读取失败次数,超过3次设备更新为离线,等于0时设备更新为在线 /// [Description("失败次数")] public int ErrorCount { get { return errorCount; } private set { errorCount = value; if (errorCount > 3) { DeviceStatus = DeviceStatusEnum.OffLine; } else if (errorCount == 0) { DeviceStatus = DeviceStatusEnum.OnLine; } } } private DeviceStatusEnum deviceStatus = DeviceStatusEnum.None; /// /// 传入设备的状态信息 /// /// /// /// public void SetDeviceStatus(DateTimeOffset? activeTime = null, int? errorCount = null, string lastErrorMessage = null) { if (activeTime != null) ActiveTime = activeTime.Value; if (errorCount != null) ErrorCount = errorCount.Value; if (lastErrorMessage != null) LastErrorMessage = lastErrorMessage; } }