def main(): message_handler = MessageHandler() driver = Driver() #my_id = get IP address on this computer my_id = 3 acknowledge = 4 run_floor = 0 run_button = 0 old_f = None old_but = None floor_up = [0] * 4 floor_down = [0] * 4 while True: position = driver.read_position() master_message = message_handler.receive_from_master() for i in range(0, 4): if (master_message['master_floor_up'][i] == 0): floor_up[i] = 0 if (master_message['master_floor_down'][i] == 0): floor_down[i] = 0 time.sleep(0.1) (floor, button) = driver.pop_floor_panel_queue() if floor is not None: if button == 0: floor_up[floor] = 1 elif button == 1: floor_down[floor] = 1 message_handler.send_to_master(floor_up, floor_down, my_id, position[0], position[1], position[2], master_message['queue_id']) print floor_up print floor_down (run_floor, run_button) = message_handler.get_my_master_order() print run_floor print run_button if run_floor is not None: driver.queue_elevator_run(run_floor, run_button) print['floor_up:'] + master_message['master_floor_up'] + [ 'floor_down:' ] + master_message['master_floor_down'] #print master_message['queue_id'] time.sleep(0.5) '''
def main(): #instantiating classes message_handler = MessageHandler() slave_driver = SlaveDriver() orders_id = 0 while True: #try: time.sleep(TICK) position = slave_driver.read_position() master_message = message_handler.receive_from_master() if master_message is not None: slave_driver.clear_floor_panel(master_message['orders_up'][:],master_message['orders_down'][:]) orders_id = master_message['orders_id'] if slave_driver.changing_master(master_message['master_id']): my_master_queue = slave_driver.read_saved_master_queue() print "CHANGING MASTER STATE = TRUE -> my_master_queue: " + str(my_master_queue) for i in range(0,8): if my_master_queue[i] > 0: my_master_queue[i]=1 message_handler.send_to_master(my_master_queue[0:4],my_master_queue[4:8],MY_ID,position[0],position[1],position[2],master_message['orders_id']) orders_ok = True for order in range(0,N_FLOORS): if ( (my_master_queue[order] > 0) and (master_message['orders_up'][order] == 0) ) and ( (my_master_queue[4+order] > 0) and (master_message['orders_down'][order]) ): orders_ok = False if orders_ok: #is_master = False changing_master = False else: print master_message['orders_up'][:] + master_message['orders_down'][:] slave_driver.master_queue_elevator_run(master_message['orders_up'][:] + master_message['orders_down'][:]) (floor_up,floor_down) = slave_driver.get_floor_panel() print floor_up + floor_down + ['pikk'] message_handler.send_to_master(floor_up,floor_down,MY_ID,position[0],position[1],position[2],orders_id)
def main(): #instantiating classes message_handler = MessageHandler(MY_ID) slave_driver = SlaveDriver() #slave_handler = SlaveHandler() #acknowledge = 4 #run_floor = 0 #run_button = 0 #old_f = None #old_but = None is_master = False floor_up = [0] * 4 floor_down = [0] * 4 master_id = 10 changing_master = False last_master_id = 0 while True: #if slave_handler.check_slave_alive() == MY_ID: # active_slave = True position = slave_driver.read_position() master_message = message_handler.receive_from_master() (floor, button) = slave_driver.pop_floor_panel_queue() if floor is not None: if button == 0: floor_up[floor] = 1 elif button == 1: floor_down[floor] = 1 for i in range(0, 4): if (master_message['master_floor_up'][i] != 0): floor_up[i] = 0 if (master_message['master_floor_down'][i] != 0): floor_down[i] = 0 #time.sleep(0.3) message_handler.send_to_master(floor_up, floor_down, MY_ID, position[0], position[1], position[2], master_message['queue_id']) print "floor_up: " + str(floor_up) print "floor_down: " + str(floor_down) ''' (run_floor,run_button) = message_handler.get_my_master_order() print run_floor print run_button if run_floor is not None: slave_driver.queue_elevator_run(run_floor,run_button) ''' master_queue = master_message['master_floor_up'][:] + master_message[ 'master_floor_down'][:] print "master_queue: " + str(master_queue) #if master_id == MY_ID: # is_master = True master_id = master_message['master_id'] #if last_master_id != master_id: # changing_master = True if changing_master: my_master_queue = slave_driver.read_saved_master_queue() print "CHANGING MASTER STATE = TRUE -> my_master_queue: " + str( my_master_queue) for i in range(0, 8): if my_master_queue[i] > 0: my_master_queue[i] = 1 message_handler.send_to_master(my_master_queue[0:4], my_master_queue[4:8], MY_ID, position[0], position[1], position[2], master_message['queue_id']) orders_ok = True for floor in range(0, N_FLOORS): if ((my_master_queue[floor] > 0) and (master_message['master_floor_up'][floor] == 0)) and ( (my_master_queue[floor + 4] > 0) and (master_message['master_floor_down'][floor] == 0)): orders_ok = False if orders_ok: is_master = False changing_master = False if not changing_master: slave_driver.master_queue_elevator_run(master_queue) #print ['floor_up:'] + master_message['master_floor_up'] + ['floor_down:'] + master_message['master_floor_down'] #print master_message['queue_id'] time.sleep(0.1) last_master_id = master_id
def main(): #instantiating classes message_handler = MessageHandler(MY_ID) slave_driver = SlaveDriver() slave_handler = SlaveHandler() #acknowledge = 4 #run_floor = 0 #run_button = 0 #old_f = None #old_but = None is_master = False floor_up = [0]*4 floor_down = [0]*4 master_id = 10 changing_master = True last_master_id = 0 while True: if slave_handler.check_slave_alive() == MY_ID: active_slave = True position = slave_driver.read_position() master_message = message_handler.receive_from_master() (floor,button) = slave_driver.pop_floor_panel_queue() if floor is not None: if button == 0: floor_up[floor] = 1 elif button == 1: floor_down[floor] = 1 for i in range (0,4): if (master_message['master_floor_up'][i] != 0): floor_up[i] = 0 if (master_message['master_floor_down'][i] != 0): floor_down[i] = 0 #time.sleep(0.3) message_handler.send_to_master(floor_up,floor_down,MY_ID,position[0],position[1],position[2],master_message['queue_id']) print "floor_up: " + str(floor_up) print "floor_down: " + str(floor_down) ''' (run_floor,run_button) = message_handler.get_my_master_order() print run_floor print run_button if run_floor is not None: slave_driver.queue_elevator_run(run_floor,run_button) ''' master_queue = master_message['master_floor_up'][:] + master_message['master_floor_down'][:] print "master_queue: " + str(master_queue) #if master_id == MY_ID: # is_master = True master_id = master_message['master_id'] if last_master_id != master_id: changing_master = True if changing_master: my_master_queue = slave_driver.read_saved_master_queue() print "CHANGING MASTER STATE = TRUE -> my_master_queue: " + str(my_master_queue) message_handler.send_to_master(my_master_queue[0:4],my_master_queue[4:8],MY_ID,position[0],position[1],position[2],master_message['queue_id']) orders_ok = True for floor in range(0,N_FLOORS): if ((my_master_queue[floor] > 0) and (master_message['master_floor_up'][floor] == 0)) and ((my_master_queue[floor+4] > 0) and (master_message['master_floor_down'][floor] == 0)): orders_ok = False if orders_ok: is_master = False changing_master = False if not changing_master: slave_driver.master_queue_elevator_run(master_queue) #print ['floor_up:'] + master_message['master_floor_up'] + ['floor_down:'] + master_message['master_floor_down'] #print master_message['queue_id'] time.sleep(0.1) last_master_id = master_id
def main(): message_handler = MessageHandler() driver = Driver() #my_id = get IP address on this computer my_id = 3 acknowledge = 4 run_floor = 0 run_button = 0 old_f = None old_but = None floor_up = [0]*4 floor_down = [0]*4 while True: position = driver.read_position() master_message = message_handler.receive_from_master() for i in range (0,4): if (master_message['master_floor_up'][i] == 0): floor_up[i] = 0 if (master_message['master_floor_down'][i] == 0): floor_down[i] = 0 time.sleep(0.1) (floor,button) = driver.pop_floor_panel_queue() if floor is not None: if button == 0: floor_up[floor] = 1 elif button == 1: floor_down[floor] = 1 message_handler.send_to_master(floor_up,floor_down,my_id,position[0],position[1],position[2],master_message['queue_id']) print floor_up print floor_down (run_floor,run_button) = message_handler.get_my_master_order() print run_floor print run_button if run_floor is not None: driver.queue_elevator_run(run_floor,run_button) print ['floor_up:'] + master_message['master_floor_up'] + ['floor_down:'] + master_message['master_floor_down'] #print master_message['queue_id'] time.sleep(0.5) '''
def main(): #instantiating classes message_handler = MessageHandler() slave_driver = SlaveDriver() orders_id = 0 while True: #try: time.sleep(TICK) position = slave_driver.read_position() master_message = message_handler.receive_from_master() if master_message is not None: slave_driver.clear_floor_panel(master_message['orders_up'][:], master_message['orders_down'][:]) orders_id = master_message['orders_id'] if slave_driver.changing_master(master_message['master_id']): my_master_queue = slave_driver.read_saved_master_queue() print "CHANGING MASTER STATE = TRUE -> my_master_queue: " + str( my_master_queue) for i in range(0, 8): if my_master_queue[i] > 0: my_master_queue[i] = 1 message_handler.send_to_master(my_master_queue[0:4], my_master_queue[4:8], MY_ID, position[0], position[1], position[2], master_message['orders_id']) orders_ok = True for order in range(0, N_FLOORS): if ((my_master_queue[order] > 0) and (master_message['orders_up'][order] == 0)) and ( (my_master_queue[4 + order] > 0) and (master_message['orders_down'][order])): orders_ok = False if orders_ok: #is_master = False changing_master = False else: print master_message['orders_up'][:] + master_message[ 'orders_down'][:] slave_driver.master_queue_elevator_run( master_message['orders_up'][:] + master_message['orders_down'][:]) (floor_up, floor_down) = slave_driver.get_floor_panel() print floor_up + floor_down + ['pikk'] message_handler.send_to_master(floor_up, floor_down, MY_ID, position[0], position[1], position[2], orders_id)