Esempio n. 1
0
def serialToggle():
    global serialServerRunning, server
    if serialServerRunning:
        SerialButton.configure(bg='#F00')
        serialServerRunning = False
    else:
        server = WebsocketServer(WebSpinBoxVar.get(),
                                 host='127.0.0.1',
                                 loglevel=logging.INFO)
        server.set_fn_new_client(new_client)
        server.timeout = 0
        serialServerRunning = True
        serialthread = threading.Thread(target=serialServerLoop)
        serialthread.daemon = True
        serialthread.start()
        SerialButton.configure(bg='#0F0')
    args = parser.parse_args()
    logging.basicConfig(level=args.loglevel, format='%(asctime)s %(message)s')

    commandQueue = multiprocessing.Queue()
    reporterValuesQueue = multiprocessing.Queue()
    completedCommandsQueue = multiprocessing.Queue()

    server = WebsocketServer(WEBSOCKETS_PORT_NUMBER)
    server.reporterValues = {}
    server.reporterValuesQueue = reporterValuesQueue
    server.completedCommandsQueue = completedCommandsQueue
    server.set_fn_new_client(new_client)
    server.set_fn_client_left(client_left)
    server.set_fn_message_received(message_received)

    if args.mode == MODE_SIMULATOR:
        httpRobotSimulator = JSRobotSimulator(commandQueue, reporterValuesQueue, completedCommandsQueue)
    elif args.mode == MODE_LIVE:
        robot = py_websockets_bot.WebsocketsBot( args.remoteRobotHostname )
        httpRobotSimulator = JSRobotController(commandQueue, reporterValuesQueue, completedCommandsQueue, robot)
    else:
        raise "Unrecognised mode"

    server.httpRobotSimulator = httpRobotSimulator
    httpRobotSimulator.start()
    server.timeout = 0.1 #allows us to check if any commands have completed
    logging.info("Server is listening ")
    while 1:
        check_completed_commands(server)
        server.handle_request()