将传入的 OSC 消息转换为 TUIO 2Dcur
Convert incoming OSC message to TUIO 2Dcur
以下是目前有效的方法:
微控制器读取 2 个触摸表面,每 10 毫秒通过 USB 将它们输出为单个 OSC 包(使用 this library)。
Chrome 应用程序通过 chrome.serial
通过 USB 接收这些 OSC 包(使用 this library)并将它们显示在 canvas 元素上
到目前为止,还不错。
接下来,我想通过 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)});
我做错了什么?
终于发现我错过了什么。到目前为止我使用的 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)}
]
});
以下是目前有效的方法:
微控制器读取 2 个触摸表面,每 10 毫秒通过 USB 将它们输出为单个 OSC 包(使用 this library)。
Chrome 应用程序通过
chrome.serial
通过 USB 接收这些 OSC 包(使用 this library)并将它们显示在 canvas 元素上
到目前为止,还不错。
接下来,我想通过 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)});
我做错了什么?
终于发现我错过了什么。到目前为止我使用的 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)}
]
});