package com.example.agvcontroller.protocol; /** * 标识枚举 * Created by vincent on 2019-04-02 */ public enum ProtocolType implements ICodedStatus { // 下行 ------------------------------------------------------------------- PATH_COMMAND(0x01, "路径数据包", DirectionType.DOWN), ACTION_COMMAND(0x02, "动作命令包", DirectionType.DOWN), HEARTBEAT_COMMAND(0x03, "心跳包", DirectionType.DOWN), FAULT_CLEAR_COMMAND(0x04, "故障命令包", DirectionType.DOWN), ACTIVATION_COMMAND(0x80, "激活包", DirectionType.DOWN), LOGIN_ACK(0xF0, "登录应答包", DirectionType.DOWN), ACTION_SUCCESS_ACK(0xA1, "动作完成成功应答", DirectionType.DOWN), ACTION_FAIL_ACK(0xA0, "动作完成失败应答", DirectionType.DOWN), // 上行 ------------------------------------------------------------------- PATH_ACK(0x01, "路径应答包", DirectionType.UP), COMMAND_ACK(0x02, "命令应答包", DirectionType.UP), ACTION_COMPLETE(0x11, "动作完成包", DirectionType.UP), DATA_CODE_REPORT(0x12, "有码实时数据包", DirectionType.UP), DATA_WITHOUT_CODE_REPORT(0x13, "无码实时数据包", DirectionType.UP), HEARTBEAT_REPORT(0x03, "心跳包", DirectionType.UP), FAULT_REPORT(0x04, "故障数据包", DirectionType.UP), HANDLE_FALUT_ACK(0x14, "故障清除应答包", DirectionType.UP), SILO_REPORT(0x70, "料仓信息包", DirectionType.UP), LOGIN_REPORT(0xF0, "机器人登陆数据包", DirectionType.UP), ; private final int code; // 编码 private final String des; // 描述 private final DirectionType direction; ProtocolType(int code, String des, DirectionType direction) { this.code = code; this.des = des; this.direction = direction; } public int getCode() { return code; } public String getDes() { return des; } public DirectionType getDirection() { return direction; } public static ProtocolType getByCode(int code, DirectionType direction) { for (ProtocolType type : ProtocolType.values()) { if (type.getCode() == code && type.getDirection() == direction) { return type; } } return null; } }