Qt Multi-Touch с qTUIO и встроенным mtdev2tuio linux
У меня есть встроенный проект Linux, где я хочу использовать multi-touch с 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. Когда я касаюсь экрана ничего не происходит. У кого-нибудь есть идеи по этому поводу?
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 в painttevents, меньше магии, которая может пойти не так.
Работа во встроенном поле просто добавляет еще одну особенность источникам ошибок. У вас могут быть проблемы с порядком байтов? Сроки проблемы?
Можете ли вы предоставить больше информации о том, какие версии библиотек, ОС, оборудования и т. Д. Вы используете?
Я с удовольствием обновлю этот пост, чтобы дать реальное решение, когда станет ясно, какой компонент вызывает ошибку. Удачи!