Exemplo n.º 1
0
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
Exemplo n.º 2
0
def open_door():
    ftelevator.open_door()
    elevator.open_door()
Exemplo n.º 3
0
def open_door():
  ftelevator.open_door()
  elevator.open_door()