将传入的OSC消息转换为TUIO 2Dcur

时间:2016-04-01 17:13:58

标签: javascript udp google-chrome-app osc

这里现在有效:

  • 微控制器读取2个触控表面,通过USB每10ms输出一个OSC包(使用this library)。

  • Chrome应用通过chrome.serial通过USB接收这些OSC捆绑包(使用this library),并将其显示在画布元素上

到目前为止,非常好。

接下来,我想通过UDP将这些消息发送到TUIO客户端。作为第一步,我确保我可以通过UDP发送OSC消息(再次使用osc.js),这确实有效。

以下是我的Chrome应用看到的一些示例消息:

// console.log(JSON.stringify(msg)) gives results like this:
{"address":"/p0","args":[2369,1683,170]}
{"address":"/p1","args":[1906,1752,137]}
{"address":"/p1","args":[1906,1752,137]}

如何将这些转换为TUIO消息?

我尝试将此Chrome应用程序连接到各种示例TUIO客户端实现(节点,浏览器,Ruby,Python,处理器),结果要么是因为格式错误的消息而导致异常崩溃,要么就是简单什么都不做。

以下是我尝试过的一些消息格式,但没有成功:

osc.send(msg);
osc.send({address:"/tuio/2Dcur", args:msg.args});
osc.send({address:"/tuio/2Dcur", args:["alive"].concat(msg.args)});
osc.send({address:"/tuio/2Dcur", args:["set"].concat(msg.args)});

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

终于发现了我所缺少的东西。我到目前为止使用过的TUIO客户显然希望OSC bundles,所以我的应用应该像这样发送一个包:

my_osc.send({
  timeTag: osc.timeTag(0),
  packets: [
    {address:'/tuio/2Dcur', args: ['alive'].concat(my_session_id)},
    {address:'/tuio/2Dcur', args: ['set'].concat(my_session_id).concat(my_data)}
  ]
});
相关问题