From 6693281b8e02733311ffda3a777b04a648ee2fb1 Mon Sep 17 00:00:00 2001 From: HSZ_HeSongZhen <210202959@qq.com> Date: Wed, 14 May 2025 15:52:51 +0800 Subject: [PATCH] =?UTF-8?q?fixed:=20=E5=A2=9E=E5=8A=A0=E7=94=B5=E6=B5=81?= =?UTF-8?q?=E8=AF=BB=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gd/hardware/drivers/HeaterRodDriver.java | 16 ++++++++++++ .../gd/hardware/type/driver/HeaterRodSlavedId.java | 29 ++++++++++++++++------ 2 files changed, 38 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/iflytop/gd/hardware/drivers/HeaterRodDriver.java b/src/main/java/com/iflytop/gd/hardware/drivers/HeaterRodDriver.java index 3b6b643..8f98da4 100644 --- a/src/main/java/com/iflytop/gd/hardware/drivers/HeaterRodDriver.java +++ b/src/main/java/com/iflytop/gd/hardware/drivers/HeaterRodDriver.java @@ -1,7 +1,11 @@ package com.iflytop.gd.hardware.drivers; import cn.hutool.core.util.StrUtil; +import com.iflytop.gd.hardware.comm.can.A8kCanBusService; import com.iflytop.gd.hardware.comm.modbus.ModbusMasterService; +import com.iflytop.gd.hardware.exception.HardwareException; +import com.iflytop.gd.hardware.type.A8kPacket; +import com.iflytop.gd.hardware.type.CmdId; import com.iflytop.gd.hardware.type.driver.HeaterRodSlavedId; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -14,6 +18,7 @@ import java.util.concurrent.ConcurrentHashMap; @Component @RequiredArgsConstructor public class HeaterRodDriver { + private final A8kCanBusService canBus; private final ModbusMasterService modbusMaster; private static final int SV_ADDRESS = 0x2000; @@ -94,6 +99,17 @@ public class HeaterRodDriver { return temperature; } + /** + * 获取电流 + * @return + */ + public Integer getCurrent(HeaterRodSlavedId heaterRodId) throws HardwareException + { + A8kPacket packet = canBus.callcmd(heaterRodId.getMid(), CmdId.adc_read_adc, heaterRodId.getAdcCurrentIndex()); + Integer current = packet.getContentI32(0); + return current; + } + // ==== ==== ==== ==== ==== ==== application ==== ==== ==== ==== ==== ==== public void open(HeaterRodSlavedId heaterRodId, double temperature) throws Exception { this.openPower(heaterRodId); diff --git a/src/main/java/com/iflytop/gd/hardware/type/driver/HeaterRodSlavedId.java b/src/main/java/com/iflytop/gd/hardware/type/driver/HeaterRodSlavedId.java index 3bb50a3..bcb5c7a 100644 --- a/src/main/java/com/iflytop/gd/hardware/type/driver/HeaterRodSlavedId.java +++ b/src/main/java/com/iflytop/gd/hardware/type/driver/HeaterRodSlavedId.java @@ -1,22 +1,27 @@ package com.iflytop.gd.hardware.type.driver; import com.iflytop.gd.common.enums.cmd.CmdDevice; +import com.iflytop.gd.hardware.type.MId; public enum HeaterRodSlavedId { - HEATER_ROD1_ID(CmdDevice.heat_rod_1, 1), - HEATER_ROD2_ID(CmdDevice.heat_rod_2, 2), - HEATER_ROD3_ID(CmdDevice.heat_rod_3, 3), - HEATER_ROD4_ID(CmdDevice.heat_rod_4, 4), - HEATER_ROD5_ID(CmdDevice.heat_rod_5, 5), - HEATER_ROD6_ID(CmdDevice.heat_rod_6, 6), + HEATER_ROD1_ID(CmdDevice.heat_rod_1, 1, MId.IO1_ADC,0), + HEATER_ROD2_ID(CmdDevice.heat_rod_2, 2, MId.IO1_ADC,1), + HEATER_ROD3_ID(CmdDevice.heat_rod_3, 3, MId.IO1_ADC,2), + HEATER_ROD4_ID(CmdDevice.heat_rod_4, 4, MId.IO1_ADC,3), + HEATER_ROD5_ID(CmdDevice.heat_rod_5, 5, MId.IO1_ADC,4), + HEATER_ROD6_ID(CmdDevice.heat_rod_6, 6, MId.IO1_ADC,5), ; private final CmdDevice cmdDevice; private final Integer slaveId; + private final MId mid; + private final Integer adcCurrentIndex; // ADC电流索引 - HeaterRodSlavedId(CmdDevice cmdDevice, Integer slaveId) { + HeaterRodSlavedId(CmdDevice cmdDevice, Integer slaveId, MId mid, Integer adcCurrentIndex) { this.cmdDevice = cmdDevice; this.slaveId = slaveId; + this.mid = mid; + this.adcCurrentIndex = adcCurrentIndex; } public CmdDevice getCmdDevice() { @@ -27,6 +32,16 @@ public enum HeaterRodSlavedId { return slaveId; } + public MId getMid() + { + return mid; + } + + public Integer getAdcCurrentIndex() + { + return adcCurrentIndex; + } + static public HeaterRodSlavedId getByCmdDevice(CmdDevice cmdDevice) { for (HeaterRodSlavedId value : HeaterRodSlavedId.values()) { if (value.cmdDevice == cmdDevice) {