python osc openframeworks keyboardinput pythonでoscを受信しながらキーボード入力を受け付ける。
openframeworksからキーボード入力を送れば解決なのでは?という声が聞こえてきそう…。
import argparse import math import re import threading import sys from pythonosc import dispatcher from pythonosc import osc_server import config import osc def keys(): while True: input_word = input(">") if input_word == "s": sys.exit() def osc_loop(): parser = argparse.ArgumentParser() parser.add_argument("--ip", default="localhost", help="The ip to listen on") parser.add_argument("--port", type=int, default=1111, help="The port to listen on") args = parser.parse_args() _dispatcher = dispatcher.Dispatcher() _dispatcher.map("/found", osc.set_found) _dispatcher.map("/raw", osc.print_raws) server = osc_server.ThreadingOSCUDPServer( (args.ip, args.port), _dispatcher) print("Serving on {}".format(server.server_address)) server.serve_forever() dual_loop = threading.Thread(target=osc_loop,name="dual_loop",args=()) dual_loop.setDaemon(True) dual_loop.start() if __name__ == "__main__": keys()
threadingのtargetを逆にすると正しく動作しない。これで本当に正しく動いているのだろうか。
dispatcher = dispatcher.Dispatcher()
とするとうまく動かないので注意。_から始めるべきでないのはわかっている。