From c61842d5dd655aca0d17bf24f51aa9f2e947523c Mon Sep 17 00:00:00 2001 From: sige Date: Thu, 29 Feb 2024 16:34:01 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E5=88=B0=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E5=A4=84=E7=90=86=E5=8C=BA=E5=9F=9F=E6=97=B6=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E7=9B=B8=E6=9C=BA=E6=88=AA=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/TaskTubeMoveToErrorSlot.java | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/src/main/java/com/my/graphiteDigesterBg/task/TaskTubeMoveToErrorSlot.java b/src/src/main/java/com/my/graphiteDigesterBg/task/TaskTubeMoveToErrorSlot.java index a4c7852..90b9b84 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/task/TaskTubeMoveToErrorSlot.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/task/TaskTubeMoveToErrorSlot.java @@ -2,9 +2,15 @@ package com.my.graphiteDigesterBg.task; import com.my.graphiteDigesterBg.diframe.DiTaskBase; import com.my.graphiteDigesterBg.diframe.Task; import com.my.graphiteDigesterBg.model.MdbOperationLog; +import com.my.graphiteDigesterBg.move.MoveCameraGrabFrame; import com.my.graphiteDigesterBg.move.MoveMoveTubeRackFromLiquidPlateToHeatPlate; import com.my.graphiteDigesterBg.move.MoveTubeToErrorRackSlot; import com.my.graphiteDigesterBg.resource.ResHeatingTubeRackSlotManager; +import org.opencv.imgcodecs.Imgcodecs; +import org.opencv.imgproc.Imgproc; + +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.List; @Task(name="TubeMoveToErrorSlot") public class TaskTubeMoveToErrorSlot extends DiTaskBase { @@ -30,6 +36,7 @@ public class TaskTubeMoveToErrorSlot extends DiTaskBase { } MdbOperationLog.log(this.getUser(), "试管架%d移动试管到异常位", slotIndex); + this.saveErrorCameraImage(); // move tube rack from liquid plate to heat plate var move = new MoveMoveTubeRackFromLiquidPlateToHeatPlate(); @@ -51,4 +58,19 @@ public class TaskTubeMoveToErrorSlot extends DiTaskBase { this.setStatus(TaskStatus.FINISHED); } + + // save error camera image + private void saveErrorCameraImage() { + var cameraGrabFrame = new MoveCameraGrabFrame(); + cameraGrabFrame.setDevice(this.getDevice()); + cameraGrabFrame.run(); + var imgMat = cameraGrabFrame.getDetectImageMat(); + + var errorImageFolder = this.getDevice().getEnv().getProperty("app.errorImageFolder",String.class); + var filename = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); + // join slot index list + var slotIndexList = String.join("-", this.tubeIndexList.stream().map(Object::toString).toArray(String[]::new)); + var imgPath = String.format("%s/%s_%s.png", errorImageFolder, filename, slotIndexList); + Imgcodecs.imwrite(imgPath, imgMat); + } }