From 4992f4a1ea2f85530046b84ef17d0f31fd9f9d14 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Mon, 14 Apr 2025 21:55:10 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E9=83=A8=E5=88=86=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/a8k/app/a8ktype/db/CommonPage.java | 24 -- .../java/a8k/app/a8ktype/state/SensorState.java | 2 - .../app/config/IflytophaldConnectionConfig.java | 2 +- .../api/v1/app/data/A8kProjectCardControler.java | 2 +- .../api/v1/app/data/ReactionResultControler.java | 2 +- .../java/a8k/app/dao/A8kProjExtInfoCardDao.java | 2 +- src/main/java/a8k/app/dao/type/CommonPage.java | 24 ++ .../java/a8k/app/factory/AppExceptionFactory.java | 23 -- .../a8k/app/factory/FakeOptScanResultFactory.java | 60 ---- .../a8k/app/factory/ProjExtInfoCardFactory.java | 73 ----- .../java/a8k/app/factory/ZAppPromoptFactory.java | 18 +- .../hardware/basedriver/A8kCanBusConnection.java | 316 --------------------- .../app/hardware/basedriver/A8kCanBusService.java | 141 --------- .../basedriver/LisUartChannelConnection.java | 55 ---- .../app/hardware/channel/A8kCanBusConnection.java | 316 +++++++++++++++++++++ .../a8k/app/hardware/channel/A8kCanBusService.java | 141 +++++++++ .../hardware/channel/LisUartChannelConnection.java | 55 ++++ .../a8k/app/hardware/driver/CodeScanerDriver.java | 2 +- .../java/a8k/app/hardware/driver/HbotDriver.java | 2 +- .../a8k/app/hardware/driver/InputDetectDriver.java | 2 +- .../a8k/app/hardware/driver/MiniServoDriver.java | 4 +- .../hardware/driver/ModuleEnableCtrlDriver.java | 170 +++++++++++ .../a8k/app/hardware/driver/OptModuleDriver.java | 2 +- .../app/hardware/driver/OutputIOCtrlDriver.java | 2 +- .../a8k/app/hardware/driver/PipetteCtrlDriver.java | 4 +- .../app/hardware/driver/StepMotorCtrlDriver.java | 2 +- .../hardware/driver/TemperatureControlDriver.java | 2 +- .../hardware/extdriver/ModuleEnableCtrlDriver.java | 174 ------------ .../a8k/app/hardware/utils/OptGainConvert.java | 75 +++++ .../appsetup/A8kSubModuleRegInitService.java | 6 +- .../background/SensorDataUpdateService.java | 3 +- .../app/service/data/ProjIdCardInfoMgrService.java | 2 +- .../app/service/data/ReactionRecordMgrService.java | 2 +- .../data/SubModuleRegInitialValueMgrService.java | 9 +- src/main/java/a8k/app/service/lis/LISService.java | 11 - .../lowerctrl/DeviceMoveToZeroCtrlService.java | 4 +- .../app/service/lowerctrl/HbotMoveCtrlService.java | 2 +- .../lowerctrl/OptScanModuleCtrlService.java | 2 +- .../lowerctrl/ProjIDCardCtrlAndMonitorService.java | 2 +- .../service/lowerctrl/TubeFeedingCtrlService.java | 4 +- .../lowerctrl/TubeFeedingExCtrlService.java | 2 +- .../service/lowerctrl/TurnableMoveCtrlService.java | 2 +- .../mainctrl/AppConsumablesScanService.java | 22 -- .../mainflowctrl/MainFlowCtrlScheduler.java | 2 +- .../action/AC30ScanTubeHolderTask.java | 2 +- .../base/A8kPublicAreaResourcePacket.java | 17 -- .../mainctrl/mainflowctrl/base/ActionDoUtils.java | 23 -- src/main/java/a8k/app/utils/ZAppChecker.java | 10 - src/main/java/a8k/app/utils/ZSqlite.java | 2 +- .../utils/opt_gain_convert/FOptGainConvert.java | 21 -- .../app/utils/opt_gain_convert/OptGainConvert.java | 32 --- .../utils/opt_gain_convert/TOptGainConvert.java | 23 -- .../extui/factory/FakeOptScanResultFactory.java | 60 ++++ .../a8k/extui/factory/ProjExtInfoCardFactory.java | 73 +++++ .../java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java | 2 +- .../pos_calibration/PosMeasureUtilsPage.java | 2 +- .../a8k/extui/page/debug/P01ProjInfoDebugPage.java | 2 +- .../page/extapp/OptModuleParamCalibration.java | 2 +- .../extui/page/extapp/UsrOperationSimulation.java | 117 -------- .../page/extapp/UsrOperationSimulationPage.java | 117 ++++++++ .../FakeReactionRecordGeneratorPage.java | 4 +- .../debug_assistant/IDCardDataGeneratorPage.java | 2 +- .../db/A8kSubModuleParameterInitDebugPage.java | 2 +- .../driver/LowLevelBoardVersionPreviewPage.java | 2 +- 64 files changed, 1071 insertions(+), 1216 deletions(-) delete mode 100644 src/main/java/a8k/app/a8ktype/db/CommonPage.java create mode 100644 src/main/java/a8k/app/dao/type/CommonPage.java delete mode 100644 src/main/java/a8k/app/factory/AppExceptionFactory.java delete mode 100644 src/main/java/a8k/app/factory/FakeOptScanResultFactory.java delete mode 100644 src/main/java/a8k/app/factory/ProjExtInfoCardFactory.java delete mode 100644 src/main/java/a8k/app/hardware/basedriver/A8kCanBusConnection.java delete mode 100644 src/main/java/a8k/app/hardware/basedriver/A8kCanBusService.java delete mode 100644 src/main/java/a8k/app/hardware/basedriver/LisUartChannelConnection.java create mode 100644 src/main/java/a8k/app/hardware/channel/A8kCanBusConnection.java create mode 100644 src/main/java/a8k/app/hardware/channel/A8kCanBusService.java create mode 100644 src/main/java/a8k/app/hardware/channel/LisUartChannelConnection.java create mode 100644 src/main/java/a8k/app/hardware/driver/ModuleEnableCtrlDriver.java delete mode 100644 src/main/java/a8k/app/hardware/extdriver/ModuleEnableCtrlDriver.java create mode 100644 src/main/java/a8k/app/hardware/utils/OptGainConvert.java delete mode 100644 src/main/java/a8k/app/service/lis/LISService.java delete mode 100644 src/main/java/a8k/app/service/mainctrl/mainflowctrl/base/A8kPublicAreaResourcePacket.java delete mode 100644 src/main/java/a8k/app/service/mainctrl/mainflowctrl/base/ActionDoUtils.java delete mode 100644 src/main/java/a8k/app/utils/opt_gain_convert/FOptGainConvert.java delete mode 100644 src/main/java/a8k/app/utils/opt_gain_convert/OptGainConvert.java delete mode 100644 src/main/java/a8k/app/utils/opt_gain_convert/TOptGainConvert.java create mode 100644 src/main/java/a8k/extui/factory/FakeOptScanResultFactory.java create mode 100644 src/main/java/a8k/extui/factory/ProjExtInfoCardFactory.java delete mode 100644 src/main/java/a8k/extui/page/extapp/UsrOperationSimulation.java create mode 100644 src/main/java/a8k/extui/page/extapp/UsrOperationSimulationPage.java diff --git a/src/main/java/a8k/app/a8ktype/db/CommonPage.java b/src/main/java/a8k/app/a8ktype/db/CommonPage.java deleted file mode 100644 index da96cb9..0000000 --- a/src/main/java/a8k/app/a8ktype/db/CommonPage.java +++ /dev/null @@ -1,24 +0,0 @@ -package a8k.app.a8ktype.db; - -import lombok.Getter; -import lombok.Setter; -import java.util.List; - -@Getter -@Setter -public class CommonPage { - - private Integer pageNum; //第几页 - private Integer pageSize; //一页展示几条数据 - private Integer totalPage; //总页数 - private long total; //总条数 - private List list; //数据 - - public CommonPage(Integer pageNum, Integer pageSize, Integer totalPage, long total, List list) { - this.pageNum = pageNum; - this.pageSize = pageSize; - this.totalPage = totalPage; - this.total = total; - this.list = list; - } -} diff --git a/src/main/java/a8k/app/a8ktype/state/SensorState.java b/src/main/java/a8k/app/a8ktype/state/SensorState.java index 78fdafb..de05f67 100644 --- a/src/main/java/a8k/app/a8ktype/state/SensorState.java +++ b/src/main/java/a8k/app/a8ktype/state/SensorState.java @@ -10,8 +10,6 @@ public class SensorState { Integer incubateBoxTemperature = 25; @Schema(description = "废液桶满标志") Boolean wasteBinFullFlag = false; - @Schema(description = "A8K项目卡状态") - Boolean A8kProjCardState = false; public synchronized Integer getPboxTemperature() { return pboxTemperature; diff --git a/src/main/java/a8k/app/config/IflytophaldConnectionConfig.java b/src/main/java/a8k/app/config/IflytophaldConnectionConfig.java index 8ef69d5..07231b4 100644 --- a/src/main/java/a8k/app/config/IflytophaldConnectionConfig.java +++ b/src/main/java/a8k/app/config/IflytophaldConnectionConfig.java @@ -1,6 +1,6 @@ package a8k.app.config; -import a8k.app.hardware.basedriver.A8kCanBusConnection; +import a8k.app.hardware.channel.A8kCanBusConnection; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/src/main/java/a8k/app/controler/api/v1/app/data/A8kProjectCardControler.java b/src/main/java/a8k/app/controler/api/v1/app/data/A8kProjectCardControler.java index a57297a..f0f1413 100644 --- a/src/main/java/a8k/app/controler/api/v1/app/data/A8kProjectCardControler.java +++ b/src/main/java/a8k/app/controler/api/v1/app/data/A8kProjectCardControler.java @@ -6,7 +6,7 @@ import a8k.app.service.data.ProjIdCardInfoMgrService; import a8k.app.service.statemgr.GStateMgrService; import a8k.app.dao.type.A8kProjInfoCardBreif; import a8k.app.a8ktype.ui.ApiRet; -import a8k.app.a8ktype.db.CommonPage; +import a8k.app.dao.type.CommonPage; import a8k.app.a8ktype.exception.AppException; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/src/main/java/a8k/app/controler/api/v1/app/data/ReactionResultControler.java b/src/main/java/a8k/app/controler/api/v1/app/data/ReactionResultControler.java index f974598..73dc22a 100644 --- a/src/main/java/a8k/app/controler/api/v1/app/data/ReactionResultControler.java +++ b/src/main/java/a8k/app/controler/api/v1/app/data/ReactionResultControler.java @@ -4,7 +4,7 @@ import a8k.app.service.data.ReactionRecordMgrService; import a8k.app.service.statemgr.GStateMgrService; import a8k.app.dao.type.ReactionReport; import a8k.app.a8ktype.ui.ApiRet; -import a8k.app.a8ktype.db.CommonPage; +import a8k.app.dao.type.CommonPage; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/a8k/app/dao/A8kProjExtInfoCardDao.java b/src/main/java/a8k/app/dao/A8kProjExtInfoCardDao.java index f505432..8720b13 100644 --- a/src/main/java/a8k/app/dao/A8kProjExtInfoCardDao.java +++ b/src/main/java/a8k/app/dao/A8kProjExtInfoCardDao.java @@ -1,6 +1,6 @@ package a8k.app.dao; -import a8k.app.a8ktype.db.CommonPage; +import a8k.app.dao.type.CommonPage; import a8k.app.a8ktype.exception.AppException; import a8k.app.dao.type.ProjExtInfoCard; import a8k.app.hardware.type.a8kcanprotocol.A8kEcode; diff --git a/src/main/java/a8k/app/dao/type/CommonPage.java b/src/main/java/a8k/app/dao/type/CommonPage.java new file mode 100644 index 0000000..036e6fa --- /dev/null +++ b/src/main/java/a8k/app/dao/type/CommonPage.java @@ -0,0 +1,24 @@ +package a8k.app.dao.type; + +import lombok.Getter; +import lombok.Setter; +import java.util.List; + +@Getter +@Setter +public class CommonPage { + + private Integer pageNum; //第几页 + private Integer pageSize; //一页展示几条数据 + private Integer totalPage; //总页数 + private long total; //总条数 + private List list; //数据 + + public CommonPage(Integer pageNum, Integer pageSize, Integer totalPage, long total, List list) { + this.pageNum = pageNum; + this.pageSize = pageSize; + this.totalPage = totalPage; + this.total = total; + this.list = list; + } +} diff --git a/src/main/java/a8k/app/factory/AppExceptionFactory.java b/src/main/java/a8k/app/factory/AppExceptionFactory.java deleted file mode 100644 index a91ecc5..0000000 --- a/src/main/java/a8k/app/factory/AppExceptionFactory.java +++ /dev/null @@ -1,23 +0,0 @@ -package a8k.app.factory; - -import a8k.app.hardware.type.a8kcanprotocol.A8kEcode; -import a8k.app.a8ktype.error.AppError; -import a8k.app.a8ktype.error.AEConsumeNotEnoughError; -import a8k.app.a8ktype.exception.AppException; -import jakarta.annotation.Resource; -import org.slf4j.Logger; -import org.springframework.stereotype.Component; -import a8k.app.service.data.ProjInfoMgrService; - -@Component -public class AppExceptionFactory { - static Logger logger = org.slf4j.LoggerFactory.getLogger(AppExceptionFactory.class); - - @Resource - ProjInfoMgrService projConfigMgrService; - - - public AppException buildAppException(A8kEcode code) { - return new AppException(new AppError(code)); - } -} diff --git a/src/main/java/a8k/app/factory/FakeOptScanResultFactory.java b/src/main/java/a8k/app/factory/FakeOptScanResultFactory.java deleted file mode 100644 index 007aabf..0000000 --- a/src/main/java/a8k/app/factory/FakeOptScanResultFactory.java +++ /dev/null @@ -1,60 +0,0 @@ -package a8k.app.factory; - -import a8k.app.a8kproj.optalgo.type.A8kOptPeak; -import a8k.app.a8kproj.optalgo.type.OptAlgoAnalysResult; -import a8k.app.a8kproj.optalgo.type.OptScanResult; -import a8k.app.a8kproj.optalgo.type.PeakFindState; -import a8k.app.a8ktype.opttype.PeakName; -import a8k.app.dao.type.OptRawScanData; -import a8k.app.dao.type.a8kidcard.zenum.A8kOptType; - -import java.util.Date; - -public class FakeOptScanResultFactory { - public static OptScanResult buildOptScanResult(A8kOptType optType) { - OptScanResult optScanResult = new OptScanResult(); - optScanResult.scanDate = new Date(); - - //OptRawScanData - var rawData = new OptRawScanData(); - rawData.optType = optType; - rawData.lasterGain = 1; - rawData.scanGain = 1; - rawData.rawData = new Integer[1200]; - if (optType.equals(A8kOptType.FOPT)) { - for (int i = 0; i < 1200; i++) { - rawData.rawData[i] = i; - } - } else { - for (int i = 0; i < 1200; i++) { - rawData.rawData[i] = 1200 - i; - } - } - - optScanResult.rawData = rawData; - - //OptAlgoAnalysResult - OptAlgoAnalysResult optAlgoAnalysResult = new OptAlgoAnalysResult(); - optAlgoAnalysResult.T4 = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.T4, 0, 1.1, 40, 0, 80); - optAlgoAnalysResult.R = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.R, 0, 1.1, 80, 40, 120); - optAlgoAnalysResult.H = null; - optAlgoAnalysResult.T = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.T, 0, 1.1, 160, 120, 200); - optAlgoAnalysResult.C = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.C, 0, 1.1, 200, 160, 240); - optAlgoAnalysResult.pdR = 1.1; - optAlgoAnalysResult.pdAR = 1.2; - optAlgoAnalysResult.pdATR = 1.3; - optAlgoAnalysResult.pdRFR = 1.4; - optAlgoAnalysResult.pdT4R = 1.5; - optAlgoAnalysResult.pdT4T3R = 1.6; - optAlgoAnalysResult.resultData = new double[250]; - for (int i = 0; i < 250; i++) { - optAlgoAnalysResult.resultData[i] = optType.equals(A8kOptType.FOPT) ? i : 250 - i; - } - - - optScanResult.analysResult = optAlgoAnalysResult; - - //return - return optScanResult; - } -} diff --git a/src/main/java/a8k/app/factory/ProjExtInfoCardFactory.java b/src/main/java/a8k/app/factory/ProjExtInfoCardFactory.java deleted file mode 100644 index bf97ee5..0000000 --- a/src/main/java/a8k/app/factory/ProjExtInfoCardFactory.java +++ /dev/null @@ -1,73 +0,0 @@ -package a8k.app.factory; - -import a8k.SpringBootBeanUtil; -import a8k.app.a8ktype.exception.AppException; -import a8k.app.dao.type.ProjExtInfoCard; -import a8k.app.dao.type.a8kidcard.A8kNormalFn; -import a8k.app.dao.type.a8kidcard.A8kOptFnFormula; -import a8k.app.dao.type.a8kidcard.A8kPiecewiseFn; -import a8k.app.dao.type.a8kidcard.A8kResultBuilderFn; -import a8k.app.dao.type.a8kidcard.zenum.A8kFnType; -import a8k.app.service.data.ProjInfoMgrService; -import a8k.app.utils.ProjBuildinInfo; - -import java.util.Date; - - -public class ProjExtInfoCardFactory { - - public static ProjExtInfoCard buildProjExtInfoCard(Integer projId, String lotId) throws AppException { - ProjInfoMgrService projInfoMgrService = SpringBootBeanUtil.getBean(ProjInfoMgrService.class); - - - ProjBuildinInfo projBuildinInfo = projInfoMgrService.getProjBuildInInfo(projId); - - if (lotId == null || lotId.isEmpty()) { - lotId = String.format("%s000000", projBuildinInfo.projShortName); - } - - ProjExtInfoCard projExtInfoCard = new ProjExtInfoCard(); - projExtInfoCard.id = 0; - projExtInfoCard.color = projBuildinInfo.color; - projExtInfoCard.projShortName = projBuildinInfo.projShortName; - projExtInfoCard.projName = projBuildinInfo.projName; - projExtInfoCard.lotId = lotId; - projExtInfoCard.expiryDate = new Date(System.currentTimeMillis() + 30L * 24 * 60 * 60 * 1000); - projExtInfoCard.projId = projId; - projExtInfoCard.palteCode = 0; - projExtInfoCard.updateChipVersion = 0; - projExtInfoCard.subProjNum = projBuildinInfo.subProjNum; - - if (projExtInfoCard.subProjNum >= 1) { - projExtInfoCard.projFnFormuals.add(buildOptFnA8kNormalFn()); - } - if (projExtInfoCard.subProjNum >= 2) { - projExtInfoCard.projFnFormuals.add(buildOptFnA8kNormalFn()); - } - if (projExtInfoCard.subProjNum >= 3) { - projExtInfoCard.projFnFormuals.add(buildOptFnA8kNormalFn()); - } - - return projExtInfoCard; - } - - static A8kOptFnFormula buildOptFnA8kNormalFn() { - A8kOptFnFormula var = new A8kOptFnFormula(); - var.fnType = A8kFnType.NormalFn; - var.serumNorFn = new A8kNormalFn(); - var.bloodNorFn = new A8kNormalFn(); - var.resultBuilderFn = new A8kResultBuilderFn(); - return var; - } - - public static A8kOptFnFormula buildOptFnA8kPiecewiseFn() { - A8kOptFnFormula var = new A8kOptFnFormula(); - var.fnType = A8kFnType.PiecewiseFn; - var.serumPiecewiseFn = new A8kPiecewiseFn(); - var.bloodPiecewiseFn = new A8kPiecewiseFn(); - var.resultBuilderFn = new A8kResultBuilderFn(); - return var; - } - - -} diff --git a/src/main/java/a8k/app/factory/ZAppPromoptFactory.java b/src/main/java/a8k/app/factory/ZAppPromoptFactory.java index 4a0ab40..6936f9d 100644 --- a/src/main/java/a8k/app/factory/ZAppPromoptFactory.java +++ b/src/main/java/a8k/app/factory/ZAppPromoptFactory.java @@ -103,22 +103,6 @@ public class ZAppPromoptFactory { public static AppPromptEvent buildAppPromoptEvent(Exception e) { return new AppPromptEvent(buildAppPromopt(e)); } - // - // public static List buildAppPromptEvents(A8kEcodeContextListPromptEvent e) { - // List ret = new ArrayList<>(); - // for (AppActionErrorContext ecode : e.ecodeList) { - // ret.add(new AppPromptEvent(ZAppPromoptFactory.buildAppPromopt(ecode.ecode))); - // } - // return ret; - // } - // - // public static List buildAppPromptEvents(A8kErrorsPromptEvent e) { - // List prompts = new java.util.ArrayList<>(); - // for (AppError error : e.errors) { - // prompts.add(new AppPromptEvent(ZAppPromoptFactory.buildAppPromopt(error))); - // } - // return prompts; - // - // } + } \ No newline at end of file diff --git a/src/main/java/a8k/app/hardware/basedriver/A8kCanBusConnection.java b/src/main/java/a8k/app/hardware/basedriver/A8kCanBusConnection.java deleted file mode 100644 index 4e2fb82..0000000 --- a/src/main/java/a8k/app/hardware/basedriver/A8kCanBusConnection.java +++ /dev/null @@ -1,316 +0,0 @@ -package a8k.app.hardware.basedriver; - -import a8k.OS; -import a8k.app.a8ktype.appevent.A8kCanBusOnConnectEvent; -import a8k.app.a8ktype.appevent.A8kHardwareReport; -import a8k.app.a8ktype.error.AEHardwareError; -import a8k.app.a8ktype.exception.AppException; -import a8k.app.factory.A8kPacketFactory; -import a8k.app.hardware.type.a8kcanprotocol.*; -import a8k.app.service.bases.AppEventBusService; -import a8k.app.utils.ByteArray; -import a8k.app.utils.ZList; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.java_websocket.client.WebSocketClient; -import org.java_websocket.enums.ReadyState; -import org.java_websocket.handshake.ServerHandshake; -import org.springframework.scheduling.annotation.Scheduled; - -import java.net.URI; -import java.net.http.HttpClient; -import java.net.http.HttpRequest; -import java.net.http.HttpResponse; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.TimeUnit; - - -@Slf4j -public class A8kCanBusConnection extends WebSocketClient { - @Resource - AppEventBusService eventBus; - - String datachurl = null; - String cmdchurl = null; - Boolean firstCall = true; - - - static class ProcessContext { - BlockingQueue receiptQueue = new LinkedBlockingQueue<>(); // - int waitingReceiptIndex = 0;// - Map txcmdcache = new HashMap<>(); - - - public A8kPacket getReceipt(int overtime) { - long end = System.currentTimeMillis() + overtime; - while (System.currentTimeMillis() < end) { - int left = (int) (end - System.currentTimeMillis()); - A8kPacket packet = null; - try { - packet = receiptQueue.poll(left, TimeUnit.MILLISECONDS); - } catch (InterruptedException ignored) { - } - if (packet != null) { - return packet; - } - } - return null; - } - - synchronized void pushReceipt(A8kPacket packet) { - if (waitingReceiptIndex >= 0 && waitingReceiptIndex == packet.getPacketIndex()) { - // log.debug("pushReceipt:| {}", packet); - receiptQueue.add(packet); - waitingReceiptIndex = -1; - } - } - - synchronized void setWaitingReceiptIndex(int index) { - receiptQueue.clear(); - waitingReceiptIndex = index; - } - - - synchronized void storageTxLastCmd(A8kPacket pack) { - MId mid = MId.valueOf(pack.getModuleId()); - CmdId cmdId = CmdId.valueOf(pack.getCmdId()); - if (cmdId != null && cmdId.isActionCmd()) - txcmdcache.put(mid, cmdId); - } - - synchronized CmdId getLastTxCmd(MId mid) { - return txcmdcache.get(mid); - } - } - - - ProcessContext context = new ProcessContext(); - int packetIndex = 0;//发送包的packetIndex - - - public A8kCanBusConnection(String cmdchurl, String datachurl) { - super(URI.create(datachurl)); - log.info("new A8kCanBusConnection: {} {}", cmdchurl, datachurl); - - this.datachurl = datachurl; - this.cmdchurl = cmdchurl; - packetIndex = 0; - - } - - @Override public void onOpen(ServerHandshake serverHandshake) { - log.info("a8k canbus connect sucess"); - eventBus.pushEvent(new A8kCanBusOnConnectEvent()); - } - - @Override public void onMessage(String s) { - processCanRxMessage(s); - } - - @Override public void onClose(int i, String s, boolean b) { - log.warn("a8k canbus lost connection..."); - } - - @Override public void onError(Exception e) { - log.info("a8k can-websocket-channel on error"); - } - - - synchronized public A8kPacket callcmd(MId moduleId, CmdId cmdId, Integer... param) throws AppException { - var packet = packParamsToPacket(moduleId.toInt(), cmdId.toInt(), ZList.of(param)); - return autoReSend(packet, A8kPacket.CMD_OVERTIME); - - } - - synchronized public A8kPacket callcmd2(MId moduleId, CmdId cmdId, Integer overtime, Integer... params) throws AppException { - var packet = packParamsToPacket(moduleId.toInt(), cmdId.toInt(), ZList.of(params)); - return autoReSend(packet, overtime); - } - - synchronized public A8kPacket send(A8kPacket pack, int overtime) throws AppException { - return priSend(pack, overtime); - } - - - // - // PRIVATE - // - @Scheduled(fixedRate = 1000) - private void autoConnect() { - if (!isOpen()) { - if (getReadyState().equals(ReadyState.NOT_YET_CONNECTED)) { - try { - connect(); - } catch (IllegalStateException ignored) { - } - } else if (getReadyState().equals(ReadyState.CLOSED)) { - reconnect(); - } - } - } - - /** - * 强制关闭websocket连接,让其与canbus服务重连 - */ - private A8kPacket packParamsToPacket(Integer moduleId, Integer cmdId, List params) { - return A8kPacketFactory.buildCMDPacket(moduleId, cmdId, params); - } - - - private A8kPacket autoReSend(A8kPacket pack, int overtime) throws AppException { - if (firstCall) { - firstCall = false; - restartCanif(); - } - - - for (int i = 0; i < 5; i++) { - try { - return this.priSend(pack, overtime); - } catch (AppException e) { - if (!e.error.code.equals(A8kEcode.LOW_ERROR_OVERTIME)) { - throw e; - } - } - restartCanif(); - OS.hsleep(100); - log.error("send cmd {} {} fail, retry {}", pack, pack.toByteString(), i); - } - throw AppException.of(new AEHardwareError(A8kEcode.LOW_ERROR_OVERTIME, MId.valueOf(pack.getModuleId()), CmdId.valueOf(pack.getCmdId()))); - } - - private A8kPacket priSend(A8kPacket pack, int overtime) throws AppException { - try { - return _priSend(pack, overtime); - } catch (AppException e) { - throw e; - } catch (Exception e) { - log.error("priSend error", e); - OS.hsleep(2000); - throw AppException.of(new AEHardwareError(A8kEcode.LOW_ERROR_OVERTIME, MId.valueOf(pack.getModuleId()), CmdId.valueOf(pack.getCmdId()))); - } - } - - - AppException buildOvertimeError(A8kPacket pack) { - return AppException.of(new AEHardwareError(A8kEcode.LOW_ERROR_OVERTIME, MId.valueOf(pack.getModuleId()), CmdId.valueOf(pack.getCmdId()))); - } - - private A8kPacket _priSend(A8kPacket pack, int overtime) throws AppException { - // alloc new packetIndex - packetIndex = packetIndex + 1; - if (packetIndex > 100) { - packetIndex = 1; - } - - //set waiting receipt index - pack.setPacketIndex(packetIndex); - context.storageTxLastCmd(pack); - context.setWaitingReceiptIndex(packetIndex); - - // TX packet - String txpacket = pack.toByteString(); - log.debug("Tx:|RAW:{}| {}", txpacket, pack); - send(txpacket); - - - A8kPacket receipt; - receipt = context.getReceipt(overtime); - if (receipt == null) { - throw buildOvertimeError(pack); - } - - if (receipt.getPacketType() == A8kPacket.PACKET_TYPE_ERROR_ACK) { - throw AppException.of(new AEHardwareError(A8kEcode.fromInt(receipt.getContentI32(0)), - MId.valueOf(pack.getModuleId()), - CmdId.valueOf(pack.getCmdId()), - txpacket, - receipt.toByteString() - ) - ); - } - OS.forceSleep(10); - return receipt; - } - - /** - * 处理接收到的消息 - */ - private void processCanRxMessage(String s) { - byte[] rx = ByteArray.hexStringToBytes(s); - if (rx == null || rx.length == 0) { - log.warn("rx is empty"); - return; - } - - if (rx.length < A8kPacket.PACKET_MIN_LEN) { - log.warn("rx is too short,{}", s); - return; - } - - A8kPacket packet = new A8kPacket(rx); - - if (packet.getCheckcode() != packet.computeCheckcode()) { - log.warn("Rx packet checkcode error: {}, expect: {} but got: {}", packet, packet.computeCheckcode(), packet.getCheckcode()); - return; - } - - if (!packet.isSupportPacket()) { - log.warn("Rx packet not support: {}", packet); - return; - } - - - if (packet.getPacketType() == A8kPacket.PACKET_TYPE_ACK || packet.getPacketType() == A8kPacket.PACKET_TYPE_ERROR_ACK) { - log.debug("RX-ACK |RAW:{}| {}", s, packet); - context.pushReceipt(packet); - } else if (packet.getPacketType() == A8kPacket.PACKET_TYPE_EVENT) { - log.debug("RX-REPORT |RAW:{}| {}", s, packet); - eventBus.pushEvent(new A8kHardwareReport(packet)); - } else { - log.warn("RX-UNPROCESSABLE: |RAW:{}| {}", s, packet); - } - } - - public synchronized CmdId getLastTxCmd(MId mid) { - return context.getLastTxCmd(mid); - } - - public void restartCanif() { - callLocalCmd("restart"); - } - - - public HttpResponse callLocalCmd(String path) { - // 创建一个HttpClient实例 - HttpClient httpClient = HttpClient.newHttpClient(); - HttpRequest httpRequest = HttpRequest.newBuilder().uri(URI.create(String.format("%s/%s", cmdchurl, path))).build(); - HttpResponse ret = null; - try { - ret = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString()); - } catch (Exception e) { - log.error("callcmd error", e); - return null; - } - return ret; - } - - public static void main(String[] args) { - HttpClient httpClient = HttpClient.newHttpClient(); - HttpRequest httpRequest = HttpRequest.newBuilder().uri(URI.create("http://192.168.8.10:19004/zexcan/restart")).build(); - HttpResponse ret = null; - try { - ret = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString()); - log.info("ret: \t{}", ret.body()); - } catch (Exception e) { - log.error("callcmd error", e); - } - } - -} - - diff --git a/src/main/java/a8k/app/hardware/basedriver/A8kCanBusService.java b/src/main/java/a8k/app/hardware/basedriver/A8kCanBusService.java deleted file mode 100644 index 96d713d..0000000 --- a/src/main/java/a8k/app/hardware/basedriver/A8kCanBusService.java +++ /dev/null @@ -1,141 +0,0 @@ -package a8k.app.hardware.basedriver; - -import a8k.app.hardware.type.regindex.RegIndex; -import a8k.app.hardware.type.a8kcanprotocol.*; -import a8k.app.hardware.type.a8kcanprotocol.MId; -import a8k.app.a8ktype.error.AEHardwareError; -import a8k.app.a8ktype.exception.AppException; -import a8k.OS; -import a8k.app.utils.ByteArray; -import jakarta.annotation.PostConstruct; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.net.URISyntaxException; - -@Component -@Slf4j -public class A8kCanBusService { - @Resource - A8kCanBusConnection connection; - - @PostConstruct - public void init() throws URISyntaxException { - connection.connect(); - } - - /** - * 强制关闭websocket连接,让其与canbus服务重连 - */ - public void forceShutdown() { - connection.close(); - } - - // - // BASE_OPERATION - // - - public A8kPacket callcmd(MId moduleId, CmdId cmdId, Integer... param) throws AppException { - return connection.callcmd(moduleId, cmdId, param); - } - - public A8kPacket callcmd2(MId moduleId, CmdId cmdId, Integer overtime, Integer... params) throws AppException { - return connection.callcmd2(moduleId, cmdId, overtime, params); - } - - synchronized public A8kPacket send(A8kPacket pack, int overtime) throws AppException { - return connection.send(pack, overtime); - } - - // - // MODULE FUNCTION - // - - public void moduleStop(MId id) throws AppException { - connection.callcmd(id, CmdId.module_stop); - } - - public void moduleStopNoException(MId id) { - try { - moduleStop(id); - } catch (AppException ignored) { - } - } - - public ModuleStatus moduleGetStatus(MId id) throws AppException { - var packet = connection.callcmd(id, CmdId.module_get_status); - return ModuleStatus.valueOf(packet.getContentI32(0)); - } - - public void moduleSetReg(MId id, RegIndex regindex, Integer reg) throws AppException { - connection.callcmd(id, CmdId.module_set_reg, regindex.index, reg); - } - - public Integer moduleGetReg(MId id, RegIndex regindex) throws AppException { - var packet = connection.callcmd(id, CmdId.module_get_reg, regindex.index); - return packet.getContentI32(0); - } - - public A8kEcode moduleGetError(MId id) throws AppException { - var packet = connection.callcmd(id, CmdId.module_get_error); - return A8kEcode.fromInt(packet.getContentI32(0)); - } - - public Integer moduleGetDetailError(MId id) { - Integer regval = 0; - try { - regval = moduleGetReg(id, RegIndex.kreg_module_detail_errorcode); - } catch (AppException ignored) { - } - return regval; - } - - public Integer moduleReadVersion(MId id) throws AppException { - return moduleGetReg(id, RegIndex.kreg_module_version); - } - - public ModuleType moduleReadType(MId id) throws AppException { - var type = moduleGetReg(id, RegIndex.kreg_module_type); - return ModuleType.of(type); - } - - public byte[] a8kIdcardReaderReadRaw() throws AppException { - int i = 0; - byte[] result = new byte[0]; - while (true) { - var rxPacket = connection.callcmd(MId.A8kIdCardReader, CmdId.a8000_idcard_reader_read_raw, i++); - if (rxPacket.getCmdContent().length == 0) { - break; - } - result = ByteArray.concat(result, rxPacket.getCmdContent()); - } - return result; - } - - public void waitForMod(MId mid, Integer acitionOvertime) throws AppException { - long startedAt = System.currentTimeMillis(); - CmdId action = connection.getLastTxCmd(mid); - do { - ModuleStatus statu = moduleGetStatus(mid); - if (statu == ModuleStatus.IDLE) { - break; - } else if (statu == ModuleStatus.ERROR) { - log.error("{} waitting for action {} , catch error {}, defail ecode {}", mid, action, moduleGetError(mid), moduleGetDetailError(mid)); - throw AppException.of(new AEHardwareError(moduleGetError(mid), mid, action)); - } - long now = System.currentTimeMillis(); - if (now - startedAt > acitionOvertime) { - log.error("{} waitting for action {} overtime({})", mid, action, acitionOvertime); - moduleStopNoException(mid); - throw AppException.of(new AEHardwareError(A8kEcode.LOW_ERROR_ACTION_OVERTIME, mid, action)); - } - OS.hsleep(30); - } while (true); - } - - public boolean isConnect() { - return connection.isOpen(); - } - -} diff --git a/src/main/java/a8k/app/hardware/basedriver/LisUartChannelConnection.java b/src/main/java/a8k/app/hardware/basedriver/LisUartChannelConnection.java deleted file mode 100644 index caf3fc1..0000000 --- a/src/main/java/a8k/app/hardware/basedriver/LisUartChannelConnection.java +++ /dev/null @@ -1,55 +0,0 @@ -package a8k.app.hardware.basedriver; -import lombok.extern.slf4j.Slf4j; -import org.java_websocket.client.WebSocketClient; -import org.java_websocket.enums.ReadyState; -import org.java_websocket.handshake.ServerHandshake; -import org.springframework.scheduling.annotation.Scheduled; - -import java.net.URI; - - -@Slf4j -public class LisUartChannelConnection extends WebSocketClient { - String datachurl = null; - String cmdchurl = null; - - public LisUartChannelConnection(String cmdchurl, String datachurl) { - super(URI.create(datachurl)); - log.info("new A8kCanBusConnection: {} {}", cmdchurl, datachurl); - - this.datachurl = datachurl; - this.cmdchurl = cmdchurl; - } - - @Override public void onOpen(ServerHandshake serverHandshake) { - log.info("a8k canbus connect sucess"); - } - @Override public void onMessage(String s) { - } - @Override public void onClose(int i, String s, boolean b) { - log.warn("a8k canbus lost connection..."); - } - - @Override public void onError(Exception e) { - log.info("a8k can-websocket-channel on error"); - } - - // - // PRIVATE - // - @Scheduled(fixedRate = 1000) - private void autoConnect() { - if (!isOpen()) { - if (getReadyState().equals(ReadyState.NOT_YET_CONNECTED)) { - try { - connect(); - } catch (IllegalStateException ignored) { - } - } else if (getReadyState().equals(ReadyState.CLOSED)) { - reconnect(); - } - } - } -} - - diff --git a/src/main/java/a8k/app/hardware/channel/A8kCanBusConnection.java b/src/main/java/a8k/app/hardware/channel/A8kCanBusConnection.java new file mode 100644 index 0000000..4596139 --- /dev/null +++ b/src/main/java/a8k/app/hardware/channel/A8kCanBusConnection.java @@ -0,0 +1,316 @@ +package a8k.app.hardware.channel; + +import a8k.OS; +import a8k.app.a8ktype.appevent.A8kCanBusOnConnectEvent; +import a8k.app.a8ktype.appevent.A8kHardwareReport; +import a8k.app.a8ktype.error.AEHardwareError; +import a8k.app.a8ktype.exception.AppException; +import a8k.app.factory.A8kPacketFactory; +import a8k.app.hardware.type.a8kcanprotocol.*; +import a8k.app.service.bases.AppEventBusService; +import a8k.app.utils.ByteArray; +import a8k.app.utils.ZList; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.java_websocket.client.WebSocketClient; +import org.java_websocket.enums.ReadyState; +import org.java_websocket.handshake.ServerHandshake; +import org.springframework.scheduling.annotation.Scheduled; + +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.TimeUnit; + + +@Slf4j +public class A8kCanBusConnection extends WebSocketClient { + @Resource + AppEventBusService eventBus; + + String datachurl = null; + String cmdchurl = null; + Boolean firstCall = true; + + + static class ProcessContext { + BlockingQueue receiptQueue = new LinkedBlockingQueue<>(); // + int waitingReceiptIndex = 0;// + Map txcmdcache = new HashMap<>(); + + + public A8kPacket getReceipt(int overtime) { + long end = System.currentTimeMillis() + overtime; + while (System.currentTimeMillis() < end) { + int left = (int) (end - System.currentTimeMillis()); + A8kPacket packet = null; + try { + packet = receiptQueue.poll(left, TimeUnit.MILLISECONDS); + } catch (InterruptedException ignored) { + } + if (packet != null) { + return packet; + } + } + return null; + } + + synchronized void pushReceipt(A8kPacket packet) { + if (waitingReceiptIndex >= 0 && waitingReceiptIndex == packet.getPacketIndex()) { + // log.debug("pushReceipt:| {}", packet); + receiptQueue.add(packet); + waitingReceiptIndex = -1; + } + } + + synchronized void setWaitingReceiptIndex(int index) { + receiptQueue.clear(); + waitingReceiptIndex = index; + } + + + synchronized void storageTxLastCmd(A8kPacket pack) { + MId mid = MId.valueOf(pack.getModuleId()); + CmdId cmdId = CmdId.valueOf(pack.getCmdId()); + if (cmdId != null && cmdId.isActionCmd()) + txcmdcache.put(mid, cmdId); + } + + synchronized CmdId getLastTxCmd(MId mid) { + return txcmdcache.get(mid); + } + } + + + ProcessContext context = new ProcessContext(); + int packetIndex = 0;//发送包的packetIndex + + + public A8kCanBusConnection(String cmdchurl, String datachurl) { + super(URI.create(datachurl)); + log.info("new A8kCanBusConnection: {} {}", cmdchurl, datachurl); + + this.datachurl = datachurl; + this.cmdchurl = cmdchurl; + packetIndex = 0; + + } + + @Override public void onOpen(ServerHandshake serverHandshake) { + log.info("a8k canbus connect sucess"); + eventBus.pushEvent(new A8kCanBusOnConnectEvent()); + } + + @Override public void onMessage(String s) { + processCanRxMessage(s); + } + + @Override public void onClose(int i, String s, boolean b) { + log.warn("a8k canbus lost connection..."); + } + + @Override public void onError(Exception e) { + log.info("a8k can-websocket-channel on error"); + } + + + synchronized public A8kPacket callcmd(MId moduleId, CmdId cmdId, Integer... param) throws AppException { + var packet = packParamsToPacket(moduleId.toInt(), cmdId.toInt(), ZList.of(param)); + return autoReSend(packet, A8kPacket.CMD_OVERTIME); + + } + + synchronized public A8kPacket callcmd2(MId moduleId, CmdId cmdId, Integer overtime, Integer... params) throws AppException { + var packet = packParamsToPacket(moduleId.toInt(), cmdId.toInt(), ZList.of(params)); + return autoReSend(packet, overtime); + } + + synchronized public A8kPacket send(A8kPacket pack, int overtime) throws AppException { + return priSend(pack, overtime); + } + + + // + // PRIVATE + // + @Scheduled(fixedRate = 1000) + private void autoConnect() { + if (!isOpen()) { + if (getReadyState().equals(ReadyState.NOT_YET_CONNECTED)) { + try { + connect(); + } catch (IllegalStateException ignored) { + } + } else if (getReadyState().equals(ReadyState.CLOSED)) { + reconnect(); + } + } + } + + /** + * 强制关闭websocket连接,让其与canbus服务重连 + */ + private A8kPacket packParamsToPacket(Integer moduleId, Integer cmdId, List params) { + return A8kPacketFactory.buildCMDPacket(moduleId, cmdId, params); + } + + + private A8kPacket autoReSend(A8kPacket pack, int overtime) throws AppException { + if (firstCall) { + firstCall = false; + restartCanif(); + } + + + for (int i = 0; i < 5; i++) { + try { + return this.priSend(pack, overtime); + } catch (AppException e) { + if (!e.error.code.equals(A8kEcode.LOW_ERROR_OVERTIME)) { + throw e; + } + } + restartCanif(); + OS.hsleep(100); + log.error("send cmd {} {} fail, retry {}", pack, pack.toByteString(), i); + } + throw AppException.of(new AEHardwareError(A8kEcode.LOW_ERROR_OVERTIME, MId.valueOf(pack.getModuleId()), CmdId.valueOf(pack.getCmdId()))); + } + + private A8kPacket priSend(A8kPacket pack, int overtime) throws AppException { + try { + return _priSend(pack, overtime); + } catch (AppException e) { + throw e; + } catch (Exception e) { + log.error("priSend error", e); + OS.hsleep(2000); + throw AppException.of(new AEHardwareError(A8kEcode.LOW_ERROR_OVERTIME, MId.valueOf(pack.getModuleId()), CmdId.valueOf(pack.getCmdId()))); + } + } + + + AppException buildOvertimeError(A8kPacket pack) { + return AppException.of(new AEHardwareError(A8kEcode.LOW_ERROR_OVERTIME, MId.valueOf(pack.getModuleId()), CmdId.valueOf(pack.getCmdId()))); + } + + private A8kPacket _priSend(A8kPacket pack, int overtime) throws AppException { + // alloc new packetIndex + packetIndex = packetIndex + 1; + if (packetIndex > 100) { + packetIndex = 1; + } + + //set waiting receipt index + pack.setPacketIndex(packetIndex); + context.storageTxLastCmd(pack); + context.setWaitingReceiptIndex(packetIndex); + + // TX packet + String txpacket = pack.toByteString(); + log.debug("Tx:|RAW:{}| {}", txpacket, pack); + send(txpacket); + + + A8kPacket receipt; + receipt = context.getReceipt(overtime); + if (receipt == null) { + throw buildOvertimeError(pack); + } + + if (receipt.getPacketType() == A8kPacket.PACKET_TYPE_ERROR_ACK) { + throw AppException.of(new AEHardwareError(A8kEcode.fromInt(receipt.getContentI32(0)), + MId.valueOf(pack.getModuleId()), + CmdId.valueOf(pack.getCmdId()), + txpacket, + receipt.toByteString() + ) + ); + } + OS.forceSleep(10); + return receipt; + } + + /** + * 处理接收到的消息 + */ + private void processCanRxMessage(String s) { + byte[] rx = ByteArray.hexStringToBytes(s); + if (rx == null || rx.length == 0) { + log.warn("rx is empty"); + return; + } + + if (rx.length < A8kPacket.PACKET_MIN_LEN) { + log.warn("rx is too short,{}", s); + return; + } + + A8kPacket packet = new A8kPacket(rx); + + if (packet.getCheckcode() != packet.computeCheckcode()) { + log.warn("Rx packet checkcode error: {}, expect: {} but got: {}", packet, packet.computeCheckcode(), packet.getCheckcode()); + return; + } + + if (!packet.isSupportPacket()) { + log.warn("Rx packet not support: {}", packet); + return; + } + + + if (packet.getPacketType() == A8kPacket.PACKET_TYPE_ACK || packet.getPacketType() == A8kPacket.PACKET_TYPE_ERROR_ACK) { + log.debug("RX-ACK |RAW:{}| {}", s, packet); + context.pushReceipt(packet); + } else if (packet.getPacketType() == A8kPacket.PACKET_TYPE_EVENT) { + log.debug("RX-REPORT |RAW:{}| {}", s, packet); + eventBus.pushEvent(new A8kHardwareReport(packet)); + } else { + log.warn("RX-UNPROCESSABLE: |RAW:{}| {}", s, packet); + } + } + + public synchronized CmdId getLastTxCmd(MId mid) { + return context.getLastTxCmd(mid); + } + + public void restartCanif() { + callLocalCmd("restart"); + } + + + public HttpResponse callLocalCmd(String path) { + // 创建一个HttpClient实例 + HttpClient httpClient = HttpClient.newHttpClient(); + HttpRequest httpRequest = HttpRequest.newBuilder().uri(URI.create(String.format("%s/%s", cmdchurl, path))).build(); + HttpResponse ret = null; + try { + ret = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString()); + } catch (Exception e) { + log.error("callcmd error", e); + return null; + } + return ret; + } + + public static void main(String[] args) { + HttpClient httpClient = HttpClient.newHttpClient(); + HttpRequest httpRequest = HttpRequest.newBuilder().uri(URI.create("http://192.168.8.10:19004/zexcan/restart")).build(); + HttpResponse ret = null; + try { + ret = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString()); + log.info("ret: \t{}", ret.body()); + } catch (Exception e) { + log.error("callcmd error", e); + } + } + +} + + diff --git a/src/main/java/a8k/app/hardware/channel/A8kCanBusService.java b/src/main/java/a8k/app/hardware/channel/A8kCanBusService.java new file mode 100644 index 0000000..8fae56a --- /dev/null +++ b/src/main/java/a8k/app/hardware/channel/A8kCanBusService.java @@ -0,0 +1,141 @@ +package a8k.app.hardware.channel; + +import a8k.app.hardware.type.regindex.RegIndex; +import a8k.app.hardware.type.a8kcanprotocol.*; +import a8k.app.hardware.type.a8kcanprotocol.MId; +import a8k.app.a8ktype.error.AEHardwareError; +import a8k.app.a8ktype.exception.AppException; +import a8k.OS; +import a8k.app.utils.ByteArray; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.net.URISyntaxException; + +@Component +@Slf4j +public class A8kCanBusService { + @Resource + A8kCanBusConnection connection; + + @PostConstruct + public void init() throws URISyntaxException { + connection.connect(); + } + + /** + * 强制关闭websocket连接,让其与canbus服务重连 + */ + public void forceShutdown() { + connection.close(); + } + + // + // BASE_OPERATION + // + + public A8kPacket callcmd(MId moduleId, CmdId cmdId, Integer... param) throws AppException { + return connection.callcmd(moduleId, cmdId, param); + } + + public A8kPacket callcmd2(MId moduleId, CmdId cmdId, Integer overtime, Integer... params) throws AppException { + return connection.callcmd2(moduleId, cmdId, overtime, params); + } + + synchronized public A8kPacket send(A8kPacket pack, int overtime) throws AppException { + return connection.send(pack, overtime); + } + + // + // MODULE FUNCTION + // + + public void moduleStop(MId id) throws AppException { + connection.callcmd(id, CmdId.module_stop); + } + + public void moduleStopNoException(MId id) { + try { + moduleStop(id); + } catch (AppException ignored) { + } + } + + public ModuleStatus moduleGetStatus(MId id) throws AppException { + var packet = connection.callcmd(id, CmdId.module_get_status); + return ModuleStatus.valueOf(packet.getContentI32(0)); + } + + public void moduleSetReg(MId id, RegIndex regindex, Integer reg) throws AppException { + connection.callcmd(id, CmdId.module_set_reg, regindex.index, reg); + } + + public Integer moduleGetReg(MId id, RegIndex regindex) throws AppException { + var packet = connection.callcmd(id, CmdId.module_get_reg, regindex.index); + return packet.getContentI32(0); + } + + public A8kEcode moduleGetError(MId id) throws AppException { + var packet = connection.callcmd(id, CmdId.module_get_error); + return A8kEcode.fromInt(packet.getContentI32(0)); + } + + public Integer moduleGetDetailError(MId id) { + Integer regval = 0; + try { + regval = moduleGetReg(id, RegIndex.kreg_module_detail_errorcode); + } catch (AppException ignored) { + } + return regval; + } + + public Integer moduleReadVersion(MId id) throws AppException { + return moduleGetReg(id, RegIndex.kreg_module_version); + } + + public ModuleType moduleReadType(MId id) throws AppException { + var type = moduleGetReg(id, RegIndex.kreg_module_type); + return ModuleType.of(type); + } + + public byte[] a8kIdcardReaderReadRaw() throws AppException { + int i = 0; + byte[] result = new byte[0]; + while (true) { + var rxPacket = connection.callcmd(MId.A8kIdCardReader, CmdId.a8000_idcard_reader_read_raw, i++); + if (rxPacket.getCmdContent().length == 0) { + break; + } + result = ByteArray.concat(result, rxPacket.getCmdContent()); + } + return result; + } + + public void waitForMod(MId mid, Integer acitionOvertime) throws AppException { + long startedAt = System.currentTimeMillis(); + CmdId action = connection.getLastTxCmd(mid); + do { + ModuleStatus statu = moduleGetStatus(mid); + if (statu == ModuleStatus.IDLE) { + break; + } else if (statu == ModuleStatus.ERROR) { + log.error("{} waitting for action {} , catch error {}, defail ecode {}", mid, action, moduleGetError(mid), moduleGetDetailError(mid)); + throw AppException.of(new AEHardwareError(moduleGetError(mid), mid, action)); + } + long now = System.currentTimeMillis(); + if (now - startedAt > acitionOvertime) { + log.error("{} waitting for action {} overtime({})", mid, action, acitionOvertime); + moduleStopNoException(mid); + throw AppException.of(new AEHardwareError(A8kEcode.LOW_ERROR_ACTION_OVERTIME, mid, action)); + } + OS.hsleep(30); + } while (true); + } + + public boolean isConnect() { + return connection.isOpen(); + } + +} diff --git a/src/main/java/a8k/app/hardware/channel/LisUartChannelConnection.java b/src/main/java/a8k/app/hardware/channel/LisUartChannelConnection.java new file mode 100644 index 0000000..78c5e49 --- /dev/null +++ b/src/main/java/a8k/app/hardware/channel/LisUartChannelConnection.java @@ -0,0 +1,55 @@ +package a8k.app.hardware.channel; +import lombok.extern.slf4j.Slf4j; +import org.java_websocket.client.WebSocketClient; +import org.java_websocket.enums.ReadyState; +import org.java_websocket.handshake.ServerHandshake; +import org.springframework.scheduling.annotation.Scheduled; + +import java.net.URI; + + +@Slf4j +public class LisUartChannelConnection extends WebSocketClient { + String datachurl = null; + String cmdchurl = null; + + public LisUartChannelConnection(String cmdchurl, String datachurl) { + super(URI.create(datachurl)); + log.info("new A8kCanBusConnection: {} {}", cmdchurl, datachurl); + + this.datachurl = datachurl; + this.cmdchurl = cmdchurl; + } + + @Override public void onOpen(ServerHandshake serverHandshake) { + log.info("a8k canbus connect sucess"); + } + @Override public void onMessage(String s) { + } + @Override public void onClose(int i, String s, boolean b) { + log.warn("a8k canbus lost connection..."); + } + + @Override public void onError(Exception e) { + log.info("a8k can-websocket-channel on error"); + } + + // + // PRIVATE + // + @Scheduled(fixedRate = 1000) + private void autoConnect() { + if (!isOpen()) { + if (getReadyState().equals(ReadyState.NOT_YET_CONNECTED)) { + try { + connect(); + } catch (IllegalStateException ignored) { + } + } else if (getReadyState().equals(ReadyState.CLOSED)) { + reconnect(); + } + } + } +} + + diff --git a/src/main/java/a8k/app/hardware/driver/CodeScanerDriver.java b/src/main/java/a8k/app/hardware/driver/CodeScanerDriver.java index 84d8fc0..4fb50c8 100644 --- a/src/main/java/a8k/app/hardware/driver/CodeScanerDriver.java +++ b/src/main/java/a8k/app/hardware/driver/CodeScanerDriver.java @@ -1,7 +1,7 @@ package a8k.app.hardware.driver; import a8k.OS; -import a8k.app.hardware.basedriver.A8kCanBusService; +import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.hardware.type.a8kcanprotocol.A8kPacket; import a8k.app.hardware.type.a8kcanprotocol.CmdId; import a8k.app.hardware.type.a8kcanprotocol.MId; diff --git a/src/main/java/a8k/app/hardware/driver/HbotDriver.java b/src/main/java/a8k/app/hardware/driver/HbotDriver.java index 65bdbf1..8fe6981 100644 --- a/src/main/java/a8k/app/hardware/driver/HbotDriver.java +++ b/src/main/java/a8k/app/hardware/driver/HbotDriver.java @@ -1,6 +1,6 @@ package a8k.app.hardware.driver; -import a8k.app.hardware.basedriver.A8kCanBusService; +import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.hardware.type.a8kcanprotocol.CmdId; import a8k.app.hardware.type.a8kcanprotocol.MId; import a8k.app.hardware.driver.type.HbotRegIndex; diff --git a/src/main/java/a8k/app/hardware/driver/InputDetectDriver.java b/src/main/java/a8k/app/hardware/driver/InputDetectDriver.java index 11304b3..a54a681 100644 --- a/src/main/java/a8k/app/hardware/driver/InputDetectDriver.java +++ b/src/main/java/a8k/app/hardware/driver/InputDetectDriver.java @@ -2,7 +2,7 @@ package a8k.app.hardware.driver; import a8k.app.a8ktype.error.AECodeError; import a8k.app.a8ktype.exception.AppException; -import a8k.app.hardware.basedriver.A8kCanBusService; +import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.hardware.type.a8kcanprotocol.CmdId; import a8k.app.hardware.type.a8kcanprotocol.InputIOId; import a8k.app.hardware.type.a8kcanprotocol.ModuleType; diff --git a/src/main/java/a8k/app/hardware/driver/MiniServoDriver.java b/src/main/java/a8k/app/hardware/driver/MiniServoDriver.java index 824f075..bb5f6cb 100644 --- a/src/main/java/a8k/app/hardware/driver/MiniServoDriver.java +++ b/src/main/java/a8k/app/hardware/driver/MiniServoDriver.java @@ -1,7 +1,7 @@ package a8k.app.hardware.driver; import a8k.app.constant.MiniServoConstant; -import a8k.app.hardware.basedriver.A8kCanBusService; +import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.hardware.driver.type.MiniServoRegIndex; import a8k.app.hardware.type.a8kcanprotocol.A8kEcode; import a8k.app.hardware.type.a8kcanprotocol.CmdId; @@ -9,10 +9,8 @@ import a8k.app.hardware.type.regindex.RegIndex; import a8k.app.hardware.driver.type.MiniServoMId; import a8k.app.a8ktype.error.AEHardwareError; import a8k.app.a8ktype.exception.AppException; -import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; import org.springframework.stereotype.Component; diff --git a/src/main/java/a8k/app/hardware/driver/ModuleEnableCtrlDriver.java b/src/main/java/a8k/app/hardware/driver/ModuleEnableCtrlDriver.java new file mode 100644 index 0000000..2bfa878 --- /dev/null +++ b/src/main/java/a8k/app/hardware/driver/ModuleEnableCtrlDriver.java @@ -0,0 +1,170 @@ +package a8k.app.hardware.driver; + +import a8k.app.hardware.channel.A8kCanBusService; +import a8k.app.hardware.driver.type.MiniServoMId; +import a8k.app.hardware.driver.type.StepMotorMId; +import a8k.app.a8ktype.exception.AppException; +import a8k.app.hardware.type.a8kcanprotocol.MId; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +@RequiredArgsConstructor +public class ModuleEnableCtrlDriver { + + private final HbotDriver hbotDriver; + private final PipetteCtrlDriver pipetteCtrlDriver; + private final StepMotorCtrlDriver stepMotorCtrlDriver; + private final MiniServoDriver miniServoDriver; + private final A8kCanBusService canBus; + + public void forceDisableAllMotor() { + // StepMotorMId.values() + for (StepMotorMId stepMotorMId : StepMotorMId.values()) { + try { + stepMotorCtrlDriver.stepMotorEnable(stepMotorMId, 0); + } catch (AppException e) { + log.info("disableStepMotor: {} failed, {}", stepMotorMId, e.getMessage()); + } + } + + for (MiniServoMId miniServoMId : MiniServoMId.values()) { + try { + miniServoDriver.miniServoEnable(miniServoMId, 0); + } catch (AppException e) { + log.info("disableMiniServo: {} failed, {}", miniServoMId, e.getMessage()); + } + } + + try { + hbotDriver.enable(0); + } catch (AppException e) { + log.info("hbotDriver disable failed, {}", e.getMessage()); + } + + try { + pipetteCtrlDriver.zMotorEnable(0); + } catch (AppException e) { + log.info("pipetteCtrlDriver: zMotorEnable failed, {}", e.getMessage()); + } + } + + public void stopAllMotor() throws AppException { + //StopAllMotor + //进出料初始化 + try { + canBus.moduleStop(MId.FeedingModInfeedM); + } catch (AppException ignored) { + } + try { + canBus.moduleStop(MId.FeedingModXM); + } catch (AppException ignored) { + } + try { + canBus.moduleStop(MId.FeedingModOutfeedM); + } catch (AppException ignored) { + } + //摇匀模组初始化 + try { + canBus.moduleStop(MId.ShakeModClampingM); + } catch (AppException ignored) { + } + try { + canBus.moduleStop(MId.ShakeModGripperZM); + } catch (AppException ignored) { + } + try { + canBus.moduleStop(MId.ShakeModShakeM); + } catch (AppException ignored) { + } + try { + canBus.moduleStop(MId.ShakeModGripperYSV); + } catch (AppException ignored) { + } + try { + canBus.moduleStop(MId.ShakeModGripperSV); + } catch (AppException ignored) { + } + try { + canBus.moduleStop(MId.ShakeModTubeScanerClampingSV); + } catch (AppException ignored) { + } + try { + canBus.moduleStop(MId.ShakeModTubeScanerRotateSV); + } catch (AppException ignored) { + } + //板夹仓初始化 + try { + canBus.moduleStop(MId.PlatesBoxYM); + } catch (AppException ignored) { + } + try { + canBus.moduleStop(MId.PlatesBoxPusherM); + } catch (AppException ignored) { + } + //光学模组初始化 + try { + canBus.moduleStop(MId.OptModPullM); + } catch (AppException ignored) { + } + try { + canBus.moduleStop(MId.OptModScannerM); + } catch (AppException ignored) { + } + //HBot初始化 + try { + canBus.moduleStop(MId.HbotM); + } catch (AppException ignored) { + } + //转盘归零 + try { + canBus.moduleStop(MId.IncubatorRotateCtrlM); + } catch (AppException ignored) { + } + + for (var motorId : StepMotorMId.values()) { + try { + stepMotorCtrlDriver.stepMotorEnable(motorId, 0); + } catch (AppException ignored) { + } + } + + for (var miniServoId : MiniServoMId.values()) { + try { + miniServoDriver.miniServoEnable(miniServoId, 0); + } catch (AppException ignored) { + } + } + + hbotDriver.enable(0); + pipetteCtrlDriver.zMotorEnable(0); + } + + + public void stopHeating() throws AppException { + canBus.moduleStop(MId.IncubatorTCM); + canBus.moduleStop(MId.PlatesBoxTCM); + } + + public void enableAllMotor() throws AppException { + try { + for (StepMotorMId stepMotorMId : StepMotorMId.values()) + stepMotorCtrlDriver.stepMotorEnable(stepMotorMId, 1); + + + for (MiniServoMId miniServoMId : MiniServoMId.values()) + miniServoDriver.miniServoEnable(miniServoMId, 1); + + hbotDriver.enable(1); + pipetteCtrlDriver.zMotorEnable(1); + } catch (AppException e) { + forceDisableAllMotor(); + throw e; + } + + } + + +} diff --git a/src/main/java/a8k/app/hardware/driver/OptModuleDriver.java b/src/main/java/a8k/app/hardware/driver/OptModuleDriver.java index 46c2c97..0da6af8 100644 --- a/src/main/java/a8k/app/hardware/driver/OptModuleDriver.java +++ b/src/main/java/a8k/app/hardware/driver/OptModuleDriver.java @@ -2,7 +2,7 @@ package a8k.app.hardware.driver; import a8k.OS; import a8k.app.factory.A8kPacketFactory; -import a8k.app.hardware.basedriver.A8kCanBusService; +import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.hardware.type.a8kcanprotocol.A8kEcode; import a8k.app.hardware.type.a8kcanprotocol.CmdId; import a8k.app.hardware.type.a8kcanprotocol.MId; diff --git a/src/main/java/a8k/app/hardware/driver/OutputIOCtrlDriver.java b/src/main/java/a8k/app/hardware/driver/OutputIOCtrlDriver.java index 41a1a05..934c1c9 100644 --- a/src/main/java/a8k/app/hardware/driver/OutputIOCtrlDriver.java +++ b/src/main/java/a8k/app/hardware/driver/OutputIOCtrlDriver.java @@ -2,7 +2,7 @@ package a8k.app.hardware.driver; import a8k.app.a8ktype.error.AECodeError; import a8k.app.a8ktype.exception.AppException; -import a8k.app.hardware.basedriver.A8kCanBusService; +import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.hardware.type.a8kcanprotocol.CmdId; import a8k.app.hardware.type.a8kcanprotocol.ModuleType; import a8k.app.hardware.type.a8kcanprotocol.OutputIOId; diff --git a/src/main/java/a8k/app/hardware/driver/PipetteCtrlDriver.java b/src/main/java/a8k/app/hardware/driver/PipetteCtrlDriver.java index 88463db..d6d1c28 100644 --- a/src/main/java/a8k/app/hardware/driver/PipetteCtrlDriver.java +++ b/src/main/java/a8k/app/hardware/driver/PipetteCtrlDriver.java @@ -1,8 +1,7 @@ package a8k.app.hardware.driver; import a8k.extui.mgr.ExtApiPageMgr; -import a8k.extui.type.ExtUIPageCfg; -import a8k.app.hardware.basedriver.A8kCanBusService; +import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.hardware.type.LldType; import a8k.app.hardware.type.a8kcanprotocol.CmdId; import a8k.app.hardware.type.a8kcanprotocol.MId; @@ -11,7 +10,6 @@ import a8k.app.hardware.type.regindex.RegIndex; import a8k.app.a8ktype.exception.AppException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; diff --git a/src/main/java/a8k/app/hardware/driver/StepMotorCtrlDriver.java b/src/main/java/a8k/app/hardware/driver/StepMotorCtrlDriver.java index 05a6907..f531f06 100644 --- a/src/main/java/a8k/app/hardware/driver/StepMotorCtrlDriver.java +++ b/src/main/java/a8k/app/hardware/driver/StepMotorCtrlDriver.java @@ -1,7 +1,7 @@ package a8k.app.hardware.driver; import a8k.app.constant.ActionOvertimeConstant; -import a8k.app.hardware.basedriver.A8kCanBusService; +import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.hardware.type.a8kcanprotocol.A8kPacket; import a8k.app.hardware.type.a8kcanprotocol.CmdId; import a8k.app.hardware.type.regindex.RegIndex; diff --git a/src/main/java/a8k/app/hardware/driver/TemperatureControlDriver.java b/src/main/java/a8k/app/hardware/driver/TemperatureControlDriver.java index 01e38c5..d306fdf 100644 --- a/src/main/java/a8k/app/hardware/driver/TemperatureControlDriver.java +++ b/src/main/java/a8k/app/hardware/driver/TemperatureControlDriver.java @@ -1,6 +1,6 @@ package a8k.app.hardware.driver; -import a8k.app.hardware.basedriver.A8kCanBusService; +import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.hardware.type.a8kcanprotocol.CmdId; import a8k.app.hardware.driver.type.TemperatureControlerMid; import a8k.app.hardware.driver.type.TemperatureControlerRegIndex; diff --git a/src/main/java/a8k/app/hardware/extdriver/ModuleEnableCtrlDriver.java b/src/main/java/a8k/app/hardware/extdriver/ModuleEnableCtrlDriver.java deleted file mode 100644 index 718ce47..0000000 --- a/src/main/java/a8k/app/hardware/extdriver/ModuleEnableCtrlDriver.java +++ /dev/null @@ -1,174 +0,0 @@ -package a8k.app.hardware.extdriver; - -import a8k.app.hardware.basedriver.A8kCanBusService; -import a8k.app.hardware.driver.HbotDriver; -import a8k.app.hardware.driver.MiniServoDriver; -import a8k.app.hardware.driver.PipetteCtrlDriver; -import a8k.app.hardware.driver.StepMotorCtrlDriver; -import a8k.app.hardware.driver.type.MiniServoMId; -import a8k.app.hardware.driver.type.StepMotorMId; -import a8k.app.a8ktype.exception.AppException; -import a8k.app.hardware.type.a8kcanprotocol.MId; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -@Component -@Slf4j -@RequiredArgsConstructor -public class ModuleEnableCtrlDriver { - - private final HbotDriver hbotDriver; - private final PipetteCtrlDriver pipetteCtrlDriver; - private final StepMotorCtrlDriver stepMotorCtrlDriver; - private final MiniServoDriver miniServoDriver; - private final A8kCanBusService canBus; - - public void forceDisableAllMotor() { - // StepMotorMId.values() - for (StepMotorMId stepMotorMId : StepMotorMId.values()) { - try { - stepMotorCtrlDriver.stepMotorEnable(stepMotorMId, 0); - } catch (AppException e) { - log.info("disableStepMotor: {} failed, {}", stepMotorMId, e.getMessage()); - } - } - - for (MiniServoMId miniServoMId : MiniServoMId.values()) { - try { - miniServoDriver.miniServoEnable(miniServoMId, 0); - } catch (AppException e) { - log.info("disableMiniServo: {} failed, {}", miniServoMId, e.getMessage()); - } - } - - try { - hbotDriver.enable(0); - } catch (AppException e) { - log.info("hbotDriver disable failed, {}", e.getMessage()); - } - - try { - pipetteCtrlDriver.zMotorEnable(0); - } catch (AppException e) { - log.info("pipetteCtrlDriver: zMotorEnable failed, {}", e.getMessage()); - } - } - - public void stopAllMotor() throws AppException { - //StopAllMotor - //进出料初始化 - try { - canBus.moduleStop(MId.FeedingModInfeedM); - } catch (AppException ignored) { - } - try { - canBus.moduleStop(MId.FeedingModXM); - } catch (AppException ignored) { - } - try { - canBus.moduleStop(MId.FeedingModOutfeedM); - } catch (AppException ignored) { - } - //摇匀模组初始化 - try { - canBus.moduleStop(MId.ShakeModClampingM); - } catch (AppException ignored) { - } - try { - canBus.moduleStop(MId.ShakeModGripperZM); - } catch (AppException ignored) { - } - try { - canBus.moduleStop(MId.ShakeModShakeM); - } catch (AppException ignored) { - } - try { - canBus.moduleStop(MId.ShakeModGripperYSV); - } catch (AppException ignored) { - } - try { - canBus.moduleStop(MId.ShakeModGripperSV); - } catch (AppException ignored) { - } - try { - canBus.moduleStop(MId.ShakeModTubeScanerClampingSV); - } catch (AppException ignored) { - } - try { - canBus.moduleStop(MId.ShakeModTubeScanerRotateSV); - } catch (AppException ignored) { - } - //板夹仓初始化 - try { - canBus.moduleStop(MId.PlatesBoxYM); - } catch (AppException ignored) { - } - try { - canBus.moduleStop(MId.PlatesBoxPusherM); - } catch (AppException ignored) { - } - //光学模组初始化 - try { - canBus.moduleStop(MId.OptModPullM); - } catch (AppException ignored) { - } - try { - canBus.moduleStop(MId.OptModScannerM); - } catch (AppException ignored) { - } - //HBot初始化 - try { - canBus.moduleStop(MId.HbotM); - } catch (AppException ignored) { - } - //转盘归零 - try { - canBus.moduleStop(MId.IncubatorRotateCtrlM); - } catch (AppException ignored) { - } - - for (var motorId : StepMotorMId.values()) { - try { - stepMotorCtrlDriver.stepMotorEnable(motorId, 0); - } catch (AppException ignored) { - } - } - - for (var miniServoId : MiniServoMId.values()) { - try { - miniServoDriver.miniServoEnable(miniServoId, 0); - } catch (AppException ignored) { - } - } - - hbotDriver.enable(0); - pipetteCtrlDriver.zMotorEnable(0); - } - - - public void stopHeating() throws AppException { - canBus.moduleStop(MId.IncubatorTCM); - canBus.moduleStop(MId.PlatesBoxTCM); - } - - public void enableAllMotor() throws AppException { - try { - for (StepMotorMId stepMotorMId : StepMotorMId.values()) - stepMotorCtrlDriver.stepMotorEnable(stepMotorMId, 1); - - - for (MiniServoMId miniServoMId : MiniServoMId.values()) - miniServoDriver.miniServoEnable(miniServoMId, 1); - - hbotDriver.enable(1); - pipetteCtrlDriver.zMotorEnable(1); - } catch (AppException e) { - forceDisableAllMotor(); - throw e; - } - - } - - -} diff --git a/src/main/java/a8k/app/hardware/utils/OptGainConvert.java b/src/main/java/a8k/app/hardware/utils/OptGainConvert.java new file mode 100644 index 0000000..0aa7c61 --- /dev/null +++ b/src/main/java/a8k/app/hardware/utils/OptGainConvert.java @@ -0,0 +1,75 @@ +package a8k.app.hardware.utils; + +import a8k.app.dao.type.a8kidcard.zenum.A8kOptType; + +public class OptGainConvert { + + static public class FOptGainConvert { + public double scanerToRealGain(int gain) { + double scanGain = 0; + scanGain = (((100. / 256.) * (double) gain) + 0.125) / 2.15 + 1.; //和硬件电路有关 + return scanGain; + } + + public int scanerToRawGain(double scanGain) { + int scan_gain_raw = 0; + scan_gain_raw = (int) (((scanGain - 1.0) * 2.15 - 0.125) * 255. / 100. + 0.5); //和硬件电路有关 + if (scan_gain_raw < 1) + scan_gain_raw = 1; + if (scan_gain_raw > 255) + scan_gain_raw = 255; + return scan_gain_raw; + } + + + } + + static public class TOptGainConvert { + public int scanerToRawGain(double scanGain) { + // opamp_gain = (((100.0 * (float) scan_gain_raw) / 255) + 2.4) / 4.7; + int scan_gain_raw = 0; + scan_gain_raw = (int) ((scanGain * 4.7 - 2.4) * 256. / 100. + 0.5); //和硬件电路有关 + if (scan_gain_raw < 1) + scan_gain_raw = 1; + if (scan_gain_raw > 255) + scan_gain_raw = 255; + return scan_gain_raw; + } + + public double scanerToRealGain(int gain) { + double scanGain = 0; + scanGain = (((100.0 * (double) gain) / 256) + 2.4) / 4.7; //和硬件电路有关 + return scanGain; + } + + + } + + + public static double scanerToRealGain(A8kOptType type, int gain) { + if (type == A8kOptType.FOPT) { + return new FOptGainConvert().scanerToRealGain(gain); + } else if (type == A8kOptType.TOPT) { + return new TOptGainConvert().scanerToRealGain(gain); + } + return 0; + } + + public static int scanerToRawGain(A8kOptType type, double scanGain) { + if (type == A8kOptType.FOPT) { + return new FOptGainConvert().scanerToRawGain(scanGain); + } else if (type == A8kOptType.TOPT) { + return new TOptGainConvert().scanerToRawGain(scanGain); + } + return 0; + } + + public static void main(String[] args) { + TOptGainConvert tgc = new TOptGainConvert(); + System.out.printf("t gain range %f->%f%n", tgc.scanerToRealGain(0), tgc.scanerToRealGain(255)); + + FOptGainConvert fgc = new FOptGainConvert(); + System.out.printf("f gain range %f->%f%n", fgc.scanerToRealGain(0), fgc.scanerToRealGain(255)); + + } +} diff --git a/src/main/java/a8k/app/service/appsetup/A8kSubModuleRegInitService.java b/src/main/java/a8k/app/service/appsetup/A8kSubModuleRegInitService.java index 8c31d6b..f48f293 100644 --- a/src/main/java/a8k/app/service/appsetup/A8kSubModuleRegInitService.java +++ b/src/main/java/a8k/app/service/appsetup/A8kSubModuleRegInitService.java @@ -5,17 +5,15 @@ import a8k.app.a8ktype.appevent.A8kCanBusOnConnectEvent; import a8k.app.a8ktype.appevent.AppEvent; import a8k.app.a8ktype.exception.AppException; import a8k.app.config.A8kSubModuleInitRegConfig; -import a8k.app.dao.SubModuleRegInitialValueDao; import a8k.app.dao.type.SubModuleRegInitialValue; -import a8k.app.hardware.basedriver.A8kCanBusService; -import a8k.app.hardware.extdriver.ModuleEnableCtrlDriver; +import a8k.app.hardware.channel.A8kCanBusService; +import a8k.app.hardware.driver.ModuleEnableCtrlDriver; import a8k.app.hardware.type.a8kcanprotocol.MId; import a8k.app.hardware.type.a8kcanprotocol.ModuleType; import a8k.app.hardware.type.regindex.RegIndex; import a8k.app.service.bases.AppEventBusService; import a8k.app.service.data.SubModuleRegInitialValueMgrService; import a8k.app.service.statemgr.GStateMgrService; -import a8k.app.utils.ZList; import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/a8k/app/service/background/SensorDataUpdateService.java b/src/main/java/a8k/app/service/background/SensorDataUpdateService.java index b82bccd..472ee21 100644 --- a/src/main/java/a8k/app/service/background/SensorDataUpdateService.java +++ b/src/main/java/a8k/app/service/background/SensorDataUpdateService.java @@ -3,7 +3,7 @@ package a8k.app.service.background; import a8k.OS; import a8k.app.a8ktype.DeviceRunMode; import a8k.app.a8ktype.error.AppError; -import a8k.app.hardware.basedriver.A8kCanBusService; +import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.service.bases.AppEventBusService; import a8k.app.service.statemgr.GStateMgrService; import a8k.app.service.statemgr.OptScanModuleStateMgrService; @@ -11,7 +11,6 @@ import a8k.app.a8ktype.state.enumtype.OptScanModuleState; import a8k.app.hardware.driver.TemperatureControlDriver; import a8k.app.a8ktype.exception.AppException; import jakarta.annotation.PostConstruct; -import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/src/main/java/a8k/app/service/data/ProjIdCardInfoMgrService.java b/src/main/java/a8k/app/service/data/ProjIdCardInfoMgrService.java index 485435f..d33fcca 100644 --- a/src/main/java/a8k/app/service/data/ProjIdCardInfoMgrService.java +++ b/src/main/java/a8k/app/service/data/ProjIdCardInfoMgrService.java @@ -15,7 +15,7 @@ import a8k.app.service.lowerctrl.ProjIDCardCtrlAndMonitorService; import a8k.app.service.statemgr.GStateMgrService; import a8k.app.dao.type.A8kProjInfoCardBreif; import a8k.app.dao.type.ProjExtInfoCard; -import a8k.app.a8ktype.db.CommonPage; +import a8k.app.dao.type.CommonPage; import a8k.app.utils.ProjBuildinInfo; import a8k.app.utils.ZAppChecker; import a8k.app.utils.DoubleUtils; diff --git a/src/main/java/a8k/app/service/data/ReactionRecordMgrService.java b/src/main/java/a8k/app/service/data/ReactionRecordMgrService.java index ff4e4de..0b52854 100644 --- a/src/main/java/a8k/app/service/data/ReactionRecordMgrService.java +++ b/src/main/java/a8k/app/service/data/ReactionRecordMgrService.java @@ -7,7 +7,7 @@ import a8k.app.dao.type.ReactionReport; import a8k.app.service.statemgr.GStateMgrService; import a8k.app.a8ktype.state.ProjectTaskContext; import a8k.app.a8ktype.type.ReactionResult; -import a8k.app.a8ktype.db.CommonPage; +import a8k.app.dao.type.CommonPage; import a8k.app.utils.ProjInfo; import a8k.app.utils.ZJsonHelper; import jakarta.annotation.PostConstruct; diff --git a/src/main/java/a8k/app/service/data/SubModuleRegInitialValueMgrService.java b/src/main/java/a8k/app/service/data/SubModuleRegInitialValueMgrService.java index dc6a1c5..3bfbe83 100644 --- a/src/main/java/a8k/app/service/data/SubModuleRegInitialValueMgrService.java +++ b/src/main/java/a8k/app/service/data/SubModuleRegInitialValueMgrService.java @@ -1,21 +1,14 @@ package a8k.app.service.data; -import a8k.OS; -import a8k.app.a8ktype.appevent.A8kCanBusOnConnectEvent; -import a8k.app.a8ktype.appevent.AppEvent; import a8k.app.a8ktype.exception.AppException; import a8k.app.config.A8kSubModuleInitRegConfig; import a8k.app.dao.SubModuleRegInitialValueDao; import a8k.app.dao.type.SubModuleRegInitialValue; -import a8k.app.hardware.basedriver.A8kCanBusService; -import a8k.app.hardware.extdriver.ModuleEnableCtrlDriver; +import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.hardware.type.a8kcanprotocol.MId; import a8k.app.hardware.type.a8kcanprotocol.ModuleType; import a8k.app.hardware.type.regindex.RegIndex; -import a8k.app.service.bases.AppEventBusService; -import a8k.app.service.statemgr.GStateMgrService; import a8k.app.utils.ZList; -import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/src/main/java/a8k/app/service/lis/LISService.java b/src/main/java/a8k/app/service/lis/LISService.java deleted file mode 100644 index 2c8aece..0000000 --- a/src/main/java/a8k/app/service/lis/LISService.java +++ /dev/null @@ -1,11 +0,0 @@ -package a8k.app.service.lis; - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -@Component -@Slf4j -@RequiredArgsConstructor -public class LISService { -} diff --git a/src/main/java/a8k/app/service/lowerctrl/DeviceMoveToZeroCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/DeviceMoveToZeroCtrlService.java index 99c64bf..1d54df8 100644 --- a/src/main/java/a8k/app/service/lowerctrl/DeviceMoveToZeroCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/DeviceMoveToZeroCtrlService.java @@ -4,9 +4,9 @@ import a8k.app.a8ktype.ui.ZAppPromopt; import a8k.app.a8ktype.ui.ZAppPromoptFormsItem; import a8k.app.a8ktype.ui.MessageLevel; import a8k.app.factory.ZAppPromoptFactory; -import a8k.app.hardware.basedriver.A8kCanBusService; +import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.hardware.driver.InputDetectDriver; -import a8k.app.hardware.extdriver.ModuleEnableCtrlDriver; +import a8k.app.hardware.driver.ModuleEnableCtrlDriver; import a8k.app.hardware.type.a8kcanprotocol.A8kEcode; import a8k.app.hardware.type.a8kcanprotocol.InputIOId; import a8k.app.hardware.driver.MiniServoDriver; diff --git a/src/main/java/a8k/app/service/lowerctrl/HbotMoveCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/HbotMoveCtrlService.java index a5c4f55..9aebc95 100644 --- a/src/main/java/a8k/app/service/lowerctrl/HbotMoveCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/HbotMoveCtrlService.java @@ -7,7 +7,7 @@ import a8k.app.hardware.driver.type.PipetteRegIndex; import a8k.app.hardware.driver.HbotDriver; import a8k.app.hardware.driver.PipetteCtrlDriver; import a8k.app.a8ktype.exception.AppException; -import a8k.app.hardware.basedriver.A8kCanBusService; +import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.hardware.type.a8kcanprotocol.A8kEcode; import a8k.app.hardware.type.a8kcanprotocol.InputIOId; import a8k.app.hardware.type.a8kcanprotocol.MId; diff --git a/src/main/java/a8k/app/service/lowerctrl/OptScanModuleCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/OptScanModuleCtrlService.java index 7af7f2c..709a0a4 100644 --- a/src/main/java/a8k/app/service/lowerctrl/OptScanModuleCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/OptScanModuleCtrlService.java @@ -18,7 +18,7 @@ import a8k.app.a8ktype.device.IncubatorPos; import a8k.app.a8ktype.opttype.OptScanDirection; import a8k.app.a8ktype.exception.AppException; import a8k.app.utils.ProjBuildinInfo; -import a8k.app.utils.opt_gain_convert.OptGainConvert; +import a8k.app.hardware.utils.OptGainConvert; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/src/main/java/a8k/app/service/lowerctrl/ProjIDCardCtrlAndMonitorService.java b/src/main/java/a8k/app/service/lowerctrl/ProjIDCardCtrlAndMonitorService.java index 75d40e0..4192ddc 100644 --- a/src/main/java/a8k/app/service/lowerctrl/ProjIDCardCtrlAndMonitorService.java +++ b/src/main/java/a8k/app/service/lowerctrl/ProjIDCardCtrlAndMonitorService.java @@ -9,7 +9,7 @@ import a8k.app.hardware.type.regindex.RegIndex; import a8k.app.dao.type.ProjExtInfoCard; import a8k.app.a8ktype.exception.AppException; import a8k.app.service.bases.AppEventBusService; -import a8k.app.hardware.basedriver.A8kCanBusService; +import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.hardware.type.a8kcanprotocol.*; import a8k.app.a8kproj.A8kIdCardDataParseService; import a8k.app.utils.ProjBuildinInfo; diff --git a/src/main/java/a8k/app/service/lowerctrl/TubeFeedingCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/TubeFeedingCtrlService.java index e5dd142..9982006 100644 --- a/src/main/java/a8k/app/service/lowerctrl/TubeFeedingCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/TubeFeedingCtrlService.java @@ -15,14 +15,12 @@ import a8k.app.a8ktype.type.TubeHolderScanResult; import a8k.app.a8ktype.type.TubesScanResult; import a8k.app.a8ktype.exception.AppException; import a8k.app.a8ktype.type.TargetPosMeasureDirection; -import a8k.app.hardware.basedriver.A8kCanBusService; +import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.hardware.type.a8kcanprotocol.A8kEcode; import a8k.app.hardware.type.a8kcanprotocol.InputIOId; import a8k.app.hardware.type.a8kcanprotocol.MId; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; @Component diff --git a/src/main/java/a8k/app/service/lowerctrl/TubeFeedingExCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/TubeFeedingExCtrlService.java index 0ef2b66..0da4cce 100644 --- a/src/main/java/a8k/app/service/lowerctrl/TubeFeedingExCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/TubeFeedingExCtrlService.java @@ -1,7 +1,7 @@ package a8k.app.service.lowerctrl; import a8k.app.constant.MiniServoConstant; -import a8k.app.hardware.basedriver.A8kCanBusService; +import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.constant.ActionOvertimeConstant; import a8k.app.hardware.type.a8kcanprotocol.CmdId; import a8k.app.hardware.type.a8kcanprotocol.MId; diff --git a/src/main/java/a8k/app/service/lowerctrl/TurnableMoveCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/TurnableMoveCtrlService.java index feb211b..b55bb20 100644 --- a/src/main/java/a8k/app/service/lowerctrl/TurnableMoveCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/TurnableMoveCtrlService.java @@ -6,7 +6,7 @@ import a8k.app.hardware.driver.type.StepMotorMId; import a8k.app.service.param.pos.TurntablePosParamMgr; import a8k.app.a8ktype.device.IncubatorPos; import a8k.app.a8ktype.exception.AppException; -import a8k.app.hardware.basedriver.A8kCanBusService; +import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.hardware.type.a8kcanprotocol.A8kEcode; import a8k.app.hardware.type.a8kcanprotocol.InputIOId; diff --git a/src/main/java/a8k/app/service/mainctrl/AppConsumablesScanService.java b/src/main/java/a8k/app/service/mainctrl/AppConsumablesScanService.java index 71a7cc5..e86c4a2 100644 --- a/src/main/java/a8k/app/service/mainctrl/AppConsumablesScanService.java +++ b/src/main/java/a8k/app/service/mainctrl/AppConsumablesScanService.java @@ -268,28 +268,6 @@ public class AppConsumablesScanService { return new ConsumablesScanResultPacket(scanReport, scanRawResults); } -// public ConsumablesOneChannelScanResultPacket scanOneGroupConsumables(ConsumableGroup group) throws AppException { -// if (!gstate.isDeviceInited()) { -// throw new AppException(A8kEcode.APPE_DEVICE_NOT_INITED); -// } -// -// Integer chNum = group.off; -// ConsumableOneChRawResult scanResult; -// -// scanResult = scanCtrlService.doScanOneCh(chNum); -// -// var scanReport = parseScanResult(chNum, scanResult); -// if (scanReport.state != ConsumablesScanReportErrorType.PASS) { -// loadingConsumables(chNum, scanReport); -// } -// -// ConsumablesOneChannelScanResultPacket ret = new ConsumablesOneChannelScanResultPacket(); -// ret.scanRawResult = scanResult; -// ret.scanReport = scanReport; -// ret.consumableState = consumablesMgrService.getState(); -// -// return ret; -// } // For Test Only public void loadingConsumablesDirectly(ConsumablesScanReport result) { diff --git a/src/main/java/a8k/app/service/mainctrl/mainflowctrl/MainFlowCtrlScheduler.java b/src/main/java/a8k/app/service/mainctrl/mainflowctrl/MainFlowCtrlScheduler.java index 9c549a6..2a8d1cf 100644 --- a/src/main/java/a8k/app/service/mainctrl/mainflowctrl/MainFlowCtrlScheduler.java +++ b/src/main/java/a8k/app/service/mainctrl/mainflowctrl/MainFlowCtrlScheduler.java @@ -11,7 +11,7 @@ import a8k.app.a8ktype.error.AppError; import a8k.app.a8ktype.exception.AppException; import a8k.app.a8ktype.state.enumtype.A8kWorkState; import a8k.app.factory.ZAppPromoptFactory; -import a8k.app.hardware.extdriver.ModuleEnableCtrlDriver; +import a8k.app.hardware.driver.ModuleEnableCtrlDriver; import a8k.app.hardware.type.a8kcanprotocol.A8kEcode; import a8k.app.service.bases.AppEventBusService; import a8k.app.service.bases.UIMessage; diff --git a/src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/AC30ScanTubeHolderTask.java b/src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/AC30ScanTubeHolderTask.java index 55f4a6e..55d08c0 100644 --- a/src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/AC30ScanTubeHolderTask.java +++ b/src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/AC30ScanTubeHolderTask.java @@ -1,7 +1,7 @@ package a8k.app.service.mainctrl.mainflowctrl.action; import a8k.app.a8ktype.DeviceRunMode; -import a8k.app.hardware.basedriver.A8kCanBusService; +import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.hardware.driver.InputDetectDriver; import a8k.app.hardware.type.a8kcanprotocol.A8kEcode; import a8k.app.hardware.type.a8kcanprotocol.InputIOId; diff --git a/src/main/java/a8k/app/service/mainctrl/mainflowctrl/base/A8kPublicAreaResourcePacket.java b/src/main/java/a8k/app/service/mainctrl/mainflowctrl/base/A8kPublicAreaResourcePacket.java deleted file mode 100644 index 75b0ad7..0000000 --- a/src/main/java/a8k/app/service/mainctrl/mainflowctrl/base/A8kPublicAreaResourcePacket.java +++ /dev/null @@ -1,17 +0,0 @@ -package a8k.app.service.mainctrl.mainflowctrl.base; - -import java.util.List; - -public class A8kPublicAreaResourcePacket implements AutoCloseable { - List areas; - - public A8kPublicAreaResourcePacket(List areas) { - this.areas = areas; - } - - @Override public void close() { - for (PublicAreaResource area : areas) { - area.close(); - } - } -} diff --git a/src/main/java/a8k/app/service/mainctrl/mainflowctrl/base/ActionDoUtils.java b/src/main/java/a8k/app/service/mainctrl/mainflowctrl/base/ActionDoUtils.java deleted file mode 100644 index 887e626..0000000 --- a/src/main/java/a8k/app/service/mainctrl/mainflowctrl/base/ActionDoUtils.java +++ /dev/null @@ -1,23 +0,0 @@ -package a8k.app.service.mainctrl.mainflowctrl.base; - -import a8k.app.a8ktype.error.AppError; -import a8k.app.a8ktype.exception.AppException; -import lombok.extern.slf4j.Slf4j; - -@Slf4j -public class ActionDoUtils { - @FunctionalInterface - public interface Function { - void doFunction() throws AppException; - } - - public static AppError doAction(Function function) { - try { - function.doFunction(); - } catch (AppException e) { - log.error("doAction error: {}", e.getError(), e); - return e.getError(); - } - return null; - } -} diff --git a/src/main/java/a8k/app/utils/ZAppChecker.java b/src/main/java/a8k/app/utils/ZAppChecker.java index f50ae65..ced0700 100644 --- a/src/main/java/a8k/app/utils/ZAppChecker.java +++ b/src/main/java/a8k/app/utils/ZAppChecker.java @@ -1,12 +1,8 @@ package a8k.app.utils; -import a8k.app.a8ktype.DeviceRunMode; -import a8k.app.factory.AppExceptionFactory; import a8k.app.hardware.type.a8kcanprotocol.A8kEcode; -import a8k.app.service.statemgr.GStateMgrService; import a8k.app.a8ktype.error.AppError; import a8k.app.a8ktype.exception.AppException; -import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -15,12 +11,6 @@ import java.util.List; @Component @Slf4j public class ZAppChecker { - @Resource - AppExceptionFactory ebuilder; - - @Resource - GStateMgrService gstate; - static public void check(Boolean conditon, A8kEcode ecode, String fmt, Object... args) throws AppException { if (!conditon) { throw new AppException(new AppError(ecode, fmt, args)); diff --git a/src/main/java/a8k/app/utils/ZSqlite.java b/src/main/java/a8k/app/utils/ZSqlite.java index 8a7a18c..6789356 100644 --- a/src/main/java/a8k/app/utils/ZSqlite.java +++ b/src/main/java/a8k/app/utils/ZSqlite.java @@ -1,7 +1,7 @@ package a8k.app.utils; import a8k.app.constant.FilePathConstant; -import a8k.app.a8ktype.db.CommonPage; +import a8k.app.dao.type.CommonPage; import jakarta.annotation.Nullable; import lombok.SneakyThrows; import org.slf4j.Logger; diff --git a/src/main/java/a8k/app/utils/opt_gain_convert/FOptGainConvert.java b/src/main/java/a8k/app/utils/opt_gain_convert/FOptGainConvert.java deleted file mode 100644 index 4d1a697..0000000 --- a/src/main/java/a8k/app/utils/opt_gain_convert/FOptGainConvert.java +++ /dev/null @@ -1,21 +0,0 @@ -package a8k.app.utils.opt_gain_convert; - -public class FOptGainConvert { - public double scanerToRealGain(int gain) { - double scanGain = 0; - scanGain = (((100. / 256.) * (double) gain) + 0.125) / 2.15 + 1.; //和硬件电路有关 - return scanGain; - } - - public int scanerToRawGain(double scanGain) { - int scan_gain_raw = 0; - scan_gain_raw = (int) (((scanGain - 1.0) * 2.15 - 0.125) * 255. / 100. + 0.5); //和硬件电路有关 - if (scan_gain_raw < 1) - scan_gain_raw = 1; - if (scan_gain_raw > 255) - scan_gain_raw = 255; - return scan_gain_raw; - } - - -} diff --git a/src/main/java/a8k/app/utils/opt_gain_convert/OptGainConvert.java b/src/main/java/a8k/app/utils/opt_gain_convert/OptGainConvert.java deleted file mode 100644 index 1316ae2..0000000 --- a/src/main/java/a8k/app/utils/opt_gain_convert/OptGainConvert.java +++ /dev/null @@ -1,32 +0,0 @@ -package a8k.app.utils.opt_gain_convert; - -import a8k.app.dao.type.a8kidcard.zenum.A8kOptType; - -public class OptGainConvert { - public static double scanerToRealGain(A8kOptType type, int gain) { - if (type == A8kOptType.FOPT) { - return new FOptGainConvert().scanerToRealGain(gain); - } else if (type == A8kOptType.TOPT) { - return new TOptGainConvert().scanerToRealGain(gain); - } - return 0; - } - - public static int scanerToRawGain(A8kOptType type, double scanGain) { - if (type == A8kOptType.FOPT) { - return new FOptGainConvert().scanerToRawGain(scanGain); - } else if (type == A8kOptType.TOPT) { - return new TOptGainConvert().scanerToRawGain(scanGain); - } - return 0; - } - - public static void main(String[] args) { - TOptGainConvert tgc = new TOptGainConvert(); - System.out.printf("t gain range %f->%f%n", tgc.scanerToRealGain(0), tgc.scanerToRealGain(255)); - - FOptGainConvert fgc = new FOptGainConvert(); - System.out.printf("f gain range %f->%f%n", fgc.scanerToRealGain(0), fgc.scanerToRealGain(255)); - - } -} diff --git a/src/main/java/a8k/app/utils/opt_gain_convert/TOptGainConvert.java b/src/main/java/a8k/app/utils/opt_gain_convert/TOptGainConvert.java deleted file mode 100644 index 98f0dd5..0000000 --- a/src/main/java/a8k/app/utils/opt_gain_convert/TOptGainConvert.java +++ /dev/null @@ -1,23 +0,0 @@ -package a8k.app.utils.opt_gain_convert; - -public class TOptGainConvert { - - public int scanerToRawGain(double scanGain) { - // opamp_gain = (((100.0 * (float) scan_gain_raw) / 255) + 2.4) / 4.7; - int scan_gain_raw = 0; - scan_gain_raw = (int) ((scanGain * 4.7 - 2.4) * 256. / 100. + 0.5); //和硬件电路有关 - if (scan_gain_raw < 1) - scan_gain_raw = 1; - if (scan_gain_raw > 255) - scan_gain_raw = 255; - return scan_gain_raw; - } - - public double scanerToRealGain(int gain) { - double scanGain = 0; - scanGain = (((100.0 * (double) gain) / 256) + 2.4) / 4.7; //和硬件电路有关 - return scanGain; - } - - -} diff --git a/src/main/java/a8k/extui/factory/FakeOptScanResultFactory.java b/src/main/java/a8k/extui/factory/FakeOptScanResultFactory.java new file mode 100644 index 0000000..3799af7 --- /dev/null +++ b/src/main/java/a8k/extui/factory/FakeOptScanResultFactory.java @@ -0,0 +1,60 @@ +package a8k.extui.factory; + +import a8k.app.a8kproj.optalgo.type.A8kOptPeak; +import a8k.app.a8kproj.optalgo.type.OptAlgoAnalysResult; +import a8k.app.a8kproj.optalgo.type.OptScanResult; +import a8k.app.a8kproj.optalgo.type.PeakFindState; +import a8k.app.a8ktype.opttype.PeakName; +import a8k.app.dao.type.OptRawScanData; +import a8k.app.dao.type.a8kidcard.zenum.A8kOptType; + +import java.util.Date; + +public class FakeOptScanResultFactory { + public static OptScanResult buildOptScanResult(A8kOptType optType) { + OptScanResult optScanResult = new OptScanResult(); + optScanResult.scanDate = new Date(); + + //OptRawScanData + var rawData = new OptRawScanData(); + rawData.optType = optType; + rawData.lasterGain = 1; + rawData.scanGain = 1; + rawData.rawData = new Integer[1200]; + if (optType.equals(A8kOptType.FOPT)) { + for (int i = 0; i < 1200; i++) { + rawData.rawData[i] = i; + } + } else { + for (int i = 0; i < 1200; i++) { + rawData.rawData[i] = 1200 - i; + } + } + + optScanResult.rawData = rawData; + + //OptAlgoAnalysResult + OptAlgoAnalysResult optAlgoAnalysResult = new OptAlgoAnalysResult(); + optAlgoAnalysResult.T4 = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.T4, 0, 1.1, 40, 0, 80); + optAlgoAnalysResult.R = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.R, 0, 1.1, 80, 40, 120); + optAlgoAnalysResult.H = null; + optAlgoAnalysResult.T = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.T, 0, 1.1, 160, 120, 200); + optAlgoAnalysResult.C = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.C, 0, 1.1, 200, 160, 240); + optAlgoAnalysResult.pdR = 1.1; + optAlgoAnalysResult.pdAR = 1.2; + optAlgoAnalysResult.pdATR = 1.3; + optAlgoAnalysResult.pdRFR = 1.4; + optAlgoAnalysResult.pdT4R = 1.5; + optAlgoAnalysResult.pdT4T3R = 1.6; + optAlgoAnalysResult.resultData = new double[250]; + for (int i = 0; i < 250; i++) { + optAlgoAnalysResult.resultData[i] = optType.equals(A8kOptType.FOPT) ? i : 250 - i; + } + + + optScanResult.analysResult = optAlgoAnalysResult; + + //return + return optScanResult; + } +} diff --git a/src/main/java/a8k/extui/factory/ProjExtInfoCardFactory.java b/src/main/java/a8k/extui/factory/ProjExtInfoCardFactory.java new file mode 100644 index 0000000..998baf5 --- /dev/null +++ b/src/main/java/a8k/extui/factory/ProjExtInfoCardFactory.java @@ -0,0 +1,73 @@ +package a8k.extui.factory; + +import a8k.SpringBootBeanUtil; +import a8k.app.a8ktype.exception.AppException; +import a8k.app.dao.type.ProjExtInfoCard; +import a8k.app.dao.type.a8kidcard.A8kNormalFn; +import a8k.app.dao.type.a8kidcard.A8kOptFnFormula; +import a8k.app.dao.type.a8kidcard.A8kPiecewiseFn; +import a8k.app.dao.type.a8kidcard.A8kResultBuilderFn; +import a8k.app.dao.type.a8kidcard.zenum.A8kFnType; +import a8k.app.service.data.ProjInfoMgrService; +import a8k.app.utils.ProjBuildinInfo; + +import java.util.Date; + + +public class ProjExtInfoCardFactory { + + public static ProjExtInfoCard buildProjExtInfoCard(Integer projId, String lotId) throws AppException { + ProjInfoMgrService projInfoMgrService = SpringBootBeanUtil.getBean(ProjInfoMgrService.class); + + + ProjBuildinInfo projBuildinInfo = projInfoMgrService.getProjBuildInInfo(projId); + + if (lotId == null || lotId.isEmpty()) { + lotId = String.format("%s000000", projBuildinInfo.projShortName); + } + + ProjExtInfoCard projExtInfoCard = new ProjExtInfoCard(); + projExtInfoCard.id = 0; + projExtInfoCard.color = projBuildinInfo.color; + projExtInfoCard.projShortName = projBuildinInfo.projShortName; + projExtInfoCard.projName = projBuildinInfo.projName; + projExtInfoCard.lotId = lotId; + projExtInfoCard.expiryDate = new Date(System.currentTimeMillis() + 30L * 24 * 60 * 60 * 1000); + projExtInfoCard.projId = projId; + projExtInfoCard.palteCode = 0; + projExtInfoCard.updateChipVersion = 0; + projExtInfoCard.subProjNum = projBuildinInfo.subProjNum; + + if (projExtInfoCard.subProjNum >= 1) { + projExtInfoCard.projFnFormuals.add(buildOptFnA8kNormalFn()); + } + if (projExtInfoCard.subProjNum >= 2) { + projExtInfoCard.projFnFormuals.add(buildOptFnA8kNormalFn()); + } + if (projExtInfoCard.subProjNum >= 3) { + projExtInfoCard.projFnFormuals.add(buildOptFnA8kNormalFn()); + } + + return projExtInfoCard; + } + + static A8kOptFnFormula buildOptFnA8kNormalFn() { + A8kOptFnFormula var = new A8kOptFnFormula(); + var.fnType = A8kFnType.NormalFn; + var.serumNorFn = new A8kNormalFn(); + var.bloodNorFn = new A8kNormalFn(); + var.resultBuilderFn = new A8kResultBuilderFn(); + return var; + } + + public static A8kOptFnFormula buildOptFnA8kPiecewiseFn() { + A8kOptFnFormula var = new A8kOptFnFormula(); + var.fnType = A8kFnType.PiecewiseFn; + var.serumPiecewiseFn = new A8kPiecewiseFn(); + var.bloodPiecewiseFn = new A8kPiecewiseFn(); + var.resultBuilderFn = new A8kResultBuilderFn(); + return var; + } + + +} diff --git a/src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java b/src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java index 12940cb..61eac06 100644 --- a/src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java +++ b/src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java @@ -169,7 +169,7 @@ public class ExtApiPageGroupCfgMgr { new Menu(VirtualEventGeneratorPage.class, "虚拟事件生成"), new Menu(IDCardDataGeneratorPage.class, "ID卡数据生成器") )), - new Menu(UsrOperationSimulation.class, "用户行为模拟器"), + new Menu(UsrOperationSimulationPage.class, "用户行为模拟器"), new Menu(CodeGeneratorPage.class, "条码字符生成工具") ))); diff --git a/src/main/java/a8k/extui/oldpage/pos_calibration/PosMeasureUtilsPage.java b/src/main/java/a8k/extui/oldpage/pos_calibration/PosMeasureUtilsPage.java index 02a9a79..98dd30b 100644 --- a/src/main/java/a8k/extui/oldpage/pos_calibration/PosMeasureUtilsPage.java +++ b/src/main/java/a8k/extui/oldpage/pos_calibration/PosMeasureUtilsPage.java @@ -4,7 +4,7 @@ import a8k.extui.mgr.ExtApiPageMgr; import a8k.extui.type.ExtUIPageCfg; import a8k.app.hardware.driver.HbotDriver; import a8k.app.hardware.driver.PipetteCtrlDriver; -import a8k.app.hardware.extdriver.ModuleEnableCtrlDriver; +import a8k.app.hardware.driver.ModuleEnableCtrlDriver; import a8k.app.a8ktype.device.Pos2d; import a8k.app.a8ktype.exception.AppException; import jakarta.annotation.PostConstruct; diff --git a/src/main/java/a8k/extui/page/debug/P01ProjInfoDebugPage.java b/src/main/java/a8k/extui/page/debug/P01ProjInfoDebugPage.java index d01a980..7074fb8 100644 --- a/src/main/java/a8k/extui/page/debug/P01ProjInfoDebugPage.java +++ b/src/main/java/a8k/extui/page/debug/P01ProjInfoDebugPage.java @@ -3,7 +3,7 @@ package a8k.extui.page.debug; import a8k.app.a8ktype.exception.AppException; import a8k.app.dao.type.A8kProjInfoCardBreif; import a8k.app.dao.type.ProjExtInfoCard; -import a8k.app.factory.ProjExtInfoCardFactory; +import a8k.extui.factory.ProjExtInfoCardFactory; import a8k.app.service.data.ProjIdCardInfoMgrService; import a8k.app.service.data.ProjInfoMgrService; import a8k.app.service.statemgr.GStateMgrService; diff --git a/src/main/java/a8k/extui/page/extapp/OptModuleParamCalibration.java b/src/main/java/a8k/extui/page/extapp/OptModuleParamCalibration.java index 1b77f9f..527d54f 100644 --- a/src/main/java/a8k/extui/page/extapp/OptModuleParamCalibration.java +++ b/src/main/java/a8k/extui/page/extapp/OptModuleParamCalibration.java @@ -13,7 +13,7 @@ import a8k.app.service.param.optparam.OptModuleExtParamsMgr; import a8k.app.a8ktype.param.optpos.OptModuleExtParam; import a8k.app.dao.type.a8kidcard.zenum.A8kOptType; import a8k.app.a8ktype.exception.AppException; -import a8k.app.utils.opt_gain_convert.OptGainConvert; +import a8k.app.hardware.utils.OptGainConvert; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; import org.slf4j.Logger; diff --git a/src/main/java/a8k/extui/page/extapp/UsrOperationSimulation.java b/src/main/java/a8k/extui/page/extapp/UsrOperationSimulation.java deleted file mode 100644 index 5a76776..0000000 --- a/src/main/java/a8k/extui/page/extapp/UsrOperationSimulation.java +++ /dev/null @@ -1,117 +0,0 @@ -package a8k.extui.page.extapp; - -import a8k.app.a8ktype.device.A8kTubeHolderType; -import a8k.app.a8ktype.device.ConsumableGroup; -import a8k.app.a8ktype.exception.AppException; -import a8k.app.a8ktype.type.TubeHolderScanResult; -import a8k.app.a8ktype.type.TubesScanResult; -import a8k.app.dao.type.ProjExtInfoCard; -import a8k.app.factory.ProjExtInfoCardFactory; -import a8k.app.service.data.ProjIdCardInfoMgrService; -import a8k.app.service.data.ProjInfoMgrService; -import a8k.app.service.lowerctrl.ProjIDCardCtrlAndMonitorService; -import a8k.app.service.mainctrl.AppConsumablesScanService; -import a8k.app.service.statemgr.ConsumablesMgrService; -import a8k.app.service.statemgr.GStateMgrService; -import a8k.extui.mgr.ExtApiPageMgr; -import a8k.app.teststate.TestStateMgrService; -import jakarta.annotation.PostConstruct; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Component; - -@Component -public class UsrOperationSimulation { - @Resource - ConsumablesMgrService consumablesMgrService; - - @Resource - AppConsumablesScanService appConsumablesScanService; - - @Resource - ProjIdCardInfoMgrService projIdCardInfoMgrService; - - @Resource - GStateMgrService gstate; - - - @Resource - ProjInfoMgrService projInfoMgrService; - @Resource - ExtApiPageMgr extApiPageMgr; - - @Resource - TestStateMgrService testStateMgrService; - - - // - // 耗材模拟操作 - // - public void putInVirtualConsumable(ConsumableGroup group, String lotid) throws AppException { - gstate.checkIfIsInVirtualMode(); - testStateMgrService.putVirtualConsumable(group.off, lotid); - } - - public void takeAwayVirtualConsumable() throws AppException { - gstate.checkIfIsInVirtualMode(); - testStateMgrService.takeAwayVirtualConsumable(0); - testStateMgrService.takeAwayVirtualConsumable(1); - testStateMgrService.takeAwayVirtualConsumable(2); - testStateMgrService.takeAwayVirtualConsumable(3); - testStateMgrService.takeAwayVirtualConsumable(4); - testStateMgrService.takeAwayVirtualConsumable(5); - } - - // - // 样本模拟操作 - // - public void putInVirtualBloodTubeHolder() throws AppException { - gstate.checkIfIsInVirtualModeOrRunOnlyMode(); - - TubeHolderScanResult scanResult = new TubeHolderScanResult(); - scanResult.tubeHolderType = A8kTubeHolderType.BloodTube.scanCode; - scanResult.tube[0] = new TubesScanResult(true, true, ""); - scanResult.tube[1] = new TubesScanResult(true, true, ""); - scanResult.tube[2] = new TubesScanResult(true, true, ""); - scanResult.tube[3] = new TubesScanResult(true, true, ""); - scanResult.tube[4] = new TubesScanResult(true, true, ""); - scanResult.tube[5] = new TubesScanResult(true, true, ""); - scanResult.tube[6] = new TubesScanResult(true, true, ""); - scanResult.tube[7] = new TubesScanResult(true, true, ""); - scanResult.tube[8] = new TubesScanResult(true, true, ""); - scanResult.tube[9] = new TubesScanResult(true, true, ""); - testStateMgrService.insertVirtualBloodTubeHolder(scanResult); - } - - @Resource - ProjIDCardCtrlAndMonitorService projIDCardCtrlAndMonitorService; - - public void insertVirtualIdCard(Integer projId, String lotId) throws AppException { - gstate.checkIfIsInVirtualMode(); - ProjExtInfoCard newInfoCard = ProjExtInfoCardFactory.buildProjExtInfoCard(projId, lotId); - projIDCardCtrlAndMonitorService.setVirtualMountedIdCardInfo(newInfoCard); - } - - public void removeVirtualIdCard() throws AppException { - gstate.checkIfIsInVirtualMode(); - projIDCardCtrlAndMonitorService.setVirtualMountedIdCardInfo(null); - } - - - @PostConstruct - public void init() { - var page = extApiPageMgr.newPage(this); - - page.newGroup("耗材操作行为"); - page.addFunction("放入虚拟耗材", this::putInVirtualConsumable); - page.addFunction("拿走虚拟耗材", this::takeAwayVirtualConsumable); - - page.newGroup("ID卡"); - page.addFunction("插入ID卡", this::insertVirtualIdCard); - page.addFunction("拔出ID卡", this::removeVirtualIdCard); - - page.newGroup("样本模拟操作"); - page.addFunction("放入一个全血高试管架", this::putInVirtualBloodTubeHolder); - extApiPageMgr.addPage(page); - } - -} diff --git a/src/main/java/a8k/extui/page/extapp/UsrOperationSimulationPage.java b/src/main/java/a8k/extui/page/extapp/UsrOperationSimulationPage.java new file mode 100644 index 0000000..990f3d7 --- /dev/null +++ b/src/main/java/a8k/extui/page/extapp/UsrOperationSimulationPage.java @@ -0,0 +1,117 @@ +package a8k.extui.page.extapp; + +import a8k.app.a8ktype.device.A8kTubeHolderType; +import a8k.app.a8ktype.device.ConsumableGroup; +import a8k.app.a8ktype.exception.AppException; +import a8k.app.a8ktype.type.TubeHolderScanResult; +import a8k.app.a8ktype.type.TubesScanResult; +import a8k.app.dao.type.ProjExtInfoCard; +import a8k.extui.factory.ProjExtInfoCardFactory; +import a8k.app.service.data.ProjIdCardInfoMgrService; +import a8k.app.service.data.ProjInfoMgrService; +import a8k.app.service.lowerctrl.ProjIDCardCtrlAndMonitorService; +import a8k.app.service.mainctrl.AppConsumablesScanService; +import a8k.app.service.statemgr.ConsumablesMgrService; +import a8k.app.service.statemgr.GStateMgrService; +import a8k.extui.mgr.ExtApiPageMgr; +import a8k.app.teststate.TestStateMgrService; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Component; + +@Component +public class UsrOperationSimulationPage { + @Resource + ConsumablesMgrService consumablesMgrService; + + @Resource + AppConsumablesScanService appConsumablesScanService; + + @Resource + ProjIdCardInfoMgrService projIdCardInfoMgrService; + + @Resource + GStateMgrService gstate; + + + @Resource + ProjInfoMgrService projInfoMgrService; + @Resource + ExtApiPageMgr extApiPageMgr; + + @Resource + TestStateMgrService testStateMgrService; + + + // + // 耗材模拟操作 + // + public void putInVirtualConsumable(ConsumableGroup group, String lotid) throws AppException { + gstate.checkIfIsInVirtualMode(); + testStateMgrService.putVirtualConsumable(group.off, lotid); + } + + public void takeAwayVirtualConsumable() throws AppException { + gstate.checkIfIsInVirtualMode(); + testStateMgrService.takeAwayVirtualConsumable(0); + testStateMgrService.takeAwayVirtualConsumable(1); + testStateMgrService.takeAwayVirtualConsumable(2); + testStateMgrService.takeAwayVirtualConsumable(3); + testStateMgrService.takeAwayVirtualConsumable(4); + testStateMgrService.takeAwayVirtualConsumable(5); + } + + // + // 样本模拟操作 + // + public void putInVirtualBloodTubeHolder() throws AppException { + gstate.checkIfIsInVirtualModeOrRunOnlyMode(); + + TubeHolderScanResult scanResult = new TubeHolderScanResult(); + scanResult.tubeHolderType = A8kTubeHolderType.BloodTube.scanCode; + scanResult.tube[0] = new TubesScanResult(true, true, ""); + scanResult.tube[1] = new TubesScanResult(true, true, ""); + scanResult.tube[2] = new TubesScanResult(true, true, ""); + scanResult.tube[3] = new TubesScanResult(true, true, ""); + scanResult.tube[4] = new TubesScanResult(true, true, ""); + scanResult.tube[5] = new TubesScanResult(true, true, ""); + scanResult.tube[6] = new TubesScanResult(true, true, ""); + scanResult.tube[7] = new TubesScanResult(true, true, ""); + scanResult.tube[8] = new TubesScanResult(true, true, ""); + scanResult.tube[9] = new TubesScanResult(true, true, ""); + testStateMgrService.insertVirtualBloodTubeHolder(scanResult); + } + + @Resource + ProjIDCardCtrlAndMonitorService projIDCardCtrlAndMonitorService; + + public void insertVirtualIdCard(Integer projId, String lotId) throws AppException { + gstate.checkIfIsInVirtualMode(); + ProjExtInfoCard newInfoCard = ProjExtInfoCardFactory.buildProjExtInfoCard(projId, lotId); + projIDCardCtrlAndMonitorService.setVirtualMountedIdCardInfo(newInfoCard); + } + + public void removeVirtualIdCard() throws AppException { + gstate.checkIfIsInVirtualMode(); + projIDCardCtrlAndMonitorService.setVirtualMountedIdCardInfo(null); + } + + + @PostConstruct + public void init() { + var page = extApiPageMgr.newPage(this); + + page.newGroup("耗材操作行为"); + page.addFunction("放入虚拟耗材", this::putInVirtualConsumable); + page.addFunction("拿走虚拟耗材", this::takeAwayVirtualConsumable); + + page.newGroup("ID卡"); + page.addFunction("插入ID卡", this::insertVirtualIdCard); + page.addFunction("拔出ID卡", this::removeVirtualIdCard); + + page.newGroup("样本模拟操作"); + page.addFunction("放入一个全血高试管架", this::putInVirtualBloodTubeHolder); + extApiPageMgr.addPage(page); + } + +} diff --git a/src/main/java/a8k/extui/page/extapp/debug_assistant/FakeReactionRecordGeneratorPage.java b/src/main/java/a8k/extui/page/extapp/debug_assistant/FakeReactionRecordGeneratorPage.java index cb79e13..fa01457 100644 --- a/src/main/java/a8k/extui/page/extapp/debug_assistant/FakeReactionRecordGeneratorPage.java +++ b/src/main/java/a8k/extui/page/extapp/debug_assistant/FakeReactionRecordGeneratorPage.java @@ -9,8 +9,8 @@ import a8k.app.a8ktype.type.ReactionResult; import a8k.app.dao.type.a8kidcard.A8kResultBuilderFn; import a8k.app.dao.type.a8kidcard.zenum.A8kOptType; import a8k.app.dao.type.a8kidcard.zenum.A8kResultUnit; -import a8k.app.factory.FakeOptScanResultFactory; -import a8k.app.factory.ProjExtInfoCardFactory; +import a8k.extui.factory.FakeOptScanResultFactory; +import a8k.extui.factory.ProjExtInfoCardFactory; import a8k.app.service.data.ProjInfoMgrService; import a8k.app.service.data.ReactionRecordMgrService; import a8k.app.service.statemgr.GStateMgrService; diff --git a/src/main/java/a8k/extui/page/extapp/debug_assistant/IDCardDataGeneratorPage.java b/src/main/java/a8k/extui/page/extapp/debug_assistant/IDCardDataGeneratorPage.java index 7b1b2f1..e2ef7d7 100644 --- a/src/main/java/a8k/extui/page/extapp/debug_assistant/IDCardDataGeneratorPage.java +++ b/src/main/java/a8k/extui/page/extapp/debug_assistant/IDCardDataGeneratorPage.java @@ -2,7 +2,7 @@ package a8k.extui.page.extapp.debug_assistant; import a8k.app.a8ktype.exception.AppException; import a8k.app.dao.type.ProjExtInfoCard; -import a8k.app.factory.ProjExtInfoCardFactory; +import a8k.extui.factory.ProjExtInfoCardFactory; import a8k.app.service.data.ProjIdCardInfoMgrService; import a8k.app.service.data.ProjInfoMgrService; import a8k.app.service.statemgr.GStateMgrService; diff --git a/src/main/java/a8k/extui/page/extsetting/db/A8kSubModuleParameterInitDebugPage.java b/src/main/java/a8k/extui/page/extsetting/db/A8kSubModuleParameterInitDebugPage.java index 5c77474..9cdbe9f 100644 --- a/src/main/java/a8k/extui/page/extsetting/db/A8kSubModuleParameterInitDebugPage.java +++ b/src/main/java/a8k/extui/page/extsetting/db/A8kSubModuleParameterInitDebugPage.java @@ -3,7 +3,7 @@ package a8k.extui.page.extsetting.db; import a8k.app.a8ktype.exception.AppException; import a8k.app.controler.filemgr.StorageControler; import a8k.app.dao.type.SubModuleRegInitialValue; -import a8k.app.hardware.basedriver.A8kCanBusService; +import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.hardware.type.a8kcanprotocol.MId; import a8k.app.service.data.SubModuleRegInitialValueMgrService; import a8k.extui.mgr.ExtApiPageMgr; diff --git a/src/main/java/a8k/extui/page/test/driver/LowLevelBoardVersionPreviewPage.java b/src/main/java/a8k/extui/page/test/driver/LowLevelBoardVersionPreviewPage.java index 9394412..b83ff22 100644 --- a/src/main/java/a8k/extui/page/test/driver/LowLevelBoardVersionPreviewPage.java +++ b/src/main/java/a8k/extui/page/test/driver/LowLevelBoardVersionPreviewPage.java @@ -1,7 +1,7 @@ package a8k.extui.page.test.driver; import a8k.app.a8ktype.exception.AppException; -import a8k.app.hardware.basedriver.A8kCanBusService; +import a8k.app.hardware.channel.A8kCanBusService; import a8k.app.hardware.type.a8kcanprotocol.MId; import a8k.extui.mgr.ExtApiPageMgr; import a8k.extui.type.ExtApiStatu;