Browse Source

废料箱已满检测

tags/v0
sige 1 year ago
parent
commit
28450dc4be
  1. BIN
      app.db
  2. 23
      src/main/java/com/iflytop/a800/controller/DeviceController.java
  3. 2
      src/main/java/com/iflytop/a800/device/Device.java
  4. 54
      src/main/java/com/iflytop/a800/device/TrashBox.java
  5. 7
      src/main/java/com/iflytop/a800/task/TubeTestTask.java

BIN
app.db

23
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<String,Object> 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();
}
}

2
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() {

54
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");
}
}

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

Loading…
Cancel
Save