|
|
@ -164,7 +164,6 @@ public class TubeTestTask extends TaskBase { |
|
|
|
case "mixing" : this.executeStepMixing(stepNode); break; |
|
|
|
case "drop-tip" : this.executeStepDropTip(stepNode); break; |
|
|
|
case "incubate" : this.executeStepIncubate(stepNode); break; |
|
|
|
case "analysis" : this.executeStepAnalysis(stepNode); break; |
|
|
|
case "sampling-done" : this.executeStepSamplingDone(stepNode); break; |
|
|
|
} |
|
|
|
} catch ( InterruptedException e ) { |
|
|
@ -172,7 +171,9 @@ public class TubeTestTask extends TaskBase { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
this.analysis(); |
|
|
|
this.taskFinish(); |
|
|
|
this.log("项目测试结束"); |
|
|
|
} |
|
|
|
|
|
|
|
// 采样完成 |
|
|
@ -305,6 +306,7 @@ public class TubeTestTask extends TaskBase { |
|
|
|
|
|
|
|
// 提交样本至孵育盘测试卡 |
|
|
|
var incubatorLock = device.incubator.lock("SampleCommit"); |
|
|
|
device.incubator.moveToCommitPos(this.incubatorSlot); |
|
|
|
Integer volume = stepNode.get("volume").asInt(); |
|
|
|
pipette.aspirateFromBufferTubeAndDispenseToTestCard(this.bufferTube, volume); |
|
|
|
device.incubator.unlock(incubatorLock); |
|
|
@ -327,16 +329,40 @@ public class TubeTestTask extends TaskBase { |
|
|
|
this.log("孵育完成,等待扫描结果"); |
|
|
|
} |
|
|
|
|
|
|
|
// 扫描 |
|
|
|
private void executeStepAnalysis( JsonNode stepNode ) { |
|
|
|
this.log("扫描结果"); |
|
|
|
// 扫描分析结果 |
|
|
|
private void analysis() { |
|
|
|
var asyncEnable = UfMdbOption.getBoolean("AnalysisAsyncEnable", false); |
|
|
|
if ( !asyncEnable ) { |
|
|
|
this.executeAnalysis(); |
|
|
|
this.log("结果分析完成"); |
|
|
|
return ; |
|
|
|
} |
|
|
|
|
|
|
|
var thread = new Thread(this::executeAnalysis); |
|
|
|
thread.start(); |
|
|
|
this.taskWait("AnalysisDone"); |
|
|
|
this.log("结果分析完成"); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 执行扫描分析操作 |
|
|
|
*/ |
|
|
|
private void executeAnalysis() { |
|
|
|
this.log("结果扫描"); |
|
|
|
|
|
|
|
Device device = Device.getInstance(); |
|
|
|
device.incubator.exitCardToScanner(this.incubatorSlot); |
|
|
|
var scanner = device.scanner; |
|
|
|
var scannerLock = scanner.lock("ScanResult"); |
|
|
|
|
|
|
|
var incubator = device.incubator; |
|
|
|
var exitCardLock = incubator.lock("ExitCard"); |
|
|
|
incubator.exitCardToScanner(this.incubatorSlot); |
|
|
|
incubator.unlock(exitCardLock); |
|
|
|
|
|
|
|
scanner.scanTypeF(); |
|
|
|
var scanResult = scanner.readResult(); |
|
|
|
scanner.dropCard(); |
|
|
|
scanner.unlock(scannerLock); |
|
|
|
|
|
|
|
// 计算 |
|
|
|
var algo = new ScanResultAnalysisAlgo(); |
|
|
@ -395,6 +421,11 @@ public class TubeTestTask extends TaskBase { |
|
|
|
|
|
|
|
this.test.result = UfJsonHelper.objectToJson(results); |
|
|
|
this.test.save(); |
|
|
|
|
|
|
|
var asyncEnable = UfMdbOption.getBoolean("AnalysisAsyncEnable", false); |
|
|
|
if ( asyncEnable ) { |
|
|
|
this.setStatus("READY"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|