1

我有一个嵌入式 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。当我触摸屏幕时,没有任何反应。有人对此有想法吗?

4

1 回答 1

1

你能真正启动一个网络记录器(如 tcpdump、Wireshark)并查看 OSC 数据包是否真的从你的服务器发送?

错误

OSC 错误 -3:名称解析暂时失败

看起来像是服务器端的问题,因此要消除客户端作为错误源,请选择与您不同的服务(跟踪器)。http://tuio.org/?software有一个很好的概述,如果你身边有一个 Android Fon,试试http://code.google.com/p/tuiodroid/来模拟 OSC 数据包。

现在给客户。qTUIO 实际上远未完成,因此很有可能它是罪魁祸首。测试数据包是否被正确接收和转发的一个好方法是查看代码中重载的 event() 方法,看看它是否触发,如果是,使用哪种类型。我只能告诉你,使用 CCV 1.4 作为跟踪器可以正常工作。此外,如果可能,请使用绘画示例,因为它实际上将触摸事件转换为绘画事件,减少了可能出错的魔法。

在嵌入式领域工作只是为错误源添加了另一种特殊的味道。你可能有字节序问题吗?时间问题?

您能否提供有关您正在使用的库、操作系统、硬件等版本的更多信息?

我很乐意更新这篇文章以提供一个真正的解决方案,一旦清楚,是什么组件导致了错误。祝你好运!

于 2012-08-16T19:56:48.283 回答