Browse Source

add:增加雷赛和加液臂的控制界面

master
HSZ_HeSongZhen 3 months ago
parent
commit
4a3ec37ebd
  1. 24
      src/main/java/iflytop/app/hardware/driver/LeisaiServoDriver.java
  2. 7
      src/main/java/iflytop/app/hardware/type/LeisaiRegIndex.java
  3. 11
      src/main/java/iflytop/app/hardware/type/RegIndex.java
  4. 23
      src/main/java/iflytop/app/page/LeisaiServoPage.java
  5. 2
      src/main/resources/application.yml

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;

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

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

2
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

Loading…
Cancel
Save