|
|
@ -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); |
|
|
|
} |
|
|
|
} |