def Statemachine(): while True: while (orderlist.orderlist_empty()): #Waits for orders time.sleep(0.01) if not (elevator.controller(shared.local_elevator.last_floor, shared.target_dir)): #If the controller isn't stopping on the last floor time.sleep(0.1) continue floor_reached = driver.elev.elev_get_floor_sensor_signal() if (shared.target_floor != floor_reached): #Waits for floor reached to be equal to target_floor while(driver.elev.elev_get_floor_sensor_signal() != -1): time.sleep(0.01) while(driver.elev.elev_get_floor_sensor_signal() == -1): #Wait in between floors time.sleep(0.01) floor_reached = driver.elev.elev_get_floor_sensor_signal() if (elevator.should_stop(floor_reached)): #Calls to see if the elevator should stop elevator.set_speed(0) orderlist.mark_completed(floor_reached, shared.local_elevator.direction) #Calls to mark order as completed elevator.open_door() elif (floor_reached == 0) or (floor_reached == shared.N_FLOORS-1): #Always stop if it reaches top or bottom elevator.set_speed(0) time.sleep(0.01) return
def open_door(): ftelevator.open_door() elevator.open_door()