9 changed files with 153 additions and 5 deletions
-
14src/main/java/com/dreamworks/boditech/driver/Device.java
-
8src/main/java/com/dreamworks/boditech/driver/actuator/ActAnalysisScanner.java
-
47src/main/java/com/dreamworks/boditech/driver/actuator/ActIncubator.java
-
3src/main/java/com/dreamworks/boditech/driver/actuator/ActuatorBase.java
-
4src/main/java/com/dreamworks/boditech/driver/actuator/ActuatorModule.java
-
17src/main/java/com/dreamworks/boditech/driver/entity/IncubatorSlot.java
-
15src/main/java/com/dreamworks/boditech/driver/task/TaskTest.java
-
49src/main/java/com/dreamworks/boditech/driver/task/step/StepAnalysis.java
-
1src/main/java/com/dreamworks/boditech/driver/task/step/StepManager.java
@ -0,0 +1,8 @@ |
|||
package com.dreamworks.boditech.driver.actuator; |
|||
import com.dreamworks.boditech.driver.Device; |
|||
public class ActAnalysisScanner extends ActuatorBase { |
|||
// constructor |
|||
public ActAnalysisScanner(Integer mid, Device device) { |
|||
super(mid, device); |
|||
} |
|||
} |
@ -0,0 +1,47 @@ |
|||
package com.dreamworks.boditech.driver.actuator; |
|||
import com.dreamworks.boditech.driver.Command; |
|||
import com.dreamworks.boditech.driver.Device; |
|||
import com.dreamworks.boditech.driver.entity.IncubatorSlot; |
|||
public class ActIncubator extends ActMotor { |
|||
// slots |
|||
private IncubatorSlot[] slots; |
|||
|
|||
// constructor |
|||
public ActIncubator(Integer mid, Device device) { |
|||
super(mid, device); |
|||
|
|||
this.slots = new IncubatorSlot[20]; |
|||
for ( int i = 0; i < 20; i++ ) { |
|||
IncubatorSlot slot = new IncubatorSlot(); |
|||
slot.index = i; |
|||
slot.isFree = true; |
|||
this.slots[i] = slot; |
|||
} |
|||
} |
|||
|
|||
// get slot |
|||
public boolean hasFreeSlot() { |
|||
for ( int i = 0; i < 20; i++ ) { |
|||
if ( this.slots[i].isFree ) { |
|||
return true; |
|||
} |
|||
} |
|||
return false; |
|||
} |
|||
|
|||
// move to free position |
|||
public void moveToFreePosition() { |
|||
IncubatorSlot slot = null; |
|||
for ( int i = 0; i < 20; i++ ) { |
|||
if ( this.slots[i].isFree ) { |
|||
slot = this.slots[i]; |
|||
break; |
|||
} |
|||
} |
|||
if ( slot == null ) { |
|||
throw new RuntimeException("no free slot"); |
|||
} |
|||
|
|||
this.moveTo(slot.getLocation()); |
|||
} |
|||
} |
@ -0,0 +1,17 @@ |
|||
package com.dreamworks.boditech.driver.entity; |
|||
public class IncubatorSlot { |
|||
public Integer index; |
|||
public Boolean isFree; |
|||
|
|||
// get position |
|||
// @TODO : use real position |
|||
public Integer getLocation() { |
|||
return 800; |
|||
} |
|||
|
|||
// get exit position |
|||
// @TODO : use real exit position |
|||
public Integer getExitLocation() { |
|||
return 18900; |
|||
} |
|||
} |
@ -0,0 +1,49 @@ |
|||
package com.dreamworks.boditech.driver.task.step; |
|||
import com.dreamworks.boditech.driver.Device; |
|||
import com.dreamworks.boditech.driver.Task; |
|||
import com.dreamworks.boditech.driver.TaskExecutor; |
|||
import com.dreamworks.boditech.driver.actuator.ActAnalysisScanner; |
|||
import com.dreamworks.boditech.driver.actuator.ActIncubator; |
|||
import com.dreamworks.boditech.driver.actuator.ActMotor; |
|||
import com.dreamworks.boditech.driver.actuator.ActuatorModule; |
|||
import com.dreamworks.boditech.driver.entity.IncubatorSlot; |
|||
import com.dreamworks.boditech.driver.task.TaskTest; |
|||
import com.fasterxml.jackson.annotation.JsonProperty; |
|||
public class StepAnalysis extends StepBase { |
|||
@JsonProperty("action") |
|||
public String action; |
|||
|
|||
@Override |
|||
public void execute(TaskExecutor executor, Task task) { |
|||
TaskTest taskTest = (TaskTest)task; |
|||
Device device = executor.getDevice(); |
|||
ActIncubator incubator = (ActIncubator)device.getActuator(ActuatorModule.INCUBATOR_MOTOR); |
|||
ActMotor pushMotor = (ActMotor)device.getActuator(ActuatorModule.ANALYSIS_PUSH_MOTOR); |
|||
ActMotor scanMotor = (ActMotor)device.getActuator(ActuatorModule.ANALYSIS_SCAN_MOTOR); |
|||
ActAnalysisScanner scanner = (ActAnalysisScanner)device.getActuator(ActuatorModule.ANALYSIS_SCAN_SCANNER); |
|||
|
|||
// 01. 获取卡位 |
|||
IncubatorSlot slot = taskTest.getIncubatorSlot(); |
|||
incubator.moveTo(slot.getExitLocation()); |
|||
|
|||
// 02. 推出测试卡 |
|||
pushMotor.moveTo("analysisPushMotorScanStart"); |
|||
pushMotor.moveTo("analysisPushMotorStandby"); |
|||
|
|||
// 03. 扫描测试卡 |
|||
scanner.start(); |
|||
// @TODO : wait for scan finish |
|||
try { |
|||
Thread.sleep(1000); |
|||
} catch (InterruptedException e) { |
|||
throw new RuntimeException(e); |
|||
} |
|||
scanner.stop(); |
|||
// @TODO : read raw from scanner and parse it later |
|||
|
|||
// 04. 丢弃测试卡 |
|||
scanMotor.moveTo("analysisScanMotorDropCard"); |
|||
|
|||
// @TODO : process raw data from scanner |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue