Browse Source

Merge branch 'master' of 192.168.1.3:p_graphite_digester_v3/graphite_digester_mirco_utils

master
zhaohe 3 months ago
parent
commit
01aa9fda1f
  1. 24
      src/main/java/iflytop/app/hardware/driver/LeisaiServoDriver.java
  2. 7
      src/main/java/iflytop/app/hardware/type/LeisaiRegIndex.java
  3. 4
      src/main/java/iflytop/app/hardware/type/LeisaiServoMId.java
  4. 4
      src/main/java/iflytop/app/hardware/type/MId.java
  5. 11
      src/main/java/iflytop/app/hardware/type/RegIndex.java
  6. 29
      src/main/java/iflytop/app/page/LeisaiServoPage.java

24
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;
}
}

7
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;

4
src/main/java/iflytop/app/hardware/type/LeisaiServoMId.java

@ -3,8 +3,8 @@ package iflytop.app.hardware.type;
import org.springframework.util.Assert;
public enum LeisaiServoMId {
HBotXLeisaiSV(MId.HBotXLeisaiSV),
HBotYLeisaiSV(MId.HBotYLeisaiSV),
HBotXLeisaiSV(MId.MainXSV),
HBotYLeisaiSV(MId.MainYSV),
;
final public MId mid;

4
src/main/java/iflytop/app/hardware/type/MId.java

@ -12,8 +12,8 @@ public enum MId {
IO1_IO(11, "台面 IO 板模块"),
IO1_ADC(12, "台面 ADC 板模块"),
LiquidDistributionArm(13, "加液臂"),
HBotXLeisaiSV(14, "X轴Leisai舵机"),//
HBotYLeisaiSV(15, "Y轴Leisai舵机"),//
MainXSV(14, "X轴Leisai舵机"),//
MainYSV(15, "Y轴Leisai舵机"),//
// IO2Board(25, "台下 IO 板模块"),

11
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;
}
}

29
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;
@ -50,6 +53,11 @@ public class LeisaiServoPage {
driver.enable(id, 0);
}
public void stop() throws Exception {
log.info("stop called");
driver.moduleStop(id);
}
public Integer readPosition() throws Exception {
log.info("readPosition called");
return driver.readPosition(id);
@ -93,6 +101,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);
@ -105,6 +129,7 @@ public class LeisaiServoPage {
page.addFunction("使能伺服", this::enableServo);
page.addFunction("失能伺服", this::disableServo);
page.addFunction("归零", this::moveToZero);
page.addFunction("停止", this::stop);
page.newGroup("相对移动");
page.addFunction("设置相对移动距离", this::setLeisaiServoDpos).setParamVal("dpos", () -> dpos);
@ -118,6 +143,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);

Loading…
Cancel
Save