From 4a3ec37ebd1100e1c5e1fac33f1f11b941904c17 Mon Sep 17 00:00:00 2001 From: HSZ_HeSongZhen <210202959@qq.com> Date: Sun, 11 May 2025 21:27:38 +0800 Subject: [PATCH] =?UTF-8?q?add:=E5=A2=9E=E5=8A=A0=E9=9B=B7=E8=B5=9B?= =?UTF-8?q?=E5=92=8C=E5=8A=A0=E6=B6=B2=E8=87=82=E7=9A=84=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/hardware/driver/LeisaiServoDriver.java | 24 ++++++++++++++++++++++ .../iflytop/app/hardware/type/LeisaiRegIndex.java | 7 ++++++- .../java/iflytop/app/hardware/type/RegIndex.java | 11 ++++++++++ .../java/iflytop/app/page/LeisaiServoPage.java | 23 +++++++++++++++++++++ src/main/resources/application.yml | 2 +- 5 files changed, 65 insertions(+), 2 deletions(-) diff --git a/src/main/java/iflytop/app/hardware/driver/LeisaiServoDriver.java b/src/main/java/iflytop/app/hardware/driver/LeisaiServoDriver.java index 31d6156..8c5b1a0 100644 --- a/src/main/java/iflytop/app/hardware/driver/LeisaiServoDriver.java +++ b/src/main/java/iflytop/app/hardware/driver/LeisaiServoDriver.java @@ -1,9 +1,11 @@ package iflytop.app.hardware.driver; +import com.fasterxml.jackson.databind.node.ObjectNode; import iflytop.app.hardware.channel.A8kCanBusConnection; import iflytop.app.hardware.channel.A8kCanBusService; import iflytop.app.hardware.type.*; import iflytop.app.type.exception.HardwareException; +import iflytop.app.utils.ZJsonHelper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -56,4 +58,26 @@ public class LeisaiServoDriver { log.info("moveToZero called with id: {}", id); canBus.callcmd(id.mid, CmdId.leisai_servo_move_to_zero); } + + public void setReg(LeisaiServoMId id, LeisaiRegIndex regindex, int val) throws HardwareException { + log.info("setReg called with id: {}, regindex: {}, val: {}", id, regindex, val); + canBus.moduleSetReg(id.mid, regindex.regIndex, val); + } + + + public Integer getReg(LeisaiServoMId id, LeisaiRegIndex regindex) throws HardwareException { + log.info("getReg called with id: {}, regindex: {}", id, regindex); + return canBus.moduleGetReg(id.mid, regindex.regIndex); + } + + public Object getAllReg(LeisaiServoMId id) throws HardwareException { + log.info("getAllReg called with id: {}", id); + ObjectNode node = ZJsonHelper.createObjectNode(); + for (LeisaiRegIndex regIndex : LeisaiRegIndex.values()) { + Integer regVal = getReg(id, regIndex); + log.info("read reg {} -> {}", regIndex, regVal); + node.put(regIndex.name(), getReg(id, regIndex)); + } + return node; + } } diff --git a/src/main/java/iflytop/app/hardware/type/LeisaiRegIndex.java b/src/main/java/iflytop/app/hardware/type/LeisaiRegIndex.java index 836895c..35467f1 100644 --- a/src/main/java/iflytop/app/hardware/type/LeisaiRegIndex.java +++ b/src/main/java/iflytop/app/hardware/type/LeisaiRegIndex.java @@ -1,7 +1,12 @@ package iflytop.app.hardware.type; public enum LeisaiRegIndex { - kreg_mini_servo_firmware_main_version(RegIndex.kreg_mini_servo_firmware_main_version), + kreg_leisai_servo_is_enable(RegIndex.kreg_leisai_servo_is_enable), + kreg_leisai_servo_has_move_zero(RegIndex.kreg_leisai_servo_has_move_zero), + kreg_leisai_servo_default_velocity(RegIndex.kreg_leisai_servo_default_velocity), + kreg_leisai_servo_low_velocity(RegIndex.kreg_leisai_servo_low_velocity), + kreg_leisai_servo_mid_velocity(RegIndex.kreg_leisai_servo_mid_velocity), + kreg_leisai_servo_high_velocity(RegIndex.kreg_leisai_servo_high_velocity), ; public final RegIndex regIndex; diff --git a/src/main/java/iflytop/app/hardware/type/RegIndex.java b/src/main/java/iflytop/app/hardware/type/RegIndex.java index c8d9c30..3ac5ad5 100644 --- a/src/main/java/iflytop/app/hardware/type/RegIndex.java +++ b/src/main/java/iflytop/app/hardware/type/RegIndex.java @@ -110,6 +110,16 @@ public enum RegIndex { kreg_mini_servo_servo_current_current(10569), // 当前电流 反馈当前工作电流值,单位为6.26.5mA,最大可反馈电流为500*6.5mA=3250mA /*********************************************************************************************************************** + * leisai_servo * + ***********************************************************************************************************************/ + kreg_leisai_servo_is_enable(10702), // 是否使能 + kreg_leisai_servo_has_move_zero(10703), // 是否回零 + kreg_leisai_servo_default_velocity(10704), // 默认速度 + kreg_leisai_servo_low_velocity(10705), // 低速 + kreg_leisai_servo_mid_velocity(10706), // 中速 + kreg_leisai_servo_high_velocity(10707), // 高速 + + /*********************************************************************************************************************** * liquid_distribution_arm * ***********************************************************************************************************************/ @@ -172,3 +182,4 @@ public enum RegIndex { return null; } } + diff --git a/src/main/java/iflytop/app/page/LeisaiServoPage.java b/src/main/java/iflytop/app/page/LeisaiServoPage.java index 884af15..1a1612e 100644 --- a/src/main/java/iflytop/app/page/LeisaiServoPage.java +++ b/src/main/java/iflytop/app/page/LeisaiServoPage.java @@ -1,8 +1,11 @@ package iflytop.app.page; +import com.fasterxml.jackson.databind.JsonNode; import iflytop.app.hardware.driver.LeisaiServoDriver; +import iflytop.app.hardware.type.LeisaiRegIndex; import iflytop.app.hardware.type.LeisaiServoMId; import iflytop.app.hardware.type.LeisaiServoSpeedLevel; +import iflytop.app.hardware.type.MiniServoRegIndex; import iflytop.app.type.exception.HardwareException; import iflytop.app.utils.ZJsonNode; import iflytop.extui.mgr.ExtApiPageMgr; @@ -93,6 +96,22 @@ public class LeisaiServoPage { return node.get(); } + public void setReg(LeisaiRegIndex reg, Integer val) throws HardwareException { + driver.setReg(id, reg, val); + } + + public JsonNode getAllReg() { + ZJsonNode jsonNode = new ZJsonNode(); + for (LeisaiRegIndex reg : LeisaiRegIndex.values()) { + try { + jsonNode.get(reg.name()).set(driver.getReg(id, reg)); + } catch (HardwareException e) { + jsonNode.get(reg.name()).set("error"); + } + } //enable + return jsonNode.get(); + } + @PostConstruct void init() { var page = extApiPageMgr.newPage(this); @@ -118,6 +137,10 @@ public class LeisaiServoPage { page.addFunction("顺时针旋转", this::rotateForward); page.addFunction("逆时针旋转", this::rotateBackward); + page.newGroup("寄存器"); + page.addFunction("设置寄存器", this::setReg); + page.addFunction("读取所有寄存器", this::getAllReg); + page.newGroup("状态"); page.addFunction("读取位置", this::readPosition); page.addFunction("读取IO", this::readIOState); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 2e95725..700e558 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -4,7 +4,7 @@ server: device.enableCanBus: true iflytophald: - ip: 192.168.1.140 + ip: 192.168.8.168 cmdch.port: 19004 datach.port: 19005