Qt Multi-Touch со встроенным linux qTUIO и mtdev2tuio

У меня есть встроенный проект Linux, в котором я хочу использовать мультитач с Qt. Я смотрел на qTUIO ( https://github.com/x29a/qTUIO ), и он выглядит отличный.

Я кросс-компилировал библиотеку qTUIO и развернул ее на плате.

Я также выполнил кросс-компиляцию и развернул требования к «серверу» TUIO:

На плате я запустил «сервер»:

./mtdev2tuio /dev/input/touchscreen osc.udp://127.0.0.1:3333/
Sending OSC/TUIO packets to osc.udp://127.0.0.1:3333/

Просто чтобы убедиться, что он считывает устройство ввода, я также сделал следующее и увидел «сбой в разрешении имени», когда я двигал пальцем по сенсорному экрану:

./mtdev2tuio /dev/input/touchscreen osc.udp://localhost:3333/
Sending OSC/TUIO packets to osc.udp://localhost:3333/
...
OSC error -3: Temporary failure in name resolution
OSC error -3: Temporary failure in name resolution
OSC error -3: Temporary failure in name resolution
OSC error -3: Temporary failure in name resolution
OSC error -3: Temporary failure in name resolution
...

Затем я запустил версию qTUIO примера «pinchzoom» на плате, и она работает, как показано ниже, с этим выводом:

# ./pinchzoom -qws
graphicsview initialized 
listening to TUIO messages on UDP port 3333

Итак, у меня есть сервер, утверждающий, что он интерпретирует мои прикосновения и отправляет их по UDP на порт 3333, а приложение qt утверждает, что читает эти события TUIO и передает их в Qt. При касании экрана ничего не происходит. У кого-нибудь есть идеи по этому поводу?


person PhilBot    schedule 16.08.2012    source источник


Ответы (1)


можете ли вы запустить сетевой регистратор (например, tcpdump, Wireshark) и посмотреть, действительно ли пакеты OSC отправляются с вашего сервера?

Ошибка

Ошибка OSC -3: временный сбой в разрешении имен

похоже на проблему на стороне вашего сервера, поэтому, чтобы исключить клиент как источник ошибки, выберите службу (трекер), отличную от вашей. http://tuio.org/?software содержит хороший обзор, если у вас есть Android Fon. , попробуйте http://code.google.com/p/tuiodroid/ для имитации пакетов OSC. .

Теперь к клиенту. qTUIO на самом деле далеко не готов, поэтому есть большая вероятность, что он виноват. Хороший способ проверить, правильно ли принимаются и пересылаются пакеты, — посмотреть на перегруженный метод event() в вашем коде и посмотреть, срабатывает ли он, и если да, то с каким типом. Могу только сказать, что с CCV 1.4 в качестве трекера все работало нормально. Кроме того, по возможности используйте пример с краской, так как он практически переводит touchevents в paintevents, меньше волшебства, которое может пойти не так.

Работа во встроенном поле просто добавляет еще один особый оттенок источникам ошибок. Может быть, у вас есть проблемы с порядком байтов? Проблемы со временем?

Можете ли вы предоставить дополнительную информацию о том, какие версии библиотек, ОС, оборудования и т. д. вы используете?

Я с удовольствием обновлю этот пост, чтобы предоставить реальное решение, как только станет ясно, какой компонент вызывает ошибку. Удачи!

person x29a    schedule 16.08.2012
comment
Спасибо за быстрый ответ - у меня действительно все заработало, используя osc.udp://127.0.0.1:3333/. Я перезагрузил плату, и все заработало... В любом случае еще раз спасибо, это потрясающий пакет. Кажется, я могу без проблем использовать сенсорный ввод tslib для ввода с помощью мыши одновременно с жестами. - person PhilBot; 17.08.2012