From 009e00df8399fb9c045df8b1110b4f9d840f70a9 Mon Sep 17 00:00:00 2001 From: sige Date: Sun, 21 Jul 2024 11:43:35 +0800 Subject: [PATCH 1/3] 1 --- .../service/hardware/SamplesPreProcessModuleCtrlService.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java b/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java index 26c97f4..8c74763 100644 --- a/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java +++ b/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java @@ -380,7 +380,8 @@ public class SamplesPreProcessModuleCtrlService { this.a8kCanBusService.callblockcmd( ModuleId.ServoTubeCapClipModule, CmdId.kmini_servo_move_to, - params.getTubeClampMotor_standbyPos() + params.getGripperServo_standbyPos(), + params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( ModuleId.MotorTubeMoveUpDownModule, @@ -413,7 +414,8 @@ public class SamplesPreProcessModuleCtrlService { this.a8kCanBusService.callblockcmd( ModuleId.ServoTubeCapClipModule, CmdId.kmini_servo_move_to, - params.getTubeClampMotor_standbyPos() + params.getGripperServo_standbyPos(), + params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( ModuleId.MotorTubeMoveUpDownModule, @@ -436,7 +438,7 @@ public class SamplesPreProcessModuleCtrlService { ModuleId.MotorTubeScanClampModule, CmdId.kstep_motor_easy_move_to, 0, - params.getMoveToZeroOvertime() + params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( ModuleId.MotorTubeScanClampModule, @@ -447,7 +449,7 @@ public class SamplesPreProcessModuleCtrlService { ModuleId.MotorTubeShakeModule, CmdId.kstep_motor_easy_move_to, 0, - params.getMoveToZeroOvertime() + params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( ModuleId.MotorTubeShakeModule, From 1d275eb39f2ad1dfd0013b23e2024669d5c51e30 Mon Sep 17 00:00:00 2001 From: sige Date: Sun, 21 Jul 2024 16:29:09 +0800 Subject: [PATCH 2/3] 1 --- pom.xml | 2 +- src/main/java/a8k/a8k_can_protocol/A8kPacket.java | 2 +- src/main/java/a8k/appbean/HardwareException.java | 2 + .../java/a8k/base_hardware/A8kCanBusService.java | 2 +- .../SamplesPreProcessModuleCtrlController.java | 5 +- .../java/a8k/controller/TmpTestController.java | 4 +- .../SamplesPreProcessModuleCtrlService.java | 105 +++++++++++++++++---- 7 files changed, 97 insertions(+), 25 deletions(-) diff --git a/pom.xml b/pom.xml index 43517b0..2f3c37b 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ com.iflytop uf - 0.0.63 + 0.0.64 org.jetbrains diff --git a/src/main/java/a8k/a8k_can_protocol/A8kPacket.java b/src/main/java/a8k/a8k_can_protocol/A8kPacket.java index 0334b4d..2ef6400 100644 --- a/src/main/java/a8k/a8k_can_protocol/A8kPacket.java +++ b/src/main/java/a8k/a8k_can_protocol/A8kPacket.java @@ -35,7 +35,7 @@ public class A8kPacket { public static final int PACKET_TYPE_ERROR_ACK = 2; public static final int PACKET_TYPE_EVENT = 3; - public static final int CMD_OVERTIME = 100; + public static final int CMD_OVERTIME = 1000; public A8kPacket(byte[] cmd) { raw = new byte[cmd.length]; diff --git a/src/main/java/a8k/appbean/HardwareException.java b/src/main/java/a8k/appbean/HardwareException.java index 970c518..a5976d0 100644 --- a/src/main/java/a8k/appbean/HardwareException.java +++ b/src/main/java/a8k/appbean/HardwareException.java @@ -15,6 +15,8 @@ public class HardwareException extends Exception { public HardwareException(int moduleId, int HardwareErrorCode) { super(String.format("Module ID %s has error code %s", ModuleId.ModuleId2Name(moduleId), Errorcode.toString(HardwareErrorCode))); + this.moduleId = moduleId; + this.errorCode = HardwareErrorCode; } int getModuleId() { diff --git a/src/main/java/a8k/base_hardware/A8kCanBusService.java b/src/main/java/a8k/base_hardware/A8kCanBusService.java index 7eb3340..156a167 100644 --- a/src/main/java/a8k/base_hardware/A8kCanBusService.java +++ b/src/main/java/a8k/base_hardware/A8kCanBusService.java @@ -64,7 +64,7 @@ public class A8kCanBusService { int packetIndex = 0;// // 调试标志位 - boolean debugFlag = false;// + boolean debugFlag = true;// // websocket自动重连时间 Timer autoConnectTimer = new Timer();// diff --git a/src/main/java/a8k/controller/SamplesPreProcessModuleCtrlController.java b/src/main/java/a8k/controller/SamplesPreProcessModuleCtrlController.java index 79a9c36..c0a536f 100644 --- a/src/main/java/a8k/controller/SamplesPreProcessModuleCtrlController.java +++ b/src/main/java/a8k/controller/SamplesPreProcessModuleCtrlController.java @@ -9,6 +9,8 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.ResponseBody; + +import java.lang.reflect.InvocationTargetException; import java.util.List; import java.util.Map; @Controller @@ -20,7 +22,8 @@ public class SamplesPreProcessModuleCtrlController extends UfApiControllerBase { @PostMapping("/api/sample-pre-process-module-ctrl/execute-service-method") @ResponseBody - public UfApiResponse executeServiceMethod( @RequestBody Map params ) throws NoSuchMethodException { + public UfApiResponse executeServiceMethod( @RequestBody Map params ) + throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { Object service = this.samplesPreProcessModuleCtrlService; String methodName = (String)params.get("method"); List methodArgs = (List)params.get("params"); diff --git a/src/main/java/a8k/controller/TmpTestController.java b/src/main/java/a8k/controller/TmpTestController.java index 14f4860..4359310 100644 --- a/src/main/java/a8k/controller/TmpTestController.java +++ b/src/main/java/a8k/controller/TmpTestController.java @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.ResponseBody; +import java.lang.reflect.InvocationTargetException; import java.util.List; import java.util.Map; @@ -33,7 +34,8 @@ public class TmpTestController { @PostMapping("/api/tmp-test/execute-service-method") @ResponseBody - public String executeServiceMethod(@RequestBody Map params) throws NoSuchMethodException { + public String executeServiceMethod(@RequestBody Map params) + throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { Object service = this.motorTubeRackMoveCtrlService; String methodName = (String) params.get("method"); List methodArgs = (List) params.get("params"); diff --git a/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java b/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java index b0307eb..172b107 100644 --- a/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java +++ b/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java @@ -8,6 +8,7 @@ import a8k.appbean.HardwareException; import a8k.base_hardware.A8kCanBusService; import a8k.service.db.dao.A8kTubeInfoDao; import a8k.service.db.dao.SamplesPreProcessModuleCtrlParamsService; +import com.iflytop.uf.util.UfCommon; import jakarta.annotation.Resource; import org.springframework.stereotype.Component; @@ -104,6 +105,17 @@ public class SamplesPreProcessModuleCtrlService { ); } + /** + * 使能模组 + */ + public void stop() throws HardwareException { + this.a8kCanBusService.callcmd(ModuleId.ShakeModShakeM, CmdId.kstep_motor_stop); + this.a8kCanBusService.callcmd(ModuleId.ShakeModClampingM, CmdId.kstep_motor_stop); + this.a8kCanBusService.callcmd(ModuleId.ShakeModClampingM, CmdId.kstep_motor_stop); + this.a8kCanBusService.callcmd(ModuleId.ShakeModGripperYM, CmdId.kmini_servo_stop); + this.a8kCanBusService.callcmd(ModuleId.ShakeModGripperSV, CmdId.kmini_servo_stop); + } + @@ -118,11 +130,11 @@ public class SamplesPreProcessModuleCtrlService { * @param tubeType TubeType_HighBlood,TubeType_ShortBlood,TubeType_Mini,TubeType_MiniBlood,TubeType_BulletTube1P5,TubeType_BulletTube0P5 * @param judgeCapExist 是否判断试管帽子存在与否 */ - public AppErrorCode takeTube(String tubeType,boolean judgeCapExist) throws HardwareException, InterruptedException { + public AppErrorCode takeTube(String tubeType, Boolean judgeCapExist) throws HardwareException, InterruptedException { var params = this.samplesPreProcessModuleCtrlParamsService; this.a8kCanBusService.callblockcmd( ModuleId.ShakeModGripperYM, - CmdId.kstep_motor_easy_move_to, + CmdId.kmini_servo_move_to, params.getHorizontalMotor_takeCapPos(), params.getActionOvertime() ); @@ -140,16 +152,18 @@ public class SamplesPreProcessModuleCtrlService { ); if ( judgeCapExist ) { - this.a8kCanBusService.callblockcmd( - ModuleId.ShakeModClampingM, + this.a8kCanBusService.callcmd( + ModuleId.ShakeModGripperSV, CmdId.kmini_servo_rotate_with_torque, - params.getGripperServo_takeCapTorque(), - params.getActionOvertime() + params.getGripperServo_takeCapTorque() ); + UfCommon.delay(3000); this.a8kCanBusService.callcmd( ModuleId.ShakeModGripperSV, - CmdId.kmini_servo_stop + CmdId.kmini_servo_stop, + 1 ); + UfCommon.delay(1000); var pos = this.a8kCanBusService.callcmd( ModuleId.ShakeModGripperSV, CmdId.kmini_servo_read_pos @@ -159,12 +173,12 @@ public class SamplesPreProcessModuleCtrlService { } } - this.a8kCanBusService.callblockcmd( + this.a8kCanBusService.callcmd( ModuleId.ShakeModGripperSV, CmdId.kmini_servo_rotate_with_torque, - params.getGripperServo_takeCapTorque(), - params.getActionOvertime() + params.getGripperServo_takeCapTorque() ); + UfCommon.delay(3000); this.a8kCanBusService.callblockcmd( ModuleId.ShakeModGripperZM, @@ -181,6 +195,20 @@ public class SamplesPreProcessModuleCtrlService { ); this.a8kCanBusService.callblockcmd( + ModuleId.ShakeModShakeM, + CmdId.kstep_motor_easy_move_to, + params.getShakeMotor_standbyPos(), + params.getActionOvertime() + ); + + this.a8kCanBusService.callblockcmd( + ModuleId.ShakeModClampingM, + CmdId.kstep_motor_easy_move_to, + params.getTubeClampMotor_standbyPos(), + params.getActionOvertime() + ); + + this.a8kCanBusService.callblockcmd( ModuleId.ShakeModGripperZM, CmdId.kstep_motor_easy_move_to, params.getZMotor_placeShakeHeight(), @@ -189,7 +217,7 @@ public class SamplesPreProcessModuleCtrlService { this.a8kCanBusService.callblockcmd( ModuleId.ShakeModGripperSV, - CmdId.kstep_motor_easy_move_to, + CmdId.kmini_servo_move_to, params.getGripperServo_standbyPos(), params.getActionOvertime() ); @@ -203,7 +231,7 @@ public class SamplesPreProcessModuleCtrlService { this.a8kCanBusService.callblockcmd( ModuleId.ShakeModGripperYM, - CmdId.kstep_motor_easy_move_to, + CmdId.kmini_servo_move_to, params.getHorizontalMotor_standbyPos(), params.getActionOvertime() ); @@ -227,14 +255,14 @@ public class SamplesPreProcessModuleCtrlService { var params = this.samplesPreProcessModuleCtrlParamsService; this.a8kCanBusService.callblockcmd( ModuleId.ShakeModGripperYM, - CmdId.kstep_motor_easy_move_to, + CmdId.kmini_servo_move_to, params.getHorizontalMotor_takePushCapPos(), params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( ModuleId.ShakeModGripperSV, - CmdId.kstep_motor_easy_move_to, + CmdId.kmini_servo_move_to, params.getGripperServo_standbyPos(), params.getActionOvertime() ); @@ -253,7 +281,7 @@ public class SamplesPreProcessModuleCtrlService { this.a8kCanBusService.callblockcmd( ModuleId.ShakeModGripperSV, - CmdId.kstep_motor_easy_move_to, + CmdId.kmini_servo_move_to, params.getGripperServo_standbyPos(), params.getActionOvertime() ); @@ -267,7 +295,7 @@ public class SamplesPreProcessModuleCtrlService { this.a8kCanBusService.callblockcmd( ModuleId.ShakeModGripperYM, - CmdId.kstep_motor_easy_move_to, + CmdId.kmini_servo_move_to, params.getHorizontalMotor_standbyPos(), params.getActionOvertime() ); @@ -281,14 +309,14 @@ public class SamplesPreProcessModuleCtrlService { var params = this.samplesPreProcessModuleCtrlParamsService; this.a8kCanBusService.callblockcmd( ModuleId.ShakeModGripperYM, - CmdId.kstep_motor_easy_move_to, + CmdId.kmini_servo_move_to, params.getHorizontalMotor_takePushCapPos(), params.getActionOvertime() ); this.a8kCanBusService.callblockcmd( ModuleId.ShakeModGripperSV, - CmdId.kstep_motor_easy_move_to, + CmdId.kmini_servo_move_to, params.getGripperServo_standbyPos(), params.getActionOvertime() ); @@ -307,7 +335,7 @@ public class SamplesPreProcessModuleCtrlService { this.a8kCanBusService.callblockcmd( ModuleId.ShakeModGripperSV, - CmdId.kstep_motor_easy_move_to, + CmdId.kmini_servo_move_to, params.getGripperServo_standbyPos(), params.getActionOvertime() ); @@ -319,9 +347,46 @@ public class SamplesPreProcessModuleCtrlService { params.getActionOvertime() ); + // 前后移至试管架取试管位置 this.a8kCanBusService.callblockcmd( ModuleId.ShakeModGripperYM, + CmdId.kmini_servo_move_to, + params.getHorizontalMotor_takeCapPos(), + params.getActionOvertime() + ); + + // 升降放入试管至试管架 + var motorUdTubePutPos = params.getZMotor_ShortBloodTakeCapHeight(); + if ( tubeTypeValue.equals(A8kTubeType.HighBlood) ) { + motorUdTubePutPos = params.getZMotor_HighBloodTakeCapHeight(); + } + this.a8kCanBusService.callblockcmd( + ModuleId.ShakeModGripperZM, CmdId.kstep_motor_easy_move_to, + motorUdTubePutPos, + params.getActionOvertime() + ); + + // 夹爪张开 + this.a8kCanBusService.callblockcmd( + ModuleId.ShakeModGripperSV, + CmdId.kmini_servo_move_to, + params.getGripperServo_standbyPos(), + params.getActionOvertime() + ); + + // 升降电机复位 + this.a8kCanBusService.callblockcmd( + ModuleId.ShakeModGripperZM, + CmdId.kstep_motor_easy_move_to, + 0, + params.getActionOvertime() + ); + + // 前后电机复位 + this.a8kCanBusService.callblockcmd( + ModuleId.ShakeModGripperYM, + CmdId.kmini_servo_move_to, params.getHorizontalMotor_standbyPos(), params.getActionOvertime() ); @@ -338,7 +403,7 @@ public class SamplesPreProcessModuleCtrlService { * @param times 摇匀次数 * @param shakeDegree 摇匀角度 */ - public void ShakeTube(String tubeType, int times, int shakeDegree) throws HardwareException, InterruptedException { + public void ShakeTube(String tubeType, Integer times, Integer shakeDegree) throws HardwareException, InterruptedException { var params = this.samplesPreProcessModuleCtrlParamsService; var standByPos = params.getShakeMotor_standbyPos(); var startPos = standByPos - shakeDegree/2; From b3020c2a068167694211d453e2ef6ce2d6725d04 Mon Sep 17 00:00:00 2001 From: sige Date: Sun, 21 Jul 2024 16:52:05 +0800 Subject: [PATCH 3/3] 1 --- .../service/hardware/SamplesPreProcessModuleCtrlService.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java b/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java index c7d7c88..4364da2 100644 --- a/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java +++ b/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java @@ -109,11 +109,11 @@ public class SamplesPreProcessModuleCtrlService { * 使能模组 */ public void stop() throws HardwareException { - this.a8kCanBusService.callcmd(ModuleId.ShakeModShakeM, CmdId.kstep_motor_stop); - this.a8kCanBusService.callcmd(ModuleId.ShakeModClampingM, CmdId.kstep_motor_stop); - this.a8kCanBusService.callcmd(ModuleId.ShakeModClampingM, CmdId.kstep_motor_stop); - this.a8kCanBusService.callcmd(ModuleId.ShakeModGripperYM, CmdId.kmini_servo_stop); - this.a8kCanBusService.callcmd(ModuleId.ShakeModGripperSV, CmdId.kmini_servo_stop); + this.a8kCanBusService.callcmd(ModId.ShakeModShakeM, CmdId.kstep_motor_stop); + this.a8kCanBusService.callcmd(ModId.ShakeModClampingM, CmdId.kstep_motor_stop); + this.a8kCanBusService.callcmd(ModId.ShakeModClampingM, CmdId.kstep_motor_stop); + this.a8kCanBusService.callcmd(ModId.ShakeModGripperYM, CmdId.kmini_servo_stop); + this.a8kCanBusService.callcmd(ModId.ShakeModGripperSV, CmdId.kmini_servo_stop); }