Browse Source

update

tags/v0
zhaohe 1 year ago
parent
commit
3c7e1bc26c
  1. 6
      README.md
  2. 2
      src/main/java/a8k/app_eventbus/A8kDebugTaskExecutorService.java
  3. 4
      src/main/java/a8k/app_eventbus/AppEventBusService.java
  4. 4
      src/main/java/a8k/app_eventbus/appevent/A8kHardwareReport.java
  5. 6
      src/main/java/a8k/app_eventbus/appevent/AppEvent.java
  6. 2
      src/main/java/a8k/app_eventbus/appevent/AppStepNotifyEvent.java
  7. 2
      src/main/java/a8k/app_eventbus/appevent/AppWarningNotifyEvent.java
  8. 2
      src/main/java/a8k/appbean/AppEventListener.java
  9. 6
      src/main/java/a8k/appbean/HardwareException.java
  10. 6
      src/main/java/a8k/appbean/appevent/AppEvent.java
  11. 6
      src/main/java/a8k/appbean/ecode/AppRet.java
  12. 6
      src/main/java/a8k/appbean/ecode/AppRetEcodeInfo.java
  13. 84
      src/main/java/a8k/canbus/A8kCanBusService.java
  14. 16
      src/main/java/a8k/canbus/A8kModParamInitializer.java
  15. 7
      src/main/java/a8k/canbus/custom_param_mgr/A8kModCustomParam.java
  16. 14
      src/main/java/a8k/canbus/custom_param_mgr/A8kModCustomParamId.java
  17. 25
      src/main/java/a8k/canbus/custom_param_mgr/A8kModCustomParamMgr.java
  18. 2
      src/main/java/a8k/canbus/protocol/A8kEcode.java
  19. 2
      src/main/java/a8k/canbus/protocol/A8kPacket.java
  20. 3
      src/main/java/a8k/canbus/protocol/CmdId.java
  21. 2
      src/main/java/a8k/canbus/protocol/IOId.java
  22. 2
      src/main/java/a8k/canbus/protocol/MId.java
  23. 2
      src/main/java/a8k/canbus/protocol/ModuleStatus.java
  24. 2
      src/main/java/a8k/canbus/protocol/ModuleType.java
  25. 2
      src/main/java/a8k/canbus/protocol/RegIndex.java
  26. 8
      src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java
  27. 2
      src/main/java/a8k/service/data_service/UsrMgrService.java
  28. 4
      src/main/java/a8k/service/hardware/CommonHardwareOpeartion.java
  29. 2
      src/main/java/a8k/service/hardware/HbotControlService.java
  30. 11
      src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java
  31. 8
      src/main/java/a8k/service/hardware/ReactionPlatesTransmitCtrlService.java
  32. 10
      src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java

6
README.md

