这里现在有效:
微控制器读取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]}
我尝试将此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)});
我在这里做错了什么?
答案 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)}
]
});