Files
ParkingRobot/MedullaAdapter/MCUSerialBridgeError.cs
T

99 lines
6.3 KiB
C#

// MCU通信错误码
namespace MCUSerialBridgeCLR
{
public enum MCUSerialBridgeError : uint
{
OK = 0x00000000, // Success
NoData = 0x00000001, // Port no new data
Win_Unknown = 0x80000001, // Unknown Windows error
Win_InvalidParam = 0x80000002, // Invalid parameter
Win_AllocFail = 0x80000003, // Memory allocation failed
Win_HandleNotFound = 0x80000004, // Handle not found
Win_ResourceBusy = 0x80000005, // Resource busy
Win_BufferFull = 0x80000006, // Buffer is full
Win_UserBufferTooSmall = 0x80000007, // Buffer is too small
Win_CannotOpenPort = 0x80000010, // Cannot open port
Win_CannotGetCommState = 0x80000011, // Cannot get comm state
Win_CannotSetCommState = 0x80000012, // Cannot set comm state
Win_CannotCreateThread = 0x80000013, // Cannot create thread
Proto_Invalid = 0xE0000001, // Protocol invalid
Proto_Checksum = 0xE0000002, // CRC check failed
Proto_Timeout = 0xE0000003, // Protocol timeout
Proto_FrameTooLong = 0xE0000004, // Frame too long
Proto_UnknownCommand = 0xE0000005, // Unknown command
Proto_InvalidPayload = 0xE0000006, // Invalid payload
State_NotRunning = 0xF0000000, // Not running, configure
State_Running = 0xF0000001, // Can not configure, already running
Config_PortNumOver = 0xC0000000, // Port number over
Config_SerialNumOver = 0xC0000001, // Serial port number over
Config_CANNumOver = 0xC0000002, // CAN number over
Config_UnknownPortType = 0xC0000010, // Unknown Port Type
Serial_OpenFail = 0x01000001, // Serial open failed
Serial_NotOpen = 0x01000002, // Serial not open
Serial_ReadFail = 0x01000003, // Serial read failed
Serial_WriteFail = 0x01000004, // Serial write failed
Serial_Busy = 0x01000005, // Serial is busy
CAN_DataError = 0x02000000, // CAN data error
CAN_SendFail = 0x02000001, // CAN send failed
CAN_RecvFail = 0x02000002, // CAN receive failed
CAN_BufferFull = 0x02000003, // CAN buffer full
CAN_NotInit = 0x02000004, // CAN not initialized
Port_WriteBusy = 0x10000001, // Port is busy now
MCU_Unknown = 0x00010001, // MCU unknown error
MCU_IOSizeError = 0x00010002, // IO Should be 4 bytes
MCU_OverTemperature = 0x00010010, // MCU over temperature
}
public static class MCUSerialBridgeErrorExtensions
{
// M层MCU适配:把串口桥错误码转换为便于诊断的说明。
public static string ToDescription(this MCUSerialBridgeError err)
{
return err switch
{
MCUSerialBridgeError.OK => "OK|Success",
MCUSerialBridgeError.NoData => "NoData|Port no new data",
MCUSerialBridgeError.Win_Unknown => "Win_Unknown|Unknown Windows error",
MCUSerialBridgeError.Win_InvalidParam => "Win_InvalidParam|Invalid parameter",
MCUSerialBridgeError.Win_AllocFail => "Win_AllocFail|Memory allocation failed",
MCUSerialBridgeError.Win_HandleNotFound => "Win_HandleNotFound|Handle not found",
MCUSerialBridgeError.Win_ResourceBusy => "Win_ResourceBusy|Resource busy",
MCUSerialBridgeError.Win_BufferFull => "Win_BufferFull|Buffer is full",
MCUSerialBridgeError.Win_UserBufferTooSmall => "Win_UserBufferTooSmall|Buffer is too small",
MCUSerialBridgeError.Win_CannotOpenPort => "Win_CannotOpenPort|Cannot open port",
MCUSerialBridgeError.Win_CannotGetCommState => "Win_CannotGetCommState|Cannot get comm state",
MCUSerialBridgeError.Win_CannotSetCommState => "Win_CannotSetCommState|Cannot set comm state",
MCUSerialBridgeError.Win_CannotCreateThread => "Win_CannotCreateThread|Cannot create thread",
MCUSerialBridgeError.Proto_Invalid => "Proto_Invalid|Protocol invalid",
MCUSerialBridgeError.Proto_Checksum => "Proto_Checksum|CRC check failed",
MCUSerialBridgeError.Proto_Timeout => "Proto_Timeout|Protocol timeout",
MCUSerialBridgeError.Proto_FrameTooLong => "Proto_FrameTooLong|Frame too long",
MCUSerialBridgeError.Proto_UnknownCommand => "Proto_UnknownCommand|Unknown command",
MCUSerialBridgeError.Proto_InvalidPayload => "Proto_InvalidPayload|Invalid payload",
MCUSerialBridgeError.State_NotRunning => "State_NotRunning|Not running, configure",
MCUSerialBridgeError.State_Running => "State_Running|Can not configure, already running",
MCUSerialBridgeError.Config_PortNumOver => "Config_PortNumOver|Port number over",
MCUSerialBridgeError.Config_SerialNumOver => "Config_SerialNumOver|Serial port number over",
MCUSerialBridgeError.Config_CANNumOver => "Config_CANNumOver|CAN number over",
MCUSerialBridgeError.Config_UnknownPortType => "Config_UnknownPortType|Unknown Port Type",
MCUSerialBridgeError.Serial_OpenFail => "Serial_OpenFail|Serial open failed",
MCUSerialBridgeError.Serial_NotOpen => "Serial_NotOpen|Serial not open",
MCUSerialBridgeError.Serial_ReadFail => "Serial_ReadFail|Serial read failed",
MCUSerialBridgeError.Serial_WriteFail => "Serial_WriteFail|Serial write failed",
MCUSerialBridgeError.Serial_Busy => "Serial_Busy|Serial is busy",
MCUSerialBridgeError.CAN_DataError => "CAN_DataError|CAN data error",
MCUSerialBridgeError.CAN_SendFail => "CAN_SendFail|CAN send failed",
MCUSerialBridgeError.CAN_RecvFail => "CAN_RecvFail|CAN receive failed",
MCUSerialBridgeError.CAN_BufferFull => "CAN_BufferFull|CAN buffer full",
MCUSerialBridgeError.CAN_NotInit => "CAN_NotInit|CAN not initialized",
MCUSerialBridgeError.Port_WriteBusy => "Port_WriteBusy|Port is busy now",
MCUSerialBridgeError.MCU_Unknown => "MCU_Unknown|MCU unknown error",
MCUSerialBridgeError.MCU_IOSizeError => "MCU_IOSizeError|IO Should be 4 bytes",
MCUSerialBridgeError.MCU_OverTemperature => "MCU_OverTemperature|MCU over temperature",
_ => "Unknown Error",
};
}
}
}