private void releaseGlass() { print("handing off processed glass to " + nextConveyor); /** @Brooke prevent a race condition for the washergui overwriting the glassPart */ /*cWsState = ConvWsState.PENDING; readyForGlass = true;*/ nextConveyorReady = false; // msg GUI to release glass trans.fireEvent(myChannel, TEvent.WORKSTATION_RELEASE_GLASS, null); nextConveyor.msgHereIsGlass(glass); /** @Brooke prevent a race condition for the washergui overwriting the glassPart */ this.cWsState = ConvWsState.MOVING_OUT; // glass = null; stateChanged(); }
private void prevConveyorImReady() { print("informing " + prevConveyor + " that I'm ready to accept a glass panel"); prevConveyor.msgNextComponentReady(); readyForGlass = false; stateChanged(); }
/** Feel free to use this method to start all the Agent threads at the same time */ private void initializeBackEnd() { // =========================================================================== // TODO initialize and start Agent threads here // =========================================================================== stockPileRobot = new StockPileRobotAgent(transducer, "CMBH Stock Pile Robot"); // Create Shuttle shuttle1 = new ShuttleAgent("Shuttle1"); shuttle2 = new ShuttleAgent("Shuttle2"); shuttle3 = new ShuttleAgent("Shuttle3"); shuttle4 = new ShuttleAgent("Shuttle4"); // Workstations cutter = new CutterAgent(transducer, "Cutter"); breakOut = new ConveyorWorkstationJT(transducer, "Breakout", TChannel.BREAKOUT); manualBreakOut = new ConveyorWorkstationJT(transducer, "ManualBreakout", TChannel.MANUAL_BREAKOUT); // ADDED BY JY SPONGEBOB washer = new ConveyorWorkstationJT(transducer, "Washer", TChannel.WASHER); painter = new ConveyorWorkstationJT(transducer, "Painter", TChannel.PAINTER); uvlamp = new ConveyorWorkstationJT(transducer, "UVLamp", TChannel.UV_LAMP); // BC conveyors & start conveyors conveyor0 = new NCCutConveyorAgent(transducer, dPanel, "Conveyor0"); conveyor1 = new NCCutConveyorAgent(transducer, dPanel, "Conveyor1"); // JT conveyors & left side conveyors conveyor2 = new ConveyorAgentJT(transducer, "Conveyor2", 2, 4, 5); conveyor3 = new ConveyorAgentJT(transducer, "Conveyor3", 3, 6, 7); conveyor4 = new ConveyorAgentJT(transducer, "Conveyor4", 4, 8, 9); conveyor8 = new ConveyorAgentJT(transducer, "Conveyor8", 8, 16, 17); conveyor9 = new ConveyorAgentJT(transducer, "Conveyor9", 9, 18, 19); conveyor10 = new ConveyorAgentJT(transducer, "Conveyor10", 10, 20, 21); conveyor11 = new ConveyorAgentJT(transducer, "Conveyor11", 11, 22, 23); conveyor12 = new ConveyorAgentJT(transducer, "Conveyor12", 12, 24, 25); // conveyor13 = new ConveyorAgentJT(transducer, "Conveyor12", 13, 26, 27); // DJ conveyor conveyor5 = new ConveyorAgentDJ("Conveyor5", 5); conveyor6 = new ConveyorAgentDJ("Conveyor6", 6); conveyor7 = new ConveyorAgentDJ("Conveyor7", 7); // Set JT agent references shuttle1.setPrevComponent(conveyor1); shuttle1.setNextComponent(conveyor2); conveyor2.setPrevComponent(shuttle1); conveyor2.setNextComponent(breakOut); breakOut.setPrevConveyor(conveyor2); breakOut.setNextConveyor(conveyor3); conveyor3.setPrevComponent(breakOut); conveyor3.setNextComponent(manualBreakOut); manualBreakOut.setPrevConveyor(conveyor3); manualBreakOut.setNextConveyor(conveyor4); conveyor4.setPrevComponent(manualBreakOut); conveyor4.setNextComponent(shuttle2); shuttle2.setPrevComponent(conveyor4); shuttle2.setNextComponent(conveyor5); shuttle3.setPrevComponent(conveyor9); shuttle3.setNextComponent(conveyor10); // Set BC references conveyor0.setMyIndex(0); conveyor0.setEntryAgent(stockPileRobot); conveyor0.setEntrySensorIndex(0); conveyor0.setExitAgent(cutter); conveyor0.setExitSensorIndex(1); conveyor1.setMyIndex(1); conveyor1.setEntryAgent(cutter); conveyor1.setEntrySensorIndex(2); conveyor1.setExitAgent(shuttle1); conveyor1.setExitSensorIndex(3); conveyor1.setShuttleExitSensorIndex(4); cutter.setConveyors(conveyor0, conveyor1); stockPileRobot.setConveyor(conveyor0); // ADDED BY JY SPONGEBOB conveyor8.setPrevComponent(popup2); conveyor8.setNextComponent(washer); washer.setPrevConveyor(conveyor8); washer.setNextConveyor(conveyor9); conveyor9.setPrevComponent(washer); conveyor9.setNextComponent(shuttle3); conveyor10.setPrevComponent(shuttle3); conveyor10.setNextComponent(painter); painter.setPrevConveyor(conveyor10); painter.setNextConveyor(conveyor11); conveyor11.setPrevComponent(painter); conveyor11.setNextComponent(uvlamp); uvlamp.setPrevConveyor(conveyor11); uvlamp.setNextConveyor(conveyor12); conveyor12.setPrevComponent(uvlamp); conveyor12.setNextComponent(shuttle4); shuttle4.setPrevComponent(conveyor12); shuttle4.setNextComponent(conveyor13); // conveyor13.setPrevComponent(shuttle4); // Set DJ conveyors conveyor5.setTransducer(transducer); conveyor5.setNextAgent(popup0); conveyor5.setShuttleAgent(shuttle2); conveyor6.setTransducer(transducer); conveyor6.setPreviousAgent(popup0); conveyor6.setNextAgent(popup1); conveyor7.setTransducer(transducer); conveyor7.setPreviousAgent(popup1); conveyor7.setNextAgent(popup2); // Complete popup initializations for drill popup0.setWorkstationType(ComponentOperations.DRILL); popup0.setNextAgent(conveyor6); popup0.setTransducer(transducer); // Complete popup initializations for cross seamer popup1.setWorkstationType(ComponentOperations.CROSSSEAMER); popup1.setNextAgent(conveyor7); popup1.setTransducer(transducer); // Complete popup initializations for grinder popup2.setWorkstationType(ComponentOperations.GRINDER); popup2.setNextAgent(conveyor8); popup2.setTransducer(transducer); // Set transistors for all robots robotd1.setTransducer(transducer); robotd2.setTransducer(transducer); robotc1.setTransducer(transducer); robotc2.setTransducer(transducer); robotg1.setTransducer(transducer); robotg2.setTransducer(transducer); // Set appropriate robot agents to each popup popup0.addRobot(robotd1, false); popup0.addRobot(robotd2, false); popup1.addRobot(robotc1, false); popup1.addRobot(robotc2, false); popup2.addRobot(robotg1, false); popup2.addRobot(robotg2, false); // Set popup agents to each robot robotd1.setPopup(popup0); robotd2.setPopup(popup0); // drill robotc1.setPopup(popup1); robotc2.setPopup(popup1); // cross seamer robotg1.setPopup(popup2); robotg2.setPopup(popup2); // grinder // EndFactory initialization conveyor13.setEndConveyorAgent(transducer, null, shuttle4, oven, 13, dPanel); endSensor0.setEndSensorEntryAgent(transducer, shuttle4, conveyor13, 26, dPanel); endSensor1.setEndSensorPreOvenAgent(transducer, oven, conveyor13, 27, dPanel); oven.setOvenAgent(transducer, conveyor13, conveyor14, -1, dPanel); conveyor14.setEndConveyorAgent(transducer, truck, null, oven, 14, dPanel); endSensor2.setEndSensorPostOvenAgent(transducer, oven, conveyor14, 28, dPanel); endSensor3.setEndSensorPrePopupAgent(transducer, conveyor14, 29, dPanel); /*popupEnd.setEndPopupAgent(transducer, truckRobot, null, conveyor14, -1, dPanel);*/ // truckRobot.setEndRobotAgent(transducer, null, truck, conveyor14, -1, dPanel); truck.setEndTruckAgent(transducer, conveyor14, -1, dPanel); // start threads stockPileRobot.startThread(); conveyor0.startThread(); cutter.startThread(); conveyor1.startThread(); shuttle1.startThread(); conveyor2.startThread(); breakOut.startThread(); conveyor3.startThread(); manualBreakOut.startThread(); conveyor4.startThread(); shuttle2.startThread(); conveyor5.startThread(); conveyor6.startThread(); conveyor7.startThread(); popup0.startThread(); popup1.startThread(); popup2.startThread(); robotd1.startThread(); robotd2.startThread(); robotc1.startThread(); robotc2.startThread(); robotg1.startThread(); robotg2.startThread(); conveyor8.startThread(); // ADDED BY JY SPONGEBOB shuttle3.startThread(); conveyor9.startThread(); washer.startThread(); conveyor10.startThread(); painter.startThread(); conveyor11.startThread(); uvlamp.startThread(); conveyor12.startThread(); shuttle4.startThread(); // conveyor13.startThread(); // EndFactory conveyor13.startThread(); oven.startThread(); endSensor0.startThread(); endSensor1.startThread(); conveyor14.startThread(); endSensor2.startThread(); endSensor3.startThread(); /*popupEnd.startThread();*/ // truckRobot.startThread(); truck.startThread(); System.out.println("Back end initialization finished."); }