2016-04-01 3 views
2

Вот что работает прямо сейчас:Преобразование входящего сообщения OSC в TUIO 2Dcur

  • Микроконтроллер считывает 2 сенсорные поверхности, выводит их в виде единого OSC пучка (с использованием this library) каждые 10 мс над USB.

  • Chrome приложение получает эти OSC пучки (с использованием this library) через USB с помощью chrome.serial и отображает их на холсте элемент

До сих пор, так хорошо.

Далее, я хочу отправить эти сообщения через UDP клиенту TUIO. В качестве первого шага я убедился, что могу отправлять сообщения OSC по UDP (опять же используя 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-клиента (Node, browser, Ruby, Python, Processing), и результаты будут либо сбой при исключении из-за неверного сообщения, либо просто сделать ничего.

Вот некоторые форматы сообщений, которые я пробовал, но безуспешно:

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

Наконец-то я обнаружил, что мне не хватает. Клиенты 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)} 
    ] 
}); 
Смежные вопросы