72 lines
2.0 KiB
Java
72 lines
2.0 KiB
Java
package com.henrypump.poc;
|
|
|
|
/**
|
|
* Created by patrickjmcd on 2/10/17.
|
|
*/
|
|
public class IOControl implements Runnable {
|
|
|
|
private final POC poc;
|
|
private DigitalIn startBtn, stopBtn;
|
|
private DigitalOut led2, led3, led4, led5;
|
|
private DigitalOut runningIndicator, runCommand;
|
|
private double pos = 0;
|
|
private int runStatus;
|
|
|
|
IOControl(POC poc){
|
|
this.poc = poc;
|
|
// IO
|
|
startBtn = new DigitalIn(8);
|
|
stopBtn = new DigitalIn(9);
|
|
led2 = new DigitalOut(2, 0);
|
|
led3 = new DigitalOut(3, 0);
|
|
led4 = new DigitalOut(4, 0);
|
|
led5 = new DigitalOut(5, 0);
|
|
runningIndicator = new DigitalOut(6,0);
|
|
runCommand = new DigitalOut(7,0);
|
|
}
|
|
|
|
private void startWell(){
|
|
poc.thisWell.start("startbutton");
|
|
}
|
|
|
|
private void stopWell(){
|
|
poc.thisWell.stop("startbutton");
|
|
}
|
|
|
|
private void exitPOC(){
|
|
poc.thisWell.db.newRunStatus("Shutdown", "io");
|
|
allOutputsOff();
|
|
System.exit(0);
|
|
}
|
|
|
|
public void allOutputsOff(){
|
|
led2.write(0,true);
|
|
led3.write(0,true);
|
|
led4.write(0,true);
|
|
led5.write(0,true);
|
|
runningIndicator.write(0, true);
|
|
runCommand.write(0,true);
|
|
}
|
|
|
|
public void run() {
|
|
System.out.println("Running the IOControl Loop");
|
|
for (;;) {
|
|
if (startBtn.read() == 1) startWell();
|
|
if (stopBtn.read() == 1) stopWell();
|
|
if (startBtn.read() == 1 && stopBtn.read() == 1) {
|
|
exitPOC();
|
|
}
|
|
|
|
pos = poc.thisWell.getCurrentSurfacePosition();
|
|
runStatus = poc.thisWell.getRunStatus();
|
|
led2.write(pos > 20.0 ? 1 : 0);
|
|
led3.write(pos > 40.0 ? 1 : 0);
|
|
led4.write(pos > 60.0 ? 1 : 0);
|
|
led5.write(pos > 80.0 ? 1 : 0);
|
|
|
|
runningIndicator.write(runStatus == Well.RUNSTATUS_RUNNING ? 1 : 0);
|
|
runCommand.write((runStatus == Well.RUNSTATUS_RUNNING || runStatus == Well.RUNSTATUS_STARTING) ? 1 : 0);
|
|
}
|
|
}
|
|
}
|