public boolean pickAndExecuteAnAction() { if (conveyorBroken || sensorBroken) { stopConveyor(); return false; } else if (partGroupCount < partGroupEndOfConveyor) { System.err.println(getName() + " has an unexpected number of sensor events"); System.err.println(getName() + " is now stopping"); Object[] args = new Object[1]; args[0] = myIndex * 2; transducer.fireEvent(TChannel.GUI, TEvent.SENSOR_BROKEN, args); sensorBroken = true; stopConveyor(); return false; } else if (partsLoaded > partGroupEndOfConveyor) { System.err.println("Truck loaded untracked part\n" + getName() + " is now stopping"); Object[] args = new Object[1]; args[0] = myIndex * 2 + 1; transducer.fireEvent(TChannel.GUI, TEvent.SENSOR_BROKEN, args); sensorBroken = true; stopConveyor(); return false; } else if (!parts.isEmpty()) { if (isRunning) { if (followSensorDepressed && myState != MyState.Normal) { stopConveyor(); } } else if (myState == MyState.Normal || !followSensorDepressed) { startConveyor(); } } if (myState == MyState.DoneLoading && !truckBroken) emptyTruck(); return false; }
private void emptyTruck() { partsLoaded = 0; myState = MyState.Unloading; cfLead.msgConveyorReady(this); partGroupCount = partGroupEndOfConveyor = 0; transducer.fireEvent(TChannel.TRUCK, TEvent.TRUCK_DO_EMPTY, null); }
private void startConveyor() { if (!isRunning) { isRunning = true; startConveyorTimer.restart(); conveyorRestart = true; Object[] args = new Object[1]; args[0] = myIndex; transducer.fireEvent(TChannel.CONVEYOR, TEvent.CONVEYOR_DO_START, args); stateChanged(); } }
private void stopConveyor() { if (isRunning) { isRunning = false; if (!parts.isEmpty()) { readyMessageTimer.stop(); startConveyorTimer.stop(); } Object[] args = new Object[1]; args[0] = myIndex; transducer.fireEvent(TChannel.CONVEYOR, TEvent.CONVEYOR_DO_STOP, args); stateChanged(); } }