1

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

4

1 回答 1

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) 下载oscsend以按照 TUIO的要求发送 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 的 Touch-Pack示例之一,您可以看到多个触摸点。这是FruitNinja Lite的屏幕截图

在此处输入图像描述

于 2012-12-16T01:04:52.037 回答