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