2012-12-12 72 views
1

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

+0

屏幕截图,你可以使用'java.awt.robot'类来模拟触摸输入? – Jonas

+0

我可以使用java.awt.robot发送单个鼠标位置事件,但不是多个(据我所知) – twerdster

回答

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用于发送OSC帧作为请求红色由TUIO。

以下是一些示例代码,用于在循环中向屏幕发送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