blog.monophile.net

コンピュータのこととかのメモ。

Takaaki Yamamoto

東京工業大学において計算機科学と応用数学を学び、 情報科学芸術大学院大学[IAMAS] においてメディア表現を専攻し修了。 現在は digitiminimi Inc. において、インフラエンジニアとして生計をたててている。

work

各種システム構築と管理を承ります。

Cloud PlatformOpenstack, GCP, AWS, Azure, ...
Openstackkeystone, glance, cinder, swift, neutron, nova, ...
VirtualizationQEMU+KVM, LXD/LXC, Docker, ...
OSDebian GNU/Linux, Ubuntu, CentOS, ...
NetworksIPSec, L2TP, VXLAN, WirelessAP, ...
WebAppsWordPress, GitLab, Redmine, ...
Configuration ManagementAnsible, Terraform, ...
MonitoringNagios, Munin, ...

posts

pyOSCを使ってみる

今、複数のコンピュータをつかったプログラムを書いています。 PythonとopenFrameworksとpuredataを繋ぐ予定です。 それらの通信にOpenSoundControlを使いたいので、まずはPythonで。 pyOSCというのを使えば良いみたいです。

pyOSCをインストール

https://pypi.python.org/pypi/pyOSC ←ここからソースをダウンロードして、以下のコマンドでインストールします。

$ tar xzvf pyOSC-x.y.z.tar.gz
$ cd pyOSC-x.y.z
$ ./setup.py install --user

sample

OSCのサーバを立てて、そのサーバに1秒毎にメッセージを送ってみます。

source
import time, threading
import OSC

server_address = ("127.0.0.1", 9000)
server = OSC.OSCServer(server_address)
server.addDefaultHandlers()

def myMsgPrinter_handler(addr, tags, data, client_address):
    print "osc://%server%server ->" % (OSC.getUrlStr(client_address), addr),
    print "(tags, data): (%server, %server)" % (tags, data)

server.addMsgHandler("/print", myMsgPrinter_handler)
server_thread = threading.Thread(target=server.serve_forever)
server_thread.start()

try :
    client = OSC.OSCClient()
    while True :
        msg = OSC.OSCMessage("/print")
        msg.append(int(time.time()))
        client.sendto(msg, server_address)
        time.sleep(1)
except KeyboardInterrupt :
    server.close()
    server_thread.join()

output

上記を実行すると以下の出力が得られます。 ちゃんと動いているみたいですね。 tagsというのはデータ型を表しています。

osc://localhost:58381/print -> (tags, data): (i, [1404043453])
osc://localhost:58381/print -> (tags, data): (i, [1404043454])
osc://localhost:58381/print -> (tags, data): (i, [1404043455])
osc://localhost:58381/print -> (tags, data): (i, [1404043456])
osc://localhost:58381/print -> (tags, data): (i, [1404043457])

追記

こだわりがなければpylibloの方が使いやすかったので、そちらをおすすめしたいです。

参考URL