Browse Source

将错误码和应用错误码统一为A8kEcode

tags/v0
zhaohe 1 year ago
parent
commit
3dd226b6f8
  1. 126
      src/main/java/a8k/a8k_can_protocol/A8kEcode.java
  2. 4
      src/main/java/a8k/a8k_can_protocol/A8kPacket.java
  3. 172
      src/main/java/a8k/a8k_can_protocol/Errorcode.java
  4. 38
      src/main/java/a8k/appbean/AppErrorCode.java
  5. 4
      src/main/java/a8k/appbean/HardwareException.java
  6. 10
      src/main/java/a8k/appbean/ecode/AppEcode.java
  7. 14
      src/main/java/a8k/base_hardware/A8kCanBusService.java
  8. 1
      src/main/java/a8k/controller/TmpTestController.java
  9. 23
      src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java
  10. 14
      src/main/java/a8k/service/data_service/UsrMgrService.java
  11. 7
      src/main/java/a8k/service/hardware/HbotControlService.java
  12. 2
      src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java
  13. 13
      src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java
  14. BIN
      zhaohe_app.db

126
src/main/java/a8k/a8k_can_protocol/A8kEcode.java

@ -0,0 +1,126 @@
package a8k.a8k_can_protocol;
public enum A8kEcode {
//
// FOR APP
//
Success(0, "成功"), //
TubeNotHasHat(1, "全血试管未盖帽"), //
SampleLiquidLevelWasNotDetected(2, "取样时未探测到液面"),//
LargeBufferNotEnough(3, "大瓶缓冲液不足"), //
PasswdError(4, "密码错误"), //
UserDoesNotExist(5, "用户不存在"), //
GripperMPosError(6, "抓手舵机位置异常"), //
GripperZMPosError(8, "抓手升降电机位置异常"), //
GripperYMPosError(9, "抓手前后移动舵机位置异常"),//
TubesInShakeModule(10, "摇匀模组位置有试管"),//
PlateStuckDetectorSensorTrigger(11, "卡板检查光电触发"),//
PlateBoxNotCover(12, "板夹仓盖子未关闭"),//
PullerMInitPosError(13, "板夹钩爪电机没有处于转盘中央"),//
PusherMInitPosError(14, "板夹仓推杆电机没有处于零点位置"),//
RecycleBinOverflow(15, "回收仓满"),//
MotorLostStep(16,"电机丢步"),//
//
// FOR HARDWARE
//
HardwareError(1001, "HardwareError"),//
ParamOutOfRange(1102, "ParamOutOfRange"),//
CmdNotSupport(1103, "CmdNotSupport"),//
DeviceIsBusy(1104, "DeviceIsBusy"),//
DeviceIsOffline(1105, "DeviceIsOffline"),//
Overtime(1106, "Overtime"),//
Noack(1107, "Noack"),//
Errorack(1108, "Errorack"),//
DeviceOffline(1109, "DeviceOffline"),//
SubdeviceOvertime(1111, "SubdeviceOvertime"),//
BufferNotEnough(1112, "BufferNotEnough"),//
CmdParamNumError(1114, "CmdParamNumError"),//
CheckcodeIsError(1115, "CheckcodeIsError"),//
IllegalOperation(1116, "IllegalOperation"),//
ActionOvertime(1117, "ActionOvertime"),//
ModuleOpeationBreakByUser(1202, "ModuleOpeationBreakByUser"),//
ModuleNotFindReg(1207, "ModuleNotFindReg"),//
XYMotorXFindZeroEdgeFail(1306, "XYMotorXFindZeroEdgeFail"),//
XYMotorYFindZeroEdgeFail(1307, "XYMotorYFindZeroEdgeFail"),//
XYMotorNotEnable(1308, "XYMotorNotEnable"),//
XYMotorTargetPosOutofRange(1309, "XYMotorTargetPosOutofRange"),//
PipetteErrorNoerror(1400, "PipetteErrorNoerror"),//
PipetteErrorInitfail(1401, "PipetteErrorInitfail"),//
PipetteErrorInvalidcmd(1402, "PipetteErrorInvalidcmd"),//
PipetteErrorInvalidarg(1403, "PipetteErrorInvalidarg"),//
PipetteErrorPressuresensorerror(1404, "PipetteErrorPressuresensorerror"),//
PipetteErrorOverpressure(1405, "PipetteErrorOverpressure"),//
PipetteErrorLlderror(1406, "PipetteErrorLlderror"),//
PipetteErrorDevicenotinit(1407, "PipetteErrorDevicenotinit"),//
PipetteErrorTippoperror(1408, "PipetteErrorTippoperror"),//
PipetteErrorPumpoverload(1409, "PipetteErrorPumpoverload"),//
PipetteErrorTipdrop(1410, "PipetteErrorTipdrop"),//
PipetteErrorCanbuserror(1411, "PipetteErrorCanbuserror"),//
PipetteErrorInvalidchecksum(1412, "PipetteErrorInvalidchecksum"),//
PipetteErrorEepromerror(1413, "PipetteErrorEepromerror"),//
PipetteErrorCmdbufferempty(1414, "PipetteErrorCmdbufferempty"),//
PipetteErrorCmdbufferoverflow(1415, "PipetteErrorCmdbufferoverflow"),//
PipetteErrorTipblock(1416, "PipetteErrorTipblock"),//
PipetteErrorAirsuction(1417, "PipetteErrorAirsuction"),//
PipetteErrorBubble(1418, "PipetteErrorBubble"),//
PipetteErrorVolumeerror(1419, "PipetteErrorVolumeerror"),//
PipetteErrorTipalreadyload(1420, "PipetteErrorTipalreadyload"),//
PipetteErrorTiploadfail(1421, "PipetteErrorTiploadfail"),//
PipetteErrorUninited(1501, "PipetteErrorUninited"),//
PipetteErrorNotLldPrepare(1502, "PipetteErrorNotLldPrepare"),//
PipetteErrorTipisloadWhenLldPrepare(1500, "PipetteErrorTipisloadWhenLldPrepare"),//
PipetteErrorPumpLoadValIsNotEmpty(1503, "PipetteErrorPumpLoadValIsNotEmpty"),//
StepMotorNotFoundZeroPoint(1600, "StepMotorNotFoundZeroPoint"),//
StepMotorNotGoZero(1601, "StepMotorNotGoZero"),//
StepMotorOverTemperature(1602, "StepMotorOverTemperature"),//
StepMotorOverVoltage(1603, "StepMotorOverVoltage"),//
StepMotorRunOvertime(1604, "StepMotorRunOvertime"),//
StepMotorNotEnable(1605, "StepMotorNotEnable"),//
StepMotorIoindexOutOfRange(1606, "StepMotorIoindexOutOfRange"),//
StepMotorSubicReset(1607, "StepMotorSubicReset"),//
StepMotorDrvErr(1608, "StepMotorDrvErr"),//
StepMotorUvCp(1609, "StepMotorUvCp"),//
StepMotorNotFoundPointEdge(1610, "StepMotorNotFoundPointEdge"),//
StepMotorLostStep(1611, "StepMotorLostStep"),//
MiniServoNotEnable(1700, "MiniServoNotEnable"),//
MiniServoModeNotSupport(1701, "MiniServoModeNotSupport"),//
FanHardwareFault(1800, "FanHardwareFault"),//
WaterCoolingFanError(1900, "WaterCoolingFanError"),//
WaterCoolingTemperatureSensorError(1902, "WaterCoolingTemperatureSensorError"),//
WaterCoolingPumpIsError(1903, "WaterCoolingPumpIsError"),//
WaterCoolingPelterIsError(1904, "WaterCoolingPelterIsError"),
;
public int index;
public String chname;
A8kEcode(int index, String chname) {
this.index = index;
this.chname = chname;
}
public int toInt() {
return index;
}
public static A8kEcode valueOf(int val) {
A8kEcode[] values = A8kEcode.values();
for (A8kEcode e : values) {
if (e.toInt() == val)
return e;
}
return null;
}
public static String toString(int val) {
A8kEcode[] values = A8kEcode.values();
for (A8kEcode e : values) {
if(e.toInt() == val){
return e.toString();
}
}
return "unkown("+val+")";
}
}

4
src/main/java/a8k/a8k_can_protocol/A8kPacket.java

@ -41,9 +41,11 @@ public class A8kPacket {
raw = new byte[cmd.length]; raw = new byte[cmd.length];
System.arraycopy(cmd, 0, raw, 0, cmd.length); System.arraycopy(cmd, 0, raw, 0, cmd.length);
} }
public void setPacketIndex(int packetIndex) { public void setPacketIndex(int packetIndex) {
ByteArray.setU16bit(raw, 0, packetIndex); ByteArray.setU16bit(raw, 0, packetIndex);
} }
public int getPacketIndex() { public int getPacketIndex() {
return ByteArray.readU16bit(raw, 0); return ByteArray.readU16bit(raw, 0);
} }
@ -93,7 +95,7 @@ public class A8kPacket {
ret = String.format("[ACK ] PI:0x%x (cmd:%s mid:%d :[%s])", getPacketIndex(), cmdIdInfo.name, getModuleId(), ByteArray.toByteString(getCmdContent())); ret = String.format("[ACK ] PI:0x%x (cmd:%s mid:%d :[%s])", getPacketIndex(), cmdIdInfo.name, getModuleId(), ByteArray.toByteString(getCmdContent()));
} }
} else if (packetType == PACKET_TYPE_ERROR_ACK) { } else if (packetType == PACKET_TYPE_ERROR_ACK) {
ret = String.format("[EACK ] PI:0x%x (cmd:%s mid:%d :[%s])", getPacketIndex(), cmdIdInfo.name, getModuleId(), Errorcode.toString(getContentI32(0)));
ret = String.format("[EACK ] PI:0x%x (cmd:%s mid:%d :[%s])", getPacketIndex(), cmdIdInfo.name, getModuleId(), A8kEcode.toString(getContentI32(0)));
} else if (packetType == PACKET_TYPE_EVENT) { } else if (packetType == PACKET_TYPE_EVENT) {
if (cmdIdInfo.cmdAttachType == CmdIdInfo.ATTACH_IS_INT32) { if (cmdIdInfo.cmdAttachType == CmdIdInfo.ATTACH_IS_INT32) {
ret = String.format("[EVENT] PI:0x%x (cmd:%s mid:%d :[%s])", getPacketIndex(), cmdIdInfo.name, getModuleId(), formatInt32ATTACH(getCmdContent())); ret = String.format("[EVENT] PI:0x%x (cmd:%s mid:%d :[%s])", getPacketIndex(), cmdIdInfo.name, getModuleId(), formatInt32ATTACH(getCmdContent()));

172
src/main/java/a8k/a8k_can_protocol/Errorcode.java

@ -1,172 +0,0 @@
package a8k.a8k_can_protocol;
public class Errorcode {
public static final int ksucc = (0 + 0);
public static final int kfail = (0 + 1);
/***********************************************************************************************************************
* 协议错误码 *
***********************************************************************************************************************/
public static final int kparam_out_of_range = (100 + 2); // 参数超出范围
public static final int kcmd_not_support = (100 + 3); // 操作不支持
public static final int kdevice_is_busy = (100 + 4); // 设备忙
public static final int kdevice_is_offline = (100 + 5); // 设备离线
public static final int kovertime = (100 + 6);
public static final int knoack = (100 + 7);
public static final int kerrorack = (100 + 8);
public static final int kdevice_offline = (100 + 9);
public static final int ksubdevice_overtime = (100 + 11);
public static final int kbuffer_not_enough = (100 + 12);
public static final int kcmd_param_num_error = (100 + 14);
public static final int kcheckcode_is_error = (100 + 15);
public static final int killegal_operation = (100 + 16);
public static final int kaction_overtime = (100 + 17);
/***********************************************************************************************************************
* 模块错误码 *
***********************************************************************************************************************/
public static final int kmodule_opeation_break_by_user = (200 + 2); // 用户中断
public static final int kmodule_not_find_reg = (200 + 7); // et 未找到配置索引
/***********************************************************************************************************************
* XY电机驱动错误码 *
***********************************************************************************************************************/
public static final int kxymotor_x_find_zero_edge_fail = (300 + 6); // 离开零点失败
public static final int kxymotor_y_find_zero_edge_fail = (300 + 7); // 离开零点失败
public static final int kxymotor_not_enable = (300 + 8);
public static final int kxymotor_target_pos_outof_range = (300 + 9);
/***********************************************************************************************************************
* 移液枪错误码 *
***********************************************************************************************************************/
public static final int kpipette_error_NoError = (400 + 0); // 无错误
public static final int kpipette_error_InitFail = (400 + 1); // 初始化失败
public static final int kpipette_error_InvalidCmd = (400 + 2); // 无效命令
public static final int kpipette_error_InvalidArg = (400 + 3); // 无效参数
public static final int kpipette_error_PressureSensorError = (400 + 4); // 压力传感器故障
public static final int kpipette_error_OverPressure = (400 + 5); // 超过压力
public static final int kpipette_error_LLDError = (400 + 6); // LLD 错误
public static final int kpipette_error_DeviceNotInit = (400 + 7); // 设备未初始化
public static final int kpipette_error_TipPopError = (400 + 8); // Tip 弹出错误
public static final int kpipette_error_PumpOverload = (400 + 9); // 泵过载
public static final int kpipette_error_TipDrop = (400 + 10); // Tip 脱落
public static final int kpipette_error_CanBusError = (400 + 11); // CAN 总线故障
public static final int kpipette_error_InvalidChecksum = (400 + 12); // 无效校验和
public static final int kpipette_error_EEPROMError = (400 + 13); // EEPROM 故障
public static final int kpipette_error_CmdBufferEmpty = (400 + 14); // 命令缓冲区为空
public static final int kpipette_error_CmdBufferOverflow = (400 + 15); // 命令溢出
public static final int kpipette_error_TipBlock = (400 + 16); // Tip 堵塞
public static final int kpipette_error_AirSuction = (400 + 17); // 吸入空气
public static final int kpipette_error_Bubble = (400 + 18); // 液体中有气泡/泡沫
public static final int kpipette_error_VolumeError = (400 + 19); // 吸取/分配量不准确
public static final int kpipette_error_TipAlreadyLoad = (400 + 20); // Tip已经装载
public static final int kpipette_error_TipLoadFail = (400 + 21);
public static final int kpipette_error_tipisload_when_lld_prepare = (500 + 0); // 未卸载Tip就进行LLD准备
public static final int kpipette_error_uninited = (500 + 1); // 泵机未初始化
public static final int kpipette_error_not_lld_prepare = (500 + 2); // 为执行lld_prepare
public static final int kpipette_error_pump_load_val_is_not_empty = (500 + 3); // 为执行lld_prepare
/***********************************************************************************************************************
* 步进电机错误码 *
***********************************************************************************************************************/
public static final int kstep_motor_not_found_zero_point = (600 + 0); // 未找到零点
public static final int kstep_motor_not_go_zero = (600 + 1); // 设备未归零
public static final int kstep_motor_over_temperature = (600 + 2); // 过温
public static final int kstep_motor_over_voltage = (600 + 3); // 过压
public static final int kstep_motor_run_overtime = (600 + 4); // 运行超时
public static final int kstep_motor_not_enable = (600 + 5); // 电机未使能
public static final int kstep_motor_ioindex_out_of_range = (600 + 6); // IO超出范围
public static final int kstep_motor_subic_reset = (600 + 7); // 子IC复位
public static final int kstep_motor_drv_err = (600 + 8); // 驱动器异常
public static final int kstep_motor_uv_cp = (600 + 9); // 驱动器异常
public static final int kstep_motor_not_found_point_edge = (600 + 10); // 未找到零点
public static final int kstep_motor_lost_step = (600 + 11); // 电机丢步
/***********************************************************************************************************************
* 舵机错误码 *
***********************************************************************************************************************/
public static final int kmini_servo_not_enable = (700 + 0); //
public static final int kmini_servo_mode_not_support = (700 + 1); //
/***********************************************************************************************************************
* 风扇错误码 *
***********************************************************************************************************************/
public static final int kfan_hardware_fault = (800 + 0); //
/***********************************************************************************************************************
* 水冷错误码 *
***********************************************************************************************************************/
public static final int kwater_cooling_fan_error = (900 + 0); //
public static final int kwater_cooling_temperature_sensor_error = (900 + 2); //
public static final int kwater_cooling_pump_is_error = (900 + 3); //
public static final int kwater_cooling_pelter_is_error = (900 + 4); //
static public String toString(Integer ecode) {
return switch (ecode) {
case ksucc -> "ksucc";
case kfail -> "kfail";
case kparam_out_of_range -> "kparam_out_of_range";
case kcmd_not_support -> "kcmd_not_support";
case kdevice_is_busy -> "kdevice_is_busy";
case kdevice_is_offline -> "kdevice_is_offline";
case kovertime -> "kovertime";
case knoack -> "knoack";
case kerrorack -> "kerrorack";
case kdevice_offline -> "kdevice_offline";
case ksubdevice_overtime -> "ksubdevice_overtime";
case kbuffer_not_enough -> "kbuffer_not_enough";
case kcmd_param_num_error -> "kcmd_param_num_error";
case kcheckcode_is_error -> "kcheckcode_is_error";
case killegal_operation -> "killegal_operation";
case kaction_overtime -> "kaction_overtime";
case kmodule_opeation_break_by_user -> "kmodule_opeation_break_by_user";
case kmodule_not_find_reg -> "kmodule_not_find_reg";
case kxymotor_x_find_zero_edge_fail -> "kxymotor_x_find_zero_edge_fail";
case kxymotor_y_find_zero_edge_fail -> "kxymotor_y_find_zero_edge_fail";
case kxymotor_not_enable -> "kxymotor_not_enable";
case kxymotor_target_pos_outof_range -> "kxymotor_target_pos_outof_range";
case kpipette_error_NoError -> "kpipette_error_NoError";
case kpipette_error_InitFail -> "kpipette_error_InitFail";
case kpipette_error_InvalidCmd -> "kpipette_error_InvalidCmd";
case kpipette_error_InvalidArg -> "kpipette_error_InvalidArg";
case kpipette_error_PressureSensorError -> "kpipette_error_PressureSensorError";
case kpipette_error_OverPressure -> "kpipette_error_OverPressure";
case kpipette_error_LLDError -> "kpipette_error_LLDError";
case kpipette_error_DeviceNotInit -> "kpipette_error_DeviceNotInit";
case kpipette_error_TipPopError -> "kpipette_error_TipPopError";
case kpipette_error_PumpOverload -> "kpipette_error_PumpOverload";
case kpipette_error_TipDrop -> "kpipette_error_TipDrop";
case kpipette_error_CanBusError -> "kpipette_error_CanBusError";
case kpipette_error_InvalidChecksum -> "kpipette_error_InvalidChecksum";
case kpipette_error_EEPROMError -> "kpipette_error_EEPROMError";
case kpipette_error_CmdBufferEmpty -> "kpipette_error_CmdBufferEmpty";
case kpipette_error_CmdBufferOverflow -> "kpipette_error_CmdBufferOverflow";
case kpipette_error_TipBlock -> "kpipette_error_TipBlock";
case kpipette_error_AirSuction -> "kpipette_error_AirSuction";
case kpipette_error_Bubble -> "kpipette_error_Bubble";
case kpipette_error_VolumeError -> "kpipette_error_VolumeError";
case kpipette_error_TipAlreadyLoad -> "kpipette_error_TipAlreadyLoad";
case kpipette_error_TipLoadFail -> "kpipette_error_TipLoadFail";
case kpipette_error_tipisload_when_lld_prepare -> "kpipette_error_tipisload_when_lld_prepare";
case kpipette_error_uninited -> "kpipette_error_uninited";
case kpipette_error_not_lld_prepare -> "kpipette_error_not_lld_prepare";
case kpipette_error_pump_load_val_is_not_empty -> "kpipette_error_pump_load_val_is_not_empty";
case kstep_motor_not_found_zero_point -> "kstep_motor_not_found_zero_point";
case kstep_motor_not_go_zero -> "kstep_motor_not_go_zero";
case kstep_motor_over_temperature -> "kstep_motor_over_temperature";
case kstep_motor_over_voltage -> "kstep_motor_over_voltage";
case kstep_motor_run_overtime -> "kstep_motor_run_overtime";
case kstep_motor_not_enable -> "kstep_motor_not_enable";
case kstep_motor_ioindex_out_of_range -> "kstep_motor_ioindex_out_of_range";
case kstep_motor_subic_reset -> "kstep_motor_subic_reset";
case kstep_motor_drv_err -> "kstep_motor_drv_err";
case kstep_motor_uv_cp -> "kstep_motor_uv_cp";
case kstep_motor_not_found_point_edge -> "kstep_motor_not_found_point_edge";
case kstep_motor_lost_step -> "kstep_motor_lost_step";
case kmini_servo_not_enable -> "kmini_servo_not_enable";
case kmini_servo_mode_not_support -> "kmini_servo_mode_not_support";
case kfan_hardware_fault -> "kfan_hardware_fault";
case kwater_cooling_fan_error -> "kwater_cooling_fan_error";
case kwater_cooling_temperature_sensor_error -> "kwater_cooling_temperature_sensor_error";
case kwater_cooling_pump_is_error -> "kwater_cooling_pump_is_error";
case kwater_cooling_pelter_is_error -> "kwater_cooling_pelter_is_error";
default -> "unkown" + "(" + ecode + ")";
};
}
}

38
src/main/java/a8k/appbean/AppErrorCode.java

@ -1,38 +0,0 @@
package a8k.appbean;
public enum AppErrorCode {
Success("成功", 0), //
TubeNotHasHat("全血试管未盖帽", 1), //
SampleLiquidLevelWasNotDetected("取样时未探测到液面", 2),//
LargeBufferNotEnough("大瓶缓冲液不足", 3), //
PasswdError("密码错误", 4), //
UserDoesNotExist("用户不存在", 5), //
GripperMPosError("抓手舵机位置异常", 6), //
GripperZMPosError("抓手升降电机位置异常", 8), //
GripperYMPosError("抓手前后移动舵机位置异常", 9),//
TubesInShakeModule("摇匀模组位置有试管", 10),//
PlateStuckDetectorSensorTrigger("卡板检查光电触发", 11),//
PlateBoxNotCover("板夹仓盖子未关闭", 12),//
PullerMInitPosError("板夹钩爪电机没有处于转盘中央", 13),//
PusherMInitPosError("板夹仓推杆电机没有处于零点位置", 14),//
RecycleBinOverflow("回收仓满", 15),//
;
final private String chName;
final private int errorIndex;
private AppErrorCode(String chname, int errorIndex) {
this.chName = chname;
this.errorIndex = errorIndex;
}
public String getChName() {
return chName;
}
public int getErrorCode() {
return errorIndex;
}
}

4
src/main/java/a8k/appbean/HardwareException.java

@ -1,6 +1,6 @@
package a8k.appbean; package a8k.appbean;
import a8k.a8k_can_protocol.Errorcode;
import a8k.a8k_can_protocol.A8kEcode;
import a8k.a8k_can_protocol.ModId; import a8k.a8k_can_protocol.ModId;
public class HardwareException extends Exception { public class HardwareException extends Exception {
@ -14,7 +14,7 @@ public class HardwareException extends Exception {
} }
public HardwareException(int moduleId, int HardwareErrorCode) { public HardwareException(int moduleId, int HardwareErrorCode) {
super(String.format("Module ID %s has error code %s", ModId.ModuleId2Name(moduleId), Errorcode.toString(HardwareErrorCode)));
super(String.format("Module ID %s has error code %s", ModId.ModuleId2Name(moduleId), A8kEcode.toString(HardwareErrorCode)));
this.errorCode = HardwareErrorCode; this.errorCode = HardwareErrorCode;
this.moduleId = moduleId; this.moduleId = moduleId;
} }

10
src/main/java/a8k/appbean/ecode/AppEcode.java

@ -1,25 +1,25 @@
package a8k.appbean.ecode; package a8k.appbean.ecode;
import a8k.a8k_can_protocol.MId; import a8k.a8k_can_protocol.MId;
import a8k.appbean.AppErrorCode;
import a8k.a8k_can_protocol.A8kEcode;
public class AppEcode { public class AppEcode {
public AppErrorCode errorCode;
public A8kEcode errorCode;
public MId mid; public MId mid;
public AppEcode(AppErrorCode errorCode, MId mid) {
public AppEcode(A8kEcode errorCode, MId mid) {
this.errorCode = errorCode; this.errorCode = errorCode;
this.mid = mid; this.mid = mid;
} }
public AppEcode(AppErrorCode errorCode) {
public AppEcode(A8kEcode errorCode) {
this.errorCode = errorCode; this.errorCode = errorCode;
this.mid = MId.NotSet; this.mid = MId.NotSet;
} }
public boolean isOk() { public boolean isOk() {
return errorCode == AppErrorCode.Success;
return errorCode == A8kEcode.Success;
} }
public MId getMid() { public MId getMid() {

14
src/main/java/a8k/base_hardware/A8kCanBusService.java

@ -285,7 +285,7 @@ public class A8kCanBusService {
} else if (ioid.mtype == ModuleType.kmini_servo_motor_module) { } else if (ioid.mtype == ModuleType.kmini_servo_motor_module) {
return callcmd(ioid.mid, CmdId.kmini_servo_read_io_state, ioid.ioIndex).getContentI32(0) != 0; return callcmd(ioid.mid, CmdId.kmini_servo_read_io_state, ioid.ioIndex).getContentI32(0) != 0;
} else { } else {
throw new HardwareException(ioid.mid, Errorcode.killegal_operation);
throw new HardwareException(ioid.mid, A8kEcode.IllegalOperation.toInt());
} }
} }
@ -293,7 +293,7 @@ public class A8kCanBusService {
if (ioid.mtype == ModuleType.kboard) { if (ioid.mtype == ModuleType.kboard) {
callcmd(ioid.mid, CmdId.kextboard_write_outio, ioid.ioIndex, val ? 1 : 0); callcmd(ioid.mid, CmdId.kextboard_write_outio, ioid.ioIndex, val ? 1 : 0);
} else { } else {
throw new HardwareException(ioid.mid, Errorcode.killegal_operation);
throw new HardwareException(ioid.mid, A8kEcode.IllegalOperation.toInt());
} }
} }
@ -311,7 +311,7 @@ public class A8kCanBusService {
} }
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
if (now - startedAt > acitionOvertime) { if (now - startedAt > acitionOvertime) {
throw new HardwareException(mid.toInt(), Errorcode.kovertime);
throw new HardwareException(mid.toInt(), A8kEcode.Overtime.toInt());
} }
Thread.sleep(100); Thread.sleep(100);
@ -389,7 +389,7 @@ public class A8kCanBusService {
try { try {
return this.sendCmd(pack, A8kPacket.CMD_OVERTIME); return this.sendCmd(pack, A8kPacket.CMD_OVERTIME);
} catch (HardwareException e) { } catch (HardwareException e) {
if (e.getErrorCode() != Errorcode.kovertime) {
if (e.getErrorCode() != A8kEcode.Overtime.toInt()); {
throw e; throw e;
} }
} }
@ -416,7 +416,7 @@ public class A8kCanBusService {
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
if (now - startedAt > acitionOvertime) { if (now - startedAt > acitionOvertime) {
throw new HardwareException(pack.getModuleId(), Errorcode.kovertime);
throw new HardwareException(pack.getModuleId(), A8kEcode.Overtime.toInt());
} }
Thread.sleep(100); Thread.sleep(100);
@ -443,11 +443,11 @@ public class A8kCanBusService {
receipt = receiptQueue.poll(overtime, TimeUnit.MILLISECONDS); receipt = receiptQueue.poll(overtime, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) { } catch (InterruptedException e) {
isWaitingReceipt = false; isWaitingReceipt = false;
throw new HardwareException(pack.getModuleId(), Errorcode.kovertime);
throw new HardwareException(pack.getModuleId(), A8kEcode.Overtime.toInt());
} }
isWaitingReceipt = false; isWaitingReceipt = false;
if (receipt == null) { if (receipt == null) {
throw new HardwareException(pack.getModuleId(), Errorcode.kovertime);
throw new HardwareException(pack.getModuleId(), A8kEcode.Overtime.toInt());
} }
if (receipt.getPacketType() == A8kPacket.PACKET_TYPE_ERROR_ACK) { if (receipt.getPacketType() == A8kPacket.PACKET_TYPE_ERROR_ACK) {

1
src/main/java/a8k/controller/TmpTestController.java

@ -2,7 +2,6 @@ package a8k.controller;
import a8k.a8k_can_protocol.CmdId; import a8k.a8k_can_protocol.CmdId;
import a8k.a8k_can_protocol.ModId; import a8k.a8k_can_protocol.ModId;
import a8k.appbean.AppErrorCode;
import a8k.appbean.HardwareException; import a8k.appbean.HardwareException;
import a8k.appbean.ecode.AppEcode; import a8k.appbean.ecode.AppEcode;
import a8k.base_hardware.A8kCanBusService; import a8k.base_hardware.A8kCanBusService;

23
src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java

@ -1,8 +1,8 @@
package a8k.service.ctrl_service; package a8k.service.ctrl_service;
import a8k.a8k_can_protocol.A8kEcode;
import a8k.a8k_can_protocol.IOId; import a8k.a8k_can_protocol.IOId;
import a8k.a8k_can_protocol.MId; import a8k.a8k_can_protocol.MId;
import a8k.appbean.AppErrorCode;
import a8k.appbean.HardwareException; import a8k.appbean.HardwareException;
import a8k.appbean.ecode.AppEcode; import a8k.appbean.ecode.AppEcode;
import a8k.base_hardware.A8kCanBusService; import a8k.base_hardware.A8kCanBusService;
@ -43,47 +43,46 @@ public class DeviceInitializationCtrlService {
// 试管夹紧电机打开一点好方便有试管夹住的时突然断电时将试管取出 // 试管夹紧电机打开一点好方便有试管夹住的时突然断电时将试管取出
canBus.stepMotorEasyMoveBy(MId.ShakeModClampingM, 2); canBus.stepMotorEasyMoveBy(MId.ShakeModClampingM, 2);
canBus.waitForMod(MId.ShakeModClampingM, actionOvertime); canBus.waitForMod(MId.ShakeModClampingM, actionOvertime);
return new AppEcode(AppErrorCode.Success);
return new AppEcode(A8kEcode.Success);
} }
private AppEcode checkDeviceState() throws HardwareException { private AppEcode checkDeviceState() throws HardwareException {
//试管平移通道是否有障碍 //试管平移通道是否有障碍
if (canBus.getIOState(IOId.THChInterPPS) || canBus.getIOState(IOId.THChOuterPPS)) { if (canBus.getIOState(IOId.THChInterPPS) || canBus.getIOState(IOId.THChOuterPPS)) {
logger.warn("THChInterPPS or THChOuterPPS is trigger"); logger.warn("THChInterPPS or THChOuterPPS is trigger");
return new AppEcode(AppErrorCode.PlateStuckDetectorSensorTrigger);
return new AppEcode(A8kEcode.PlateStuckDetectorSensorTrigger);
} }
//板夹仓盖子是否盖上 //板夹仓盖子是否盖上
if (!canBus.getIOState(IOId.PlateBoxCoverClosurePPS)) { if (!canBus.getIOState(IOId.PlateBoxCoverClosurePPS)) {
logger.warn("PlateBoxCoverClosure is open"); logger.warn("PlateBoxCoverClosure is open");
return new AppEcode(AppErrorCode.PlateBoxNotCover);
return new AppEcode(A8kEcode.PlateBoxNotCover);
} }
//板夹仓卡板检测 //板夹仓卡板检测
if (canBus.getIOState(IOId.PlateBoxPlateStuckPPS)) { if (canBus.getIOState(IOId.PlateBoxPlateStuckPPS)) {
logger.warn("PlateBoxPlateStuckPPS is trigger"); logger.warn("PlateBoxPlateStuckPPS is trigger");
return new AppEcode(AppErrorCode.PlateStuckDetectorSensorTrigger);
return new AppEcode(A8kEcode.PlateStuckDetectorSensorTrigger);
} }
//检查钩板电机是否处于终点位置 //检查钩板电机是否处于终点位置
if (!canBus.getIOState(IOId.PullerMZeroPPS)) { if (!canBus.getIOState(IOId.PullerMZeroPPS)) {
logger.warn("PullerM is not in zero pos"); logger.warn("PullerM is not in zero pos");
return new AppEcode(AppErrorCode.PullerMInitPosError);
return new AppEcode(A8kEcode.PullerMInitPosError);
} }
//检查板夹仓光电是否处于起点位置 //检查板夹仓光电是否处于起点位置
if (!canBus.getIOState(IOId.PusherMZeroPPS)) { if (!canBus.getIOState(IOId.PusherMZeroPPS)) {
logger.warn("PusherM is not in zero pos"); logger.warn("PusherM is not in zero pos");
return new AppEcode(AppErrorCode.PusherMInitPosError);
return new AppEcode(A8kEcode.PusherMInitPosError);
} }
//板夹仓光电 //板夹仓光电
if (canBus.getIOState(IOId.RecycleBinOverflowPPS)) { if (canBus.getIOState(IOId.RecycleBinOverflowPPS)) {
logger.warn("RecycleBinOverflow is trigger"); logger.warn("RecycleBinOverflow is trigger");
return new AppEcode(AppErrorCode.RecycleBinOverflow);
return new AppEcode(A8kEcode.RecycleBinOverflow);
} }
return new AppEcode(AppErrorCode.Success);
return new AppEcode(A8kEcode.Success);
} }
private AppEcode moveMotorToZero() throws HardwareException, InterruptedException { private AppEcode moveMotorToZero() throws HardwareException, InterruptedException {
@ -137,7 +136,7 @@ public class DeviceInitializationCtrlService {
//canBus.waitForMod(MId.ShakeModGripperZM, actionOvertime); //canBus.waitForMod(MId.ShakeModGripperZM, actionOvertime);
return new AppEcode(AppErrorCode.Success);
return new AppEcode(A8kEcode.Success);
} }
@ -183,7 +182,7 @@ public class DeviceInitializationCtrlService {
} }
return new AppEcode(AppErrorCode.Success);
return new AppEcode(A8kEcode.Success);
} }

14
src/main/java/a8k/service/data_service/UsrMgrService.java

@ -1,6 +1,6 @@
package a8k.service.data_service; package a8k.service.data_service;
import a8k.appbean.AppErrorCode;
import a8k.a8k_can_protocol.A8kEcode;
import a8k.service.appdb.dao.AppUsrDao; import a8k.service.appdb.dao.AppUsrDao;
import a8k.service.appdb.entity.AppUsr; import a8k.service.appdb.entity.AppUsr;
import a8k.service.state_service.A8kStateMgrService; import a8k.service.state_service.A8kStateMgrService;
@ -32,13 +32,13 @@ public class UsrMgrService {
} }
//TODO //TODO
public AppErrorCode addUsr(AppUsr usr) {
return AppErrorCode.Success;
public A8kEcode addUsr(AppUsr usr) {
return A8kEcode.Success;
} }
//TODO //TODO
public AppErrorCode updateUsr(String uname, String passwd) {
return AppErrorCode.Success;
public A8kEcode updateUsr(String uname, String passwd) {
return A8kEcode.Success;
} }
@ -51,13 +51,13 @@ public class UsrMgrService {
* *
* *
*/ */
public AppErrorCode verifyAndLoginAppUsr(Integer loginType, String uname, String passwd) {
public A8kEcode verifyAndLoginAppUsr(Integer loginType, String uname, String passwd) {
/* /*
*TODO *TODO
* 实现描述: * 实现描述:
* 1. 校验成功,则调用A8kStateMgrService.loginAppUsr 或者 A8kStateMgrService.loginDebugPageUsr * 1. 校验成功,则调用A8kStateMgrService.loginAppUsr 或者 A8kStateMgrService.loginDebugPageUsr
*/ */
return AppErrorCode.UserDoesNotExist;
return A8kEcode.UserDoesNotExist;
} }

7
src/main/java/a8k/service/hardware/HbotControlService.java

@ -1,6 +1,6 @@
package a8k.service.hardware; package a8k.service.hardware;
import a8k.appbean.AppErrorCode;
import a8k.a8k_can_protocol.A8kEcode;
/** /**
* Hbot控制服务 * Hbot控制服务
@ -26,10 +26,11 @@ public class HbotControlService {
} }
//丢tip //丢tip
public AppErrorCode dropTip() {
return AppErrorCode.Success;
public A8kEcode dropTip() {
return A8kEcode.Success;
} }
//扫描板夹仓二维码 //扫描板夹仓二维码
public String scanPlatesCode(int index, int overtime) { public String scanPlatesCode(int index, int overtime) {
return ""; return "";

2
src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java

@ -69,7 +69,7 @@ public class MotorTubeRackMoveCtrlService {
var dval = a8kCanBusService.module_read_reg(ModId.FeedingModXM, RegIndex.kreg_step_motor_dpos); var dval = a8kCanBusService.module_read_reg(ModId.FeedingModXM, RegIndex.kreg_step_motor_dpos);
if (Math.abs(dval - distance) > params.horizontalMotorLostStepThresholdVal) { if (Math.abs(dval - distance) > params.horizontalMotorLostStepThresholdVal) {
throw new HardwareException(ModId.FeedingModXM, Errorcode.kstep_motor_lost_step);
throw new HardwareException(ModId.FeedingModXM, A8kEcode.MotorLostStep.toInt());
} }
//先通过move_to 指令移动到零点 //先通过move_to 指令移动到零点

13
src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java

@ -1,9 +1,9 @@
package a8k.service.hardware; package a8k.service.hardware;
import a8k.a8k_can_protocol.A8kEcode;
import a8k.a8k_can_protocol.CmdId; import a8k.a8k_can_protocol.CmdId;
import a8k.a8k_can_protocol.ModId; import a8k.a8k_can_protocol.ModId;
import a8k.appbean.A8kTubeType; import a8k.appbean.A8kTubeType;
import a8k.appbean.AppErrorCode;
import a8k.appbean.HardwareException; import a8k.appbean.HardwareException;
import a8k.base_hardware.A8kCanBusService; import a8k.base_hardware.A8kCanBusService;
import a8k.service.db.dao.A8kTubeInfoDao; import a8k.service.db.dao.A8kTubeInfoDao;
@ -102,6 +102,7 @@ public class SamplesPreProcessModuleCtrlService {
CmdId.kmini_servo_enable, CmdId.kmini_servo_enable,
enable ? 1 : 0 enable ? 1 : 0
); );
} }
@ -118,7 +119,7 @@ public class SamplesPreProcessModuleCtrlService {
* @param tubeType TubeType_HighBlood,TubeType_ShortBlood,TubeType_Mini,TubeType_MiniBlood,TubeType_BulletTube1P5,TubeType_BulletTube0P5 * @param tubeType TubeType_HighBlood,TubeType_ShortBlood,TubeType_Mini,TubeType_MiniBlood,TubeType_BulletTube1P5,TubeType_BulletTube0P5
* @param judgeCapExist 是否判断试管帽子存在与否 * @param judgeCapExist 是否判断试管帽子存在与否
*/ */
public AppErrorCode takeTube(String tubeType,boolean judgeCapExist) throws HardwareException, InterruptedException {
public A8kEcode takeTube(String tubeType,boolean judgeCapExist) throws HardwareException, InterruptedException {
var params = this.samplesPreProcessModuleCtrlParamsService; var params = this.samplesPreProcessModuleCtrlParamsService;
this.a8kCanBusService.callblockcmd( this.a8kCanBusService.callblockcmd(
ModId.ShakeModGripperYM, ModId.ShakeModGripperYM,
@ -155,7 +156,7 @@ public class SamplesPreProcessModuleCtrlService {
CmdId.kmini_servo_read_pos CmdId.kmini_servo_read_pos
); );
if ( pos.getContentI32(0) > params.getGripperServo_hatDeterminesPosThres() ) { if ( pos.getContentI32(0) > params.getGripperServo_hatDeterminesPosThres() ) {
return AppErrorCode.TubeNotHasHat;
return A8kEcode.TubeNotHasHat;
} }
} }
@ -217,13 +218,13 @@ public class SamplesPreProcessModuleCtrlService {
4. 无论是否抓取成功只要不向外抛出异常方法结束时该模块涉及到组件均需要返回待机位置 4. 无论是否抓取成功只要不向外抛出异常方法结束时该模块涉及到组件均需要返回待机位置
*/ */
return AppErrorCode.Success;
return A8kEcode.Success;
} }
/** /**
* 取试管帽 * 取试管帽
*/ */
public AppErrorCode takeTubeCap( String tubeType ) throws HardwareException, InterruptedException {
public A8kEcode takeTubeCap( String tubeType ) throws HardwareException, InterruptedException {
var params = this.samplesPreProcessModuleCtrlParamsService; var params = this.samplesPreProcessModuleCtrlParamsService;
this.a8kCanBusService.callblockcmd( this.a8kCanBusService.callblockcmd(
ModId.ShakeModGripperYM, ModId.ShakeModGripperYM,
@ -271,7 +272,7 @@ public class SamplesPreProcessModuleCtrlService {
params.getHorizontalMotor_standbyPos(), params.getHorizontalMotor_standbyPos(),
params.getActionOvertime() params.getActionOvertime()
); );
return AppErrorCode.Success;
return A8kEcode.Success;
} }
/** /**

BIN
zhaohe_app.db

Loading…
Cancel
Save