是否可以从Matlab向窗口发送多点触摸事件?

时间:2012-12-12 17:09:35

标签: windows matlab multi-touch

我在Matlab中有一个演示,我想从(到操作系统)发送多个触摸事件,就像有人在触摸屏幕一样。我希望能够提供5到10个触摸点及其坐标。 如何在没有触摸输入硬件但安装了触摸驱动程序的机器上完成此操作......?

1 个答案:

答案 0 :(得分:0)

这似乎比人们想象的要复杂一些。 目前,Windows 7上的最佳解决方案使用MultiTouchVista和TUIO。

1)下载MultiTouchVista

2)激活笔并触摸

3)运行Multitouch.Service.Console.exe

4)运行Multitouch.Driver.Console.exe

5)运行Multitouch.Configuration.WPF.exe并选择TUIO

6)根据TUIO的要求下载oscsend以发送OSC帧。

以下是一些示例代码,用于在循环中向屏幕发送5个触摸点。

clear all
u = udp('127.0.0.1',3333);
fopen(u);
fprintf('Opened\n');
pause(0.5);
n = 0;

%%
pause(5);
while 1

    x = 0.5;
    y = 0.5;

    for t = -0.2:0.01:0.2
        oscsend(u , '/tuio/2Dcur' , 'siiiii' , 'alive' , 5*n,5*n+1,5*n+2,5*n+3,5*n+4);
        oscsend(u , '/tuio/2Dcur' , 'sifffff' , 'set' , 5*n,   x + t, y - 0.2, 0, 0, 0);
        oscsend(u , '/tuio/2Dcur' , 'sifffff' , 'set' , 5*n+1, x + t, y - 0.1, 0, 0, 0);
        oscsend(u , '/tuio/2Dcur' , 'sifffff' , 'set' , 5*n+2, x + t, y      , 0, 0, 0);
        oscsend(u , '/tuio/2Dcur' , 'sifffff' , 'set' , 5*n+3, x + t, y + 0.1, 0, 0, 0);
        oscsend(u , '/tuio/2Dcur' , 'sifffff' , 'set' , 5*n+4, x + t, y + 0.2, 0, 0, 0);        
        oscsend(u , '/tuio/2Dcur' , 'siiiii' , 'fseq' ,  5*n,5*n+1,5*n+2,5*n+3,5*n+4);
        pause(0.01);        
    end

    n = n + 1;
    fprintf('Sent\n');
    pause(1);
end

%%

fclose(u);
fprintf('Closed\n');

您可能看不到除移动鼠标以外的任何内容但操作系统正在接收触摸,如果您打开其中一个Microsoft's Touch-Pack示例,则可以看到多个触摸点。下面是FruitNinja Lite

的屏幕截图

enter image description here