From e0f3c3c3ab2c33e53aa39c9d55f501a88f24752c Mon Sep 17 00:00:00 2001 From: sige Date: Tue, 16 Apr 2024 16:58:00 +0800 Subject: [PATCH] ~ --- app.db | Bin 299008 -> 299008 bytes .../com/iflytop/digester/StartResetTaskThread.java | 8 +++- .../deviceinstance/HeatingTurntableInstance.java | 5 --- .../deviceinstance/HeatingTurntableSlot.java | 7 +++- .../deviceinstance/LiquidAdditionInstance.java | 41 ++++++++++++--------- .../underframework/UfCmdSnippetExecutor.java | 1 + .../connection/UfZcancmderWebsocket.java | 16 +++++++- .../underframework/dao/model/UfMdbOption.java | 6 +++ src/main/resources/application-dev.yml | 7 ++-- 9 files changed, 62 insertions(+), 29 deletions(-) diff --git a/app.db b/app.db index 18c4003bb5cb1cf29cc670f3258f0b4b8d298f69..36558e452323f319b7e14d17367d30f162b2d396 100644 GIT binary patch literal 299008 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 Q&kL2(R3|ACI5HpnAC5kfH2?qr delta 2498 zcma)64Qv$072e(3z1!WH-MO=UHva#~`R8mF?$3u0*EWiy#55&P=sBh4u;L^wbUoV}Q>2@Ot5f-&(Az0$)d4sA%Ksw4r4RKchz#c+UYnp7o4r8uH)}q}VMk7mdP{um(03;A1nu7fO??k zPw_q;apUYw?9j??#TkGNTOL+$~4m z>8$fG*f)tD;6G7?9{eBQucH6<2)^Ml^kDm^s3=g{=<+w&t&%0+cSsJ0-!FN6z9wmr z%ekn@?+Y|F23$?)r!sySB=sJ=ZwZ%0aBYAW+W9816I~W7;Yu+GKSbSPGXi{tIKjOK z*6`Q3S!fmx!OcRAkPYuaLNtO=c$D9d9B7PB;sxgsf`GX-znY^PhF@;f9PWGC}0=a2;yZqzh zW?4M3k&e;L0TYuILmy+58ADZ#CMF|>1{+LFdJJWBn3%K}+Kf?Z3|+x!UJR9OG%+bL zbP%KD7`oSNVvI5L{8kgAjiDp!Ok`51edGyJe)2^V$;lI=wS6y`n8euZo7j$tA@5jz zJiI+$fo$n5{g#Kry_5-%FrjW^V-{lOfHhSf|nA@1T!`B#J&l!PF;V1@1@T`~NOJEI*FudqvDu6UAP z%TK`#phW8c-ve)BOaoQVm%W?^R<`Z@4&x=6mWrk zpIe9Tc8U%+_me;43k*UHfyRV$!X43wx`lRJHx6+^sEO8+7!;=w5Dp;^eo$G0GL}th z!_SS76Fx2t7hm*Y<|}$VRZpgd+w@d$Vf+vmDf$?_f?5*Rk5hB#AXYOVf1W@CC{H{g zI)q8#X?OwFg4DCW;&-zWI+`C+OwKf2=Y*^l$b$!m*x4%6eBITTNIDIw^Zh-7UK zA-pbB!N0&Cf-gZI$mh@UtGRz@?{f+4adwgJV_gf9#X0eaFsJR|25>UIuPtej827Se zhR3OOC39MnO*-VO4f71QULJ|`oXK(2d0O&f4wU=XG*8LUpQX>S)OomWf~jgQWZYG& z4ADxj)?jPp^<+9V1ih!oL~$jNxa?Vjqs(rxIqY7^Wh+xw&1hDKB>zt+d7z;qWbDWw zmA7X!wIw*&%Y?^^FdACv*P+!FGw$*#!{aY)v1Me>V0^2{Sa)Q+>(*-r@siu4@7|gmjZDgs-Ft6L z?#1}V=`%M@kIX2)!YX!!^MC<%*iyu}D?A4I;*d#6nbpj5{x6qm6zbA%^xvmWw(Uc> zCIaiKQ+b@Jh3qCmr~#uwHoD9`gT}-l_yjp{|7(Z$0FSyM!Ty5%C%Xxn#R=T;DuqLQ z1vkKc0CvI;!5Xd&0dAJd;*)Uad=GcS{qQKTi_^HbHj75SNjMklk4bEJ6HBkwDVL6D zq*&?K2-I#Ol~}AnE#jx7kN8Ne7RH1$*bUYbi}@@3)7(k&-&`Imv$XCd?M?0T%9v&8sw`PR_mNKJ5*A5LtAs!Hr$iSNqYJEf zfr4Am7UfTcG)qI8)X2H|hoB3ls?%q4@+j9$6}kncj!rbNpIr`2k+SfZl~P%z5BvW?@%?|1=Y8R))=Y$C%9|pl3Xyz~RmE16A zWcTUrYiG5qm_OhPJxm*LS2;`JOGsD4|E)zmXqrkcSI_iDDZLBdb-2Vye@0P6I}W{- z?n*F&aJq{=Mn=ov{l)ZwsQf`W-5ZsEE060he=DvhSH$(VE8==pWnBMbCEbe?&|F3L zBc~M~7G|meT(hcCWvJwLACc^@m(UrxWWAE tubes, List pumpIndexes, int volume ) { var pumpGroupOutIndex = pumpIndexes.get(0); var pumpGroupInIndex = pumpIndexes.get(1); + var type = liquids.get(pumpGroupOutIndex/2).type; + var rotateDistance = this.convertVolumeToPumpRotationDistance(type, volume); for ( int batchIndex=0; batchIndex<4; batchIndex++ ) { + // 外圈 UfCmdSnippetExecutor.execute("LiquidAdditionPrepare.Out." + batchIndex); if ( this.checkTubeExists("GOUT", batchIndex, "TOUT", tubes) ) { - UfCmdSnippetExecutor.execute( - "LiquidAdditionPump" + pumpGroupOutIndex, - Map.of("volume", volume) - ); + var snippetKey = "LiquidAdditionPump." + pumpGroupOutIndex; + Map snippetParams = Map.of("volume", rotateDistance); + UfCmdSnippetExecutor.execute(snippetKey, snippetParams); } if ( this.checkTubeExists("GOUT", batchIndex, "TIN", tubes) ) { - UfCmdSnippetExecutor.execute( - "LiquidAdditionPump" + pumpGroupInIndex, - Map.of("volume", volume) - ); + var snippetKey = "LiquidAdditionPump." + pumpGroupInIndex; + Map snippetParams = Map.of("volume", rotateDistance); + UfCmdSnippetExecutor.execute(snippetKey, snippetParams); } - + // 内圈 UfCmdSnippetExecutor.execute("LiquidAdditionPrepare.In." + batchIndex); if ( this.checkTubeExists("GIN", batchIndex, "TOUT", tubes) ) { - UfCmdSnippetExecutor.execute( - "LiquidAdditionPump" + pumpGroupOutIndex, - Map.of("volume", volume) - ); + var snippetKey = "LiquidAdditionPump." + pumpGroupOutIndex; + Map snippetParams = Map.of("volume", rotateDistance); + UfCmdSnippetExecutor.execute(snippetKey, snippetParams); } if ( this.checkTubeExists("GIN", batchIndex, "TIN", tubes) ) { - UfCmdSnippetExecutor.execute( - "LiquidAdditionPump" + pumpGroupInIndex, - Map.of("volume", volume) - ); + var snippetKey = "LiquidAdditionPump." + pumpGroupInIndex; + Map snippetParams = Map.of("volume", rotateDistance); + UfCmdSnippetExecutor.execute(snippetKey, snippetParams); } } @@ -80,6 +79,14 @@ public class LiquidAdditionInstance { this.addLiquidToTubes(tubes, pumpIndexes, volume); } + // 转换体积为蠕动泵旋转距离 + private Integer convertVolumeToPumpRotationDistance( String type, int volume ) { + var oneCirclePulse = 100; + var volumePerCircle = UfMdbOption.getDouble(String.format("PumpVolumePerCircle.%s",type), 1.0); + var circleCount = (int) (volume / volumePerCircle); + return circleCount * oneCirclePulse; + } + // 检查试管是否存在 private Boolean checkTubeExists(String groupType, Integer batchIndex, String slotType, List tubes) { var slotIndexes = Map.of( diff --git a/src/main/java/com/iflytop/digester/underframework/UfCmdSnippetExecutor.java b/src/main/java/com/iflytop/digester/underframework/UfCmdSnippetExecutor.java index b2ebc0c..00719d9 100644 --- a/src/main/java/com/iflytop/digester/underframework/UfCmdSnippetExecutor.java +++ b/src/main/java/com/iflytop/digester/underframework/UfCmdSnippetExecutor.java @@ -84,6 +84,7 @@ public class UfCmdSnippetExecutor { // 编译参数为模板 freemarker.template.Configuration cfg = new Configuration(Configuration.VERSION_2_3_31); + cfg.setNumberFormat("0"); Template template = null; try { template = new Template("", cmdParams, cfg); diff --git a/src/main/java/com/iflytop/digester/underframework/connection/UfZcancmderWebsocket.java b/src/main/java/com/iflytop/digester/underframework/connection/UfZcancmderWebsocket.java index 525f7a9..3b2a4b5 100644 --- a/src/main/java/com/iflytop/digester/underframework/connection/UfZcancmderWebsocket.java +++ b/src/main/java/com/iflytop/digester/underframework/connection/UfZcancmderWebsocket.java @@ -52,10 +52,13 @@ public class UfZcancmderWebsocket extends UfConnectionBase { } @Override public void onClose(int i, String s, boolean b) { - UfZcancmderWebsocket.this.log("close"); + UfZcancmderWebsocket.this.handleOnClose(); } @Override public void onError(Exception e) { + if ( null == e ) { + e = new RuntimeException("unknown error"); + } UfZcancmderWebsocket.this.log(e.getMessage()); } }; @@ -156,7 +159,11 @@ public class UfZcancmderWebsocket extends UfConnectionBase { UfMdbActuator actuator = UfMdbActuator.findOne(UfMdbActuator.class, actuatorCmd.actuatorId); LOG.info("[Command-Executor:{}] {}({}) => {}", actuator.name, actuatorCmd.cmdKey, actuatorCmd.parameters, cmd); if ( !this.client.isOpen() ) { - throw new RuntimeException("ZCanCmder 连接已断开"); + try { + this.client.connectBlocking(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } } TimerTask task = new TimerTask() { @@ -208,6 +215,11 @@ public class UfZcancmderWebsocket extends UfConnectionBase { return cmd; } + // handle on close + public void handleOnClose() { + UfZcancmderWebsocket.this.log("close"); + } + // handle on text message private void handleOnTextMessage( String text ) { ByteBuffer message = TsByteBuffer.fromHex(text); diff --git a/src/main/java/com/iflytop/digester/underframework/dao/model/UfMdbOption.java b/src/main/java/com/iflytop/digester/underframework/dao/model/UfMdbOption.java index fcff2fa..457702e 100644 --- a/src/main/java/com/iflytop/digester/underframework/dao/model/UfMdbOption.java +++ b/src/main/java/com/iflytop/digester/underframework/dao/model/UfMdbOption.java @@ -28,4 +28,10 @@ public class UfMdbOption extends UfActiveRecord { var option = UfMdbOption.getString(key, defaultValue.toString()); return Integer.parseInt(option); } + + // get option + public static Double getDouble(String key, Double defaultValue ) { + var option = UfMdbOption.getString(key, defaultValue.toString()); + return Double.parseDouble(option); + } } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 4447f9d..b2c3a9c 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -13,12 +13,13 @@ device: connections: - name : zcancmder key : zcancmder - enable : true + enable : false type : ZcancmderWebsocket - uri: ws://192.168.8.10:19005 +# uri: ws://192.168.8.10:19005 + uri : ws://127.0.0.1:19005 - name : modbus key : modbus - enable : false + enable : true type : ModbusRTUOverTCP host: 127.0.0.1 port: 502