2012-12-12 47 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