ツタンラーメンの忘備録

プログラミングや精神疾患、ラーメンについて書いていきます。たぶん。

python osc openframeworks keyboardinput pythonでoscを受信しながらキーボード入力を受け付ける。

openframeworksからキーボード入力を送れば解決なのでは?という声が聞こえてきそう…。

python

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()

とするとうまく動かないので注意。_から始めるべきでないのはわかっている。