|
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
-
- namespace ModbusDemo.ErrorCode
- {
- public class ErrorCode
- {
-
- // 静态列表:存储所有错误码
- public static readonly List<ErrorCode> AllErrors = new List<ErrorCode>();
-
- // 错误码值
- public byte Code { get; }
-
- // 错误描述
- public string Description { get; }
-
- // 私有构造函数,只能通过静态方法创建错误码
- private ErrorCode(byte code, string description)
- {
- Code = code;
- Description = description;
-
- // 自动添加到错误码列表
- AllErrors.Add(this);
- }
-
- // 重写 ToString 方法
- public override string ToString() => $"Error 0x{Code:X2}: {Description}";
-
-
-
- // 根据错误码值查找错误码
- public static ErrorCode FromByte(byte code) => AllErrors.FirstOrDefault(e => e.Code == code);
-
- // 定义所有错误码
- public static readonly ErrorCode FunctionCodeError = new ErrorCode(0x01, "功能码错误");
- public static readonly ErrorCode DomainStartAddressError = new ErrorCode(0x02, "域数据首地址错误");
- public static readonly ErrorCode DataContentError = new ErrorCode(0x03, "数据内容错误");
- public static readonly ErrorCode DataTypeError = new ErrorCode(0x10, "数据类型错误");
- public static readonly ErrorCode DomainDataCountError = new ErrorCode(0x11, "域数据个数错误");
- public static readonly ErrorCode DataCountMismatch = new ErrorCode(0x12, "数据个数与内部区域数据个数不符");
- public static readonly ErrorCode WriteOperationDenied = new ErrorCode(0x13, "不能进行写操作");
- public static readonly ErrorCode CrcCheckError = new ErrorCode(0x14, "CRC校验错误");
- public static readonly ErrorCode DatabaseException = new ErrorCode(0x15, "数据库异常");
- }
-
- }
|