package protocol import "fmt" type MError uint8 var ( // Success 成功 Success MError = 0 // IllegalFunction 接收到的功能码不可识别或服务端(从机)未实现其功能 IllegalFunction MError = 1 // IllegalDataAddress 数据地址不可接收 IllegalDataAddress MError = 2 // IllegalDataValue 数据不被识别 IllegalDataValue MError = 3 // SlaveDeviceFailure 不可恢复的错误 SlaveDeviceFailure MError = 4 // AcknowledgeSlave 已接受并正在处理的耗时请求,防止发生超时错误,主站可以发送一个poll(pgc)来确定消息是否处理完成 AcknowledgeSlave MError = 5 // SlaveDeviceBusy 从站正在处理耗时指令,从站忙 SlaveDeviceBusy MError = 6 // NegativeAcknowledge 从站无法处理此请求 NegativeAcknowledge MError = 7 // MemoryParityError 从站检测到奇偶校验错误,但仍然需要提供服务,故此返回此错误 MemoryParityError MError = 8 // GatewayPathUnavailable Modbus网关配置错误 GatewayPathUnavailable MError = 10 // GatewayTargetDeviceFailedToRespond Modbus网关,从机无法响应 GatewayTargetDeviceFailedToRespond MError = 11 ) func (e MError) Error() string { return fmt.Sprintf("%d", e) } func (e MError) String() string { var str string switch e { case Success: str = fmt.Sprintf("Success") case IllegalFunction: str = fmt.Sprintf("IllegalFunction") case IllegalDataAddress: str = fmt.Sprintf("IllegalDataAddress") case IllegalDataValue: str = fmt.Sprintf("IllegalDataValue") case SlaveDeviceFailure: str = fmt.Sprintf("SlaveDeviceFailure") case AcknowledgeSlave: str = fmt.Sprintf("AcknowledgeSlave") case SlaveDeviceBusy: str = fmt.Sprintf("SlaveDeviceBusy") case NegativeAcknowledge: str = fmt.Sprintf("NegativeAcknowledge") case MemoryParityError: str = fmt.Sprintf("MemoryParityError") case GatewayPathUnavailable: str = fmt.Sprintf("GatewayPathUnavailable") case GatewayTargetDeviceFailedToRespond: str = fmt.Sprintf("GatewayTargetDeviceFailedToRespond") default: str = fmt.Sprintf("unknown") } return str }