@ -33,7 +33,11 @@
4. 出料口没有试管架
5. 进出料位置没有试管
逻辑漏洞
逻辑漏洞
1.高试管如果脱帽,会被识别成低试管。
TODO:
1.想办法解决
```

2
src/main/java/a8k/service/A8kDebugTaskExecutorService.java → src/main/java/a8k/app_eventbus/A8kDebugTaskExecutorService.java

@ -1,4 +1,4 @@
package a8k.service;
package a8k.app_eventbus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

4
src/main/java/a8k/service/AppEventBusService.java → src/main/java/a8k/app_eventbus/AppEventBusService.java

@ -1,7 +1,7 @@
package a8k.service;
package a8k.app_eventbus;
import a8k.appbean.AppEventListener;
import a8k.appbean.appevent.AppEvent;
import a8k.app_eventbus.appevent.AppEvent;
import jakarta.annotation.PostConstruct;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

4
src/main/java/a8k/appbean/appevent/A8kHardwareReport.java → src/main/java/a8k/app_eventbus/appevent/A8kHardwareReport.java

@ -1,6 +1,6 @@
package a8k.appbean.appevent;
package a8k.app_eventbus.appevent;
import a8k.a8k_can_protocol.A8kPacket;
import a8k.canbus.protocol.A8kPacket;
import org.springframework.lang.NonNull;
/**

6
src/main/java/a8k/app_eventbus/appevent/AppEvent.java

@ -0,0 +1,6 @@
package a8k.app_eventbus.appevent;
public class AppEvent {
}

2
src/main/java/a8k/appbean/appevent/AppStepNotifyEvent.java → src/main/java/a8k/app_eventbus/appevent/AppStepNotifyEvent.java

@ -1,4 +1,4 @@
package a8k.appbean.appevent;
package a8k.app_eventbus.appevent;
public class AppStepNotifyEvent extends AppEvent {
String displayInfo;

2
src/main/java/a8k/appbean/appevent/AppWarningNotifyEvent.java → src/main/java/a8k/app_eventbus/appevent/AppWarningNotifyEvent.java

@ -1,4 +1,4 @@
package a8k.appbean.appevent;
package a8k.app_eventbus.appevent;
public class AppWarningNotifyEvent extends AppEvent {
String displayInfo;

2
src/main/java/a8k/appbean/AppEventListener.java

@ -1,6 +1,6 @@
package a8k.appbean;
import a8k.appbean.appevent.AppEvent;
import a8k.app_eventbus.appevent.AppEvent;
public interface AppEventListener {
public void onAppEvent(AppEvent event);

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

@ -1,8 +1,8 @@
package a8k.appbean;
import a8k.a8k_can_protocol.A8kEcode;
import a8k.a8k_can_protocol.CmdId;
import a8k.a8k_can_protocol.MId;
import a8k.canbus.protocol.A8kEcode;
import a8k.canbus.protocol.CmdId;
import a8k.canbus.protocol.MId;
public class HardwareException extends Exception {
// 构造函数

6
src/main/java/a8k/appbean/appevent/AppEvent.java

@ -1,6 +0,0 @@
package a8k.appbean.appevent;
public class AppEvent {
}

6
src/main/java/a8k/appbean/ecode/AppRet.java

@ -1,8 +1,8 @@
package a8k.appbean.ecode;
import a8k.a8k_can_protocol.CmdId;
import a8k.a8k_can_protocol.MId;
import a8k.a8k_can_protocol.A8kEcode;
import a8k.canbus.protocol.CmdId;
import a8k.canbus.protocol.MId;
import a8k.canbus.protocol.A8kEcode;
import a8k.appbean.HardwareException;
public class AppRet<T> {

6
src/main/java/a8k/appbean/ecode/AppRetEcodeInfo.java

@ -1,8 +1,8 @@
package a8k.appbean.ecode;
import a8k.a8k_can_protocol.A8kEcode;
import a8k.a8k_can_protocol.CmdId;
import a8k.a8k_can_protocol.MId;
import a8k.canbus.protocol.A8kEcode;
import a8k.canbus.protocol.CmdId;
import a8k.canbus.protocol.MId;
public class AppRetEcodeInfo {
A8kEcode errorCode;

84
src/main/java/a8k/base_hardware/A8kCanBusService.java → src/main/java/a8k/canbus/A8kCanBusService.java

@ -1,11 +1,11 @@
package a8k.base_hardware;
package a8k.canbus;
import a8k.a8k_can_protocol.*;
import a8k.a8k_can_protocol.MId;
import a8k.canbus.protocol.*;
import a8k.canbus.protocol.MId;
import a8k.appbean.HardwareException;
import a8k.appbean.cfg.Pos2d;
import a8k.appbean.appevent.A8kHardwareReport;
import a8k.service.AppEventBusService;
import a8k.app_eventbus.appevent.A8kHardwareReport;
import a8k.app_eventbus.AppEventBusService;
import a8k.utils.ByteArray;
import jakarta.annotation.PostConstruct;
import org.java_websocket.client.WebSocketClient;
@ -300,14 +300,29 @@ public class A8kCanBusService {
callcmd(id.toInt(), CmdId.step_motor_easy_move_by.toInt(), dpos);
}
public void stepMotorEasyMoveByBlock(MId id, int dpos, Integer actionOvertime) throws HardwareException, InterruptedException {
stepMotorEasyMoveBy(id, dpos);
waitForMod(id, actionOvertime);
}
public void stepMotorEasyMoveTo(MId id, int pos) throws HardwareException {
callcmd(id.toInt(), CmdId.step_motor_easy_move_to.toInt(), pos);
}
public void stepMotorEasyMoveToBlock(MId id, int pos, Integer actionOvertime) throws HardwareException, InterruptedException {
stepMotorEasyMoveTo(id, pos);
waitForMod(id, actionOvertime);
}
public void stepMotorEasyMoveToZero(MId id) throws HardwareException {
callcmd(id.toInt(), CmdId.step_motor_easy_move_to_zero.toInt());
}
public void stepMotorEasyMoveToZeroBlock(MId id, Integer actionOvertime) throws HardwareException, InterruptedException {
stepMotorEasyMoveToZero(id);
waitForMod(id, actionOvertime);
}
public void stepMotorEasySetCurrentPos(MId id, int pos) throws HardwareException {
callcmd(id.toInt(), CmdId.step_motor_easy_set_current_pos.toInt(), pos);
}
@ -316,6 +331,17 @@ public class A8kCanBusService {
callcmd(id.toInt(), CmdId.step_motor_easy_move_to_io.toInt(), io);
}
// step_motor_easy_move_to_zero_point_quick
public void stepMotorEasyMoveToZeroPointQuick(MId id) throws HardwareException {
callcmd(id.toInt(), CmdId.step_motor_easy_move_to_zero_point_quick.toInt());
}
public void stepMotorEasyMoveToZeroPointQuickBlock(MId id, Integer actionOvertime) throws HardwareException, InterruptedException {
stepMotorEasyMoveToZeroPointQuick(id);
waitForMod(id, actionOvertime);
}
public void stepMotorStop(MId id) throws HardwareException {
callcmd(id.toInt(), CmdId.step_motor_stop.toInt());
}
@ -333,10 +359,19 @@ public class A8kCanBusService {
callcmd(id.toInt(), CmdId.step_motor_easy_move_to_end_point.toInt());
}
public void stepMotorEasyMoveToEndPointBlock(MId id, Integer actionOvertime) throws HardwareException, InterruptedException {
stepMotorEasyMoveToEndPoint(id);
waitForMod(id, actionOvertime);
}
public void stepMotorEasyReciprocatingMotion(MId id, int startpos, int endpos, int times) throws HardwareException {
callcmd(id.toInt(), CmdId.step_motor_easy_reciprocating_motion.toInt(), startpos, endpos, times);
}
public void stepMotorEasyReciprocatingMotionBlock(MId id, int startpos, int endpos, int times, Integer actionOvertime) throws HardwareException, InterruptedException {
stepMotorEasyReciprocatingMotion(id, startpos, endpos, times);
waitForMod(id, actionOvertime);
}
//
// MINI_SERVO
//
@ -350,6 +385,7 @@ public class A8kCanBusService {
return packet.getContentI32(0);
}
public void miniServoActiveCfg(MId id) throws HardwareException {
callcmd(id.toInt(), CmdId.mini_servo_active_cfg.toInt());
}
@ -371,14 +407,29 @@ public class A8kCanBusService {
callcmd(id.toInt(), CmdId.mini_servo_move_to.toInt(), pos);
}
public void miniServoMoveToBlock(MId id, int pos, Integer actionOvertime) throws HardwareException, InterruptedException {
miniServoMoveTo(id, pos);
waitForMod(id, actionOvertime);
}
public void miniServoRotate(MId id, int direction) throws HardwareException {
callcmd(id.toInt(), CmdId.mini_servo_rotate.toInt(), direction);
}
public void miniServoRotateBlock(MId id, int direction, Integer actionOvertime) throws HardwareException, InterruptedException {
miniServoRotate(id, direction);
waitForMod(id, actionOvertime);
}
public void miniServoRotateWithTorque(MId id, int torque) throws HardwareException {
callcmd(id.toInt(), CmdId.mini_servo_rotate_with_torque.toInt(), torque);
}
public void miniServoRotateWithTorqueBlock(MId id, int torque, Integer actionOvertime) throws HardwareException, InterruptedException {
miniServoRotateWithTorque(id, torque);
miniServoWaitIsNotMove(id, actionOvertime);
}
public void miniServoWaitIsNotMove(MId id, int acitionOvertime) throws HardwareException, InterruptedException {
long startedAt = System.currentTimeMillis();
do {
@ -414,27 +465,6 @@ public class A8kCanBusService {
}
}
public void waitForAction(MId mid, int cmdId, Integer acitionOvertime) throws InterruptedException, HardwareException {
long startedAt = System.currentTimeMillis();
do {
try {
var status = getModuleStatus(mid);
if (status == ModuleStatus.IDLE) {
break;
} else if (status == ModuleStatus.ERROR) {
throw new HardwareException(mid, moduleGetError(mid));
}
} catch (HardwareException ignored) {
}
long now = System.currentTimeMillis();
if (now - startedAt > acitionOvertime) {
throw new HardwareException(mid, A8kEcode.Overtime);
}
Thread.sleep(100);
} while (true);
}
public void waitForMods(MId[] mids, Integer acitionOvertime) throws InterruptedException, HardwareException {
for (MId mid : mids) {
@ -444,7 +474,7 @@ public class A8kCanBusService {
public void waitForMod(MId mid, Integer acitionOvertime) throws InterruptedException, HardwareException {
long startedAt = System.currentTimeMillis();
// Thread.sleep(300);
// Thread.sleep(300);
// CmdId action = lastCmdMap.get(mid);
CmdId action = lastCmdMapGet(mid);
do {

16
src/main/java/a8k/canbus/A8kModParamInitializer.java

@ -0,0 +1,16 @@
package a8k.canbus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Component
public class A8kModParamInitializer {
static Logger logger = LoggerFactory.getLogger(A8kModParamInitializer.class);
public void init() {
logger.info("A8kModInitializer init");
}
}

7
src/main/java/a8k/canbus/custom_param_mgr/A8kModCustomParam.java

@ -0,0 +1,7 @@
package a8k.canbus.custom_param_mgr;
public class A8kModCustomParam {
public A8kModCustomParamId id;
public Integer value;
}

14
src/main/java/a8k/canbus/custom_param_mgr/A8kModCustomParamId.java

@ -0,0 +1,14 @@
package a8k.canbus.custom_param_mgr;
public enum A8kModCustomParamId {
MOTOR_STANDY_POS_COMPENSATE("电机待机位置零点补偿"),//待机位置 = 零点- 零点补偿
;
public final String desc;
public final Integer defaultVal;
A8kModCustomParamId(String desc) {
this.desc = desc;
this.defaultVal = 0;
}
}

25
src/main/java/a8k/canbus/custom_param_mgr/A8kModCustomParamMgr.java

@ -0,0 +1,25 @@
package a8k.canbus.custom_param_mgr;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component
public class A8kModCustomParamMgr {
Map<A8kModCustomParamId, A8kModCustomParam> customParamMap;
public Integer getCustomParam(A8kModCustomParamId id) {
var vaule = customParamMap.get(id);
if (vaule != null) {
return vaule.value;
} else {
return id.defaultVal;
}
}
public void setCustomParam(A8kModCustomParam param) {
customParamMap.put(param.id, param);
}
}

2
src/main/java/a8k/a8k_can_protocol/A8kEcode.java → src/main/java/a8k/canbus/protocol/A8kEcode.java

@ -1,4 +1,4 @@
package a8k.a8k_can_protocol;
package a8k.canbus.protocol;
public enum A8kEcode {
//

2
src/main/java/a8k/a8k_can_protocol/A8kPacket.java → src/main/java/a8k/canbus/protocol/A8kPacket.java

@ -1,4 +1,4 @@
package a8k.a8k_can_protocol;
package a8k.canbus.protocol;
import a8k.utils.ByteArray;
import org.slf4j.Logger;

3
src/main/java/a8k/a8k_can_protocol/CmdId.java → src/main/java/a8k/canbus/protocol/CmdId.java

@ -1,4 +1,4 @@
package a8k.a8k_can_protocol;
package a8k.canbus.protocol;
public enum CmdId {
@ -86,6 +86,7 @@ public enum CmdId {
step_motor_set_subdevice_reg(0x0239, "step_motor_set_subdevice_reg"),//
step_motor_get_subdevice_reg(0x023a, "step_motor_get_subdevice_reg"),//
step_motor_easy_reciprocating_motion(0x022d, "step_motor_easy_reciprocating_motion"),//
step_motor_easy_move_to_zero_point_quick(0x022e, "step_motor_easy_move_to_zero_point_quick"),//
//
mini_servo_enable(0x6601, "mini_servo_enable"),//
mini_servo_read_pos(0x6602, "mini_servo_read_pos"),//

2
src/main/java/a8k/a8k_can_protocol/IOId.java → src/main/java/a8k/canbus/protocol/IOId.java

@ -1,4 +1,4 @@
package a8k.a8k_can_protocol;
package a8k.canbus.protocol;
public enum IOId {
TubeHeightPPS(ModuleType.kboard, MId.FeedingModBoard, 0), //高低试管检测IO

2
src/main/java/a8k/a8k_can_protocol/MId.java → src/main/java/a8k/canbus/protocol/MId.java

@ -1,4 +1,4 @@
package a8k.a8k_can_protocol;
package a8k.canbus.protocol;
public enum MId {
NotSet(0, "未设置"),//

2
src/main/java/a8k/a8k_can_protocol/ModuleStatus.java → src/main/java/a8k/canbus/protocol/ModuleStatus.java

@ -1,4 +1,4 @@
package a8k.a8k_can_protocol;
package a8k.canbus.protocol;
public enum ModuleStatus {
IDLE(0), //

2
src/main/java/a8k/a8k_can_protocol/ModuleType.java → src/main/java/a8k/canbus/protocol/ModuleType.java

@ -1,4 +1,4 @@
package a8k.a8k_can_protocol;
package a8k.canbus.protocol;
public enum ModuleType {
khbot_module(1), // hbot模块

2
src/main/java/a8k/a8k_can_protocol/RegIndex.java → src/main/java/a8k/canbus/protocol/RegIndex.java

@ -1,4 +1,4 @@
package a8k.a8k_can_protocol;
package a8k.canbus.protocol;
public enum RegIndex {

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

@ -1,11 +1,11 @@
package a8k.service.ctrl_service;
import a8k.a8k_can_protocol.A8kEcode;
import a8k.a8k_can_protocol.IOId;
import a8k.a8k_can_protocol.MId;
import a8k.canbus.protocol.A8kEcode;
import a8k.canbus.protocol.IOId;
import a8k.canbus.protocol.MId;
import a8k.appbean.HardwareException;
import a8k.appbean.ecode.AppRet;
import a8k.base_hardware.A8kCanBusService;
import a8k.canbus.A8kCanBusService;
import a8k.service.hardware.CommonHardwareOpeartion;
import a8k.service.hardware.SamplesPreProcessModuleCtrlService;
import jakarta.annotation.Resource;

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

@ -1,6 +1,6 @@
package a8k.service.data_service;
import a8k.a8k_can_protocol.A8kEcode;
import a8k.canbus.protocol.A8kEcode;
import a8k.service.appdb.dao.AppUsrDao;
import a8k.service.appdb.entity.AppUsr;
import a8k.service.state_service.A8kStateMgrService;

4
src/main/java/a8k/service/hardware/CommonHardwareOpeartion.java

@ -1,9 +1,9 @@
package a8k.service.hardware;
import a8k.a8k_can_protocol.MId;
import a8k.canbus.protocol.MId;
import a8k.appbean.HardwareException;
import a8k.appbean.ecode.AppRet;
import a8k.base_hardware.A8kCanBusService;
import a8k.canbus.A8kCanBusService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;

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

@ -1,6 +1,6 @@
package a8k.service.hardware;
import a8k.a8k_can_protocol.A8kEcode;
import a8k.canbus.protocol.A8kEcode;
import a8k.utils.HardwareService;
import org.springframework.stereotype.Component;

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

@ -1,9 +1,9 @@
package a8k.service.hardware;
import a8k.a8k_can_protocol.*;
import a8k.canbus.protocol.*;
import a8k.appbean.HardwareException;
import a8k.appbean.ecode.AppRet;
import a8k.base_hardware.A8kCanBusService;
import a8k.canbus.A8kCanBusService;
import a8k.utils.*;
import jakarta.annotation.Resource;
import org.slf4j.Logger;
@ -160,9 +160,9 @@ public class MotorTubeRackMoveCtrlService implements HardwareCtrlModule {
*/
@HardwareServiceAction(name = "移动到X", group = "模块基础动作")
public void moveTubeRackTo(Integer pos) throws HardwareException, InterruptedException {
// if (!canBus.stepMotorReadIoState(MId.ShakeModGripperZM, 0)) {
// throw new HardwareException(A8kEcode.ShakeModGripperZMNotInZeroPos);
// }
if (!canBus.stepMotorReadIoState(MId.ShakeModGripperZM, 0)) {
throw new HardwareException(A8kEcode.ShakeModGripperZMNotInZeroPos);
}
scanClampModRelease();
canBus.stepMotorEnable(MId.FeedingModXM, 1);
canBus.stepMotorEasyMoveTo(MId.FeedingModXM, pos);
@ -238,6 +238,7 @@ public class MotorTubeRackMoveCtrlService implements HardwareCtrlModule {
*/
@HardwareServiceAction(name = "移动<试管架>到入口位置", group = "片段")
public void tubeRackMoveToEnterPos() throws HardwareException, InterruptedException {
moveTubeRackTo(getTREnterXPos());
}

8
src/main/java/a8k/service/hardware/ReactionPlatesTransmitCtrlService.java

@ -1,11 +1,11 @@
package a8k.service.hardware;
import a8k.a8k_can_protocol.A8kEcode;
import a8k.a8k_can_protocol.IOId;
import a8k.a8k_can_protocol.MId;
import a8k.canbus.protocol.A8kEcode;
import a8k.canbus.protocol.IOId;
import a8k.canbus.protocol.MId;
import a8k.appbean.HardwareException;
import a8k.appbean.ecode.AppRet;
import a8k.base_hardware.A8kCanBusService;
import a8k.canbus.A8kCanBusService;
import a8k.service.db.dao.ReactionPlatesTransmitCtrlParamDao;
import a8k.utils.HardwareService;
import jakarta.annotation.Resource;

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

@ -1,20 +1,16 @@
package a8k.service.hardware;
import a8k.a8k_can_protocol.A8kEcode;
import a8k.a8k_can_protocol.MId;
import a8k.canbus.protocol.A8kEcode;
import a8k.canbus.protocol.MId;
import a8k.appbean.A8kTubeType;
import a8k.appbean.HardwareException;
import a8k.appbean.ecode.AppRet;
import a8k.base_hardware.A8kCanBusService;
import a8k.canbus.A8kCanBusService;
import a8k.utils.*;
import com.iflytop.uf.util.UfCommon;
import jakarta.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Component
@HardwareService(name = "样本预处理模块")

Loading…
Cancel
Save