From 28450dc4befed750b3ddc5b7ae6f93414ad0b7f7 Mon Sep 17 00:00:00 2001 From: sige Date: Sat, 29 Jun 2024 10:30:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=9F=E6=96=99=E7=AE=B1=E5=B7=B2=E6=BB=A1?= =?UTF-8?q?=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.db | Bin 405504 -> 405504 bytes .../iflytop/a800/controller/DeviceController.java | 23 +++++---- src/main/java/com/iflytop/a800/device/Device.java | 2 + .../java/com/iflytop/a800/device/TrashBox.java | 54 +++++++++++++++++++++ .../java/com/iflytop/a800/task/TubeTestTask.java | 7 +++ 5 files changed, 77 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/iflytop/a800/device/TrashBox.java diff --git a/app.db b/app.db index f828ff89448a34fd66f6aebcd99301e31cc9ce29..2a0951e886a9a6aeb5ea086969466aa1db3878bb 100644 GIT binary patch delta 3836 zcmb_fYitzP6`r}XPtWemZWbGx;zzf39H$;U?}vj!z!JrvmH=KSK&f{gcZ?&m3%l!- zV!0bj)P*!{l3FlDQ2~JnK%^mB=QFR0&0Dqe@NNJ8MH0 zY%klWE6u*XbI*6rch1~%=7rhX7iMc;SpznI`s&(E=>5&)>;0=5FzO$n=gG;cn^jiu zv!F;cV0{zO$olEN zcxT-CTQz8QqK|^w3DyctPue?ss;MKGKlBMkpQhJSwbY-(m&3iGPo|@ho1uKt?@iPV zR2!16sFr9kiecM~sLKMQYl^_A7B35e$f|~J=w@y(of?TB)HC{lY`k-1v^~D?AENEe z=-K_7(ucc;pq|{~{I22hHGhA}`&`3HD%a~8=I_hi3d!>< zxO{k}60Tt-$pWoJBIruq^f1lOO*OrB2WMm9BbbjQgVafCA04LOBgwFd4xAIg{LwzI zmww_{p6f}O!-k$qXLb#xbKQEz+LhCD!`Zzf@uSbWCdY{~Cj0fQyCmLe>qA-C9v@6u z@Nm479c>?puYhqyEWi9hzRW_Q3?`Prq~);u;!fq|z(q_cgQ;aOt%w~(uS8Mf(Pae8 z-xc|;V(ky;<@#8}xH1@D1`|rKTxJ-SxD@j%W75hH>TmaFwZx@T22+<{`Om}CmVlpQ z99s@7Ck$6k8BQpTzgW8^k#J%;(o%VrtSl!GSE|srmMmSWQHcyoHQHD0^U!Tkz9)OP zGy8cL<9KVly;QRn6cyxF<74vz#==`6hs|59tr+0lV>!SBH0&r*|yRJz7>7JI;1 z(G>fQlU#?d@+iQQaJF~glCKl@BubYDQfYb{*11SPpjA$&1Mk|%tLXgBqO15?VY~Eu zSWRopv{(ZwsBI{yZ8M^vBCfj1EZgzcc5-CPEQs)LKhwK z5;V^H+;`4f*tY?{n8fQG?^&GlgfDw-bm%<~3RCCsH-JQ@8vKbwOUpnb`lxSQ9fiEj z3nniyXpTc;iYc>(ZY=j z_+R}Jnb0`oP0zaiJ6cvpb=%fhPBIulku*k>MUzokmS-%*5G<2b49?Uh^vUM>dxvl@ zJaDi(ml>LW=hEDj*XMt9aqigVLh~E=EKbygFvmZIH?9h`(PFqUw38;Of$)|P7XB6e zK8o+xWS`qdDha01HLPTF4X&Z{@2f;};mEuAi`_L}$9{`>>-~Gehk~c7x~MMypTG}E z;zSL25|GS^Ua;lub6{f?{uO602^xFbhy>t72~C+$W+bR0aV0be>XPElB(}`)f(k7N zv7fk>qO59AU?IcWCPbE+#b_pPFi_JZ4hp==%R1&1o*}_zfS-3xhryZ0-F2)kTBZ&) zv`#P?Q8al*lT?A>p=C&>BA_{e$4(UnC~$To4xGT#pbc*=@K1xk1c1OgkL(6d;YgBXi=kGJ%Q9M}r--Ht9)dmZ z`929*kw)`Ie`xD)$1;&++fmQr#(ZO|-5s@5GtuhmKqZx3$?bSgosZgznk<|W rEXT_3)Zd>&hX>4{=`8~#^jyRW?)Cj!R|s@@3b(F!n-i!2{?qthGnSCg delta 4094 zcmcJSZEPGz8OL|#_RjaVyS|#%ahk~I!)c4kG&}n~ja}C^uH!m&jGax0jj3nfLQCr? zxNYn}ym2Lh)PhK5xhn)ptD;saACgi>EYykmA*vLpN)ZxLJ`k`#LWnQ)1F8g43Uik_ zIp4+21&NdHZfAFH<~PsF|9S4j+LjY*TTX3--Lo%k>tmlkn||Z*&&_k<$NA@SXS09E zdYP*kEiupSUn(?rt?Zw^1bNaE<)VeJg3f4d2uMp4?&q^FzG!7rHtAU&zVTpX!u=Oq zITMTzt$^SDr~QpJSbX~O=!=LNjdS5uv@q&U1p1I%a^x^KDm(SjE|iMFZAE> zDEDhFxxHyZIFk8cw!7)~@cYYK;X}(4a5qeSZ|U^t^KlWtiy3eG)eS>gRmPY(Ff%(Bg##{t*I_0T_7zHnt<%Qz~)A4Pr0KzAu3MVji${ zAIOH`0u*e!ZF`|3)7C27DPTFEKDJb(J5)oOW9W!z)It_j1I;4DabyyBvVjTFkmq|I z(tOiGlqdxGjz(lnRuz?!1AUL{kL`J6Xk=)7_rRBC4l9~$$hyj&KGr*8_wJc2;nGyE z9q!w^&{PJvyU+oy0boizqC3cUiG?(ip;%@>knXCghArLDO|@}=1HD80hDHXf_SaI? z0HM8audv7&6@YXFz|)9F2_}eA)khkkDx$8UBh#Y+Hn1uCo)dWC0{GN!xAUtyyM>J# z&Z_2S*bCVWc9U^Hb(i^r>JD?9r($+x`AD`@Vo;S3>dN(Y3pevzz2THhEkI@ifbImQ zWnhdHOk||F1S5xH4XLVQY8ItdAP02-;ijQe4?xnj0O<_?ii4@@dMsW7jUX-1WJG+! zLj=pzG(Fu?Rks!(+&p&c0nDZv04A05RiWz<(=k|rutdmwJk>*O}kk-2XR`4$Q9~f1QBeK;XGl*B#$Mvg0^N z(>%(2uPVrMP38ep!^Fq8VgGspEGKFS5*r9K&%u}mCc>^`AWf$fS$be0*(a8);lT1# zZ36+mUHLSkkJ=M$Er+DD;-AG|N}6<1JSAP0a?%vj^I@@ENW(^?AbVfJ292a_raZBc z)Jm5pveT3BR`T6cp4mvmrYd_k5Ld~{il4ea{4D?T<(ZARDN&x-NHv7_ChSag(b%$C z)i{^n=SEai$*(;p1ASmKr#4+Lh{EzaP++6kw3#E(M?_PN) z!QOm)<(*`w-69?1Qu+Hq{%!G};?u%k^Y;sf*tFJsxX33Z+ZKdEYe&cS7QjQ!^I4f^ z!Hyi+VkMll6NqV{j%0I=HWL~ho!&I5>at1mT0=FBFD5egahI_)RR45rqzzy%x|?E_&SHx z-y5!j%mzmk%AK41R_WQ9C!Q%iSel#LIX74OVrhmx?XzL!ENu83ed^irc!Z9Wj!%6% zbpyJagxkW%i@G>XzFf*>`;3(*vzaX~RvWwiZBJ2f*?=z`Q@3VBT|? z_xMB&hp7kHW9=mCWw6T1xvwBrUlgSJfvy^s>rzW+i5%WiaBDf#bq?96;(&}pU>pfp z#gSpr>^ibXJcDVvqEKcJgCd9378Xhh!M+n(u4Cdxgrb&1xz3?haj+eouK__u3ir;*65DEduKQFn-n eqBjzX6+th@$~SKnEEPq+g*PkCtSEXT;_+XZ$`nEX diff --git a/src/main/java/com/iflytop/a800/controller/DeviceController.java b/src/main/java/com/iflytop/a800/controller/DeviceController.java index 3970e8b..1ab2d15 100644 --- a/src/main/java/com/iflytop/a800/controller/DeviceController.java +++ b/src/main/java/com/iflytop/a800/controller/DeviceController.java @@ -1,4 +1,5 @@ package com.iflytop.a800.controller; +import com.iflytop.a800.device.Device; import com.iflytop.a800.task.StartResetTask; import com.iflytop.uf.UfActuatorCmdExecutor; import com.iflytop.uf.controller.UfApiControllerBase; @@ -25,19 +26,16 @@ public class DeviceController extends UfApiControllerBase { // String testCardWarehouseTempText = UfActuatorCmdExecutor.execute("TestCardWarehouse", "read_temperature"); // int testCardWarehouseTempInt = Integer.parseInt(testCardWarehouseTempText); Double testCardWarehouseTemp = 0.0; //(double) testCardWarehouseTempInt / 100.0; + +// String incubatorTempStr = UfActuatorCmdExecutor.execute("IncubatorTempCtrl", "read_temperature"); +// int incubatorTempInt = Integer.parseInt(incubatorTempStr); + Double incubatorTemp = 0.0; // (double)incubatorTempInt / 10.0; return this.success(Map.of( - "testCardBoxCase", testCardWarehouseTemp + "testCardBoxCase", testCardWarehouseTemp, + "incubatorTemp", incubatorTemp )); } - @PostMapping("/api/device/trash-box-status-get") - @ResponseBody - public UfApiResponse trashBoxStatusGet() { - Map trashBox = new HashMap<>(); - trashBox.put("status", UfMdbRuntimeVariable.getString("TrashBoxStatus", "EMPTY")); - return this.success(trashBox); - } - @PostMapping("/api/device/id-chip-status-get") @ResponseBody public UfApiResponse idChipStatusGet() { @@ -58,4 +56,11 @@ public class DeviceController extends UfApiControllerBase { } return this.success(); } + + @PostMapping("/api/device/trash-box-clean") + @ResponseBody + public UfApiResponse trashBoxClean() { + Device.getInstance().trashBox.clean(); + return this.success(); + } } diff --git a/src/main/java/com/iflytop/a800/device/Device.java b/src/main/java/com/iflytop/a800/device/Device.java index c043fbc..f2791aa 100644 --- a/src/main/java/com/iflytop/a800/device/Device.java +++ b/src/main/java/com/iflytop/a800/device/Device.java @@ -21,6 +21,8 @@ public class Device { public final LargeBufferTubeManager largeBufferTube = new LargeBufferTubeManager(); // test card manager public final TestCardManager testCard = new TestCardManager(); + // 废料箱 + public final TrashBox trashBox = new TrashBox(); // get instance public static Device getInstance() { diff --git a/src/main/java/com/iflytop/a800/device/TrashBox.java b/src/main/java/com/iflytop/a800/device/TrashBox.java new file mode 100644 index 0000000..d0bcaed --- /dev/null +++ b/src/main/java/com/iflytop/a800/device/TrashBox.java @@ -0,0 +1,54 @@ +package com.iflytop.a800.device; +import com.iflytop.uf.UfActuatorCmdExecutor; +import com.iflytop.uf.model.UfMdbNotification; +import com.iflytop.uf.model.UfMdbRuntimeVariable; +import com.iflytop.uf.util.UfCommon; +public class TrashBox { + // 是否已满 + private Boolean isFull = false; + // 清空锁 + private final Object emptyLock = new Object(); + + // 获取是否已满 + public Boolean getIsFull() { + return this.isFull; + } + + // 清理 + public void clean() { + synchronized ( this.emptyLock ) { + this.emptyLock.notifyAll(); + } + } + + // 等待清空 + public void waitForEmpty() { + do { + UfMdbNotification.action("TrashBoxCleanRequest"); + + synchronized (this.emptyLock) { + try { + this.emptyLock.wait(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + this.isFull = false; + this.recheckIsFull(); + } while (this.getIsFull()); + } + + // 重新检查是否满 + public void recheckIsFull() { + if ( this.getIsFull() ) { + return ; + } + + UfActuatorCmdExecutor.execute("TrashBox", "extboard_write_outio", "0,1"); + UfCommon.delay(500); + String isFullStr = UfActuatorCmdExecutor.execute("TrashBox","extboard_read_inio", "2"); + this.isFull = "1".equals(isFullStr); + UfMdbRuntimeVariable.setString("IsTrashBoxFull", this.isFull ? "yes" : "no"); + UfActuatorCmdExecutor.execute("TrashBox", "extboard_write_outio", "0,0"); + } +} diff --git a/src/main/java/com/iflytop/a800/task/TubeTestTask.java b/src/main/java/com/iflytop/a800/task/TubeTestTask.java index be72a64..c0a7458 100644 --- a/src/main/java/com/iflytop/a800/task/TubeTestTask.java +++ b/src/main/java/com/iflytop/a800/task/TubeTestTask.java @@ -134,6 +134,13 @@ public class TubeTestTask extends TaskBase { @Override public void run() { + var device = Device.getInstance(); + var trashBox = device.trashBox; + trashBox.recheckIsFull(); + if ( trashBox.getIsFull() ) { + trashBox.waitForEmpty(); + } + this.tubeModel.status = UfMdbDictItem.getValue("TUBE_STATUS", "EXECUTING"); this.tubeModel.save();