2010-08-12 40 views
0

我們有一個Cirque觸摸板。 http://www.cirque.com/downloads/docs/tsm9925.pdf如何閱讀從Cirque觸控板在Linux中的水龍頭的絕對位置

現在我們想要使用c \ C++應用程序從此觸摸板讀取水龍頭的絕對位置。不幸的是,公司只開發了Windows驅動程序,但我們需要在Linux中閱讀職位。我們嘗試使用/ dev/input/eventN子系統,但只接收手指移動的方向和手指移動的速度。

是否有可能,我們該怎麼做?

+1

觸控板很少報告絕對位置。 – relet 2010-08-12 18:52:03

+0

@relet。你是對的。我直接聯繫了Cirque,他們報告說他們的觸摸板只能告訴我們方向和速度,並且不可能從中讀取絕對位置。感謝所有回覆。 – OJ287 2010-08-18 01:43:28

回答

1

從您提供的鏈接:

For custom functionality at the product design stage, we offer software that 
allows OEMs to enable, disable or personalize advanced settings and/or 
reprogram the touch sensitive area. 

我建議您與太陽直接

0

觸摸板很少報道的絕對位置。

只是讓你有一些答案接受;)

1

這是如何工作的:

冰斗智能CAT(型號GDU410 - 這是一個古老的模型)報告8字節包。 最初的分組如下:

Byte 0, bit 0: Left button 
Byte 0, bit 1: Right button 
Byte 0, bit 2: Side buttons (they cannot be distinguished) 
Byte 1: Relative X data 
Byte 2: Relative Y data 
Bytes 3-7: 0 

要切換到絕對模式,你必須發送下面的USB控制請求到設備:使用

unsigned char buf[8]; 
do { 
    Usb_Control_Request(Type=0xC1, Request=0x6A, Index=0, 
     Value=0, Data Length=8, Data Buffer=buf) 
} while(buf[0] & 8); 
Usb_Control_Request(Type=0x41, Request=0x66, Index=0xBB, Value=1, No data) 
do { ... /* C1/6A, see above */ } while(buf[0] & 8); 
Usb_Control_Request(Type=0x41, Request=0x66, Index=0xB5, Value=0x3E0, No data) 
do { ... /* C1/6A */ } while(buf[0] & 8); 
Usb_Control_Request(Type=0x41, Request=0x66, Index=0xA2, Value=0xFEE, No data) 
do { ... /* C1/6A */ } while(buf[0] & 8); 
Usb_Control_Request(Type=0x41, Request=0x66, Index=0xB4, Value=0xE, No data) 
do { ... /* C1/6A */ } while(buf[0] & 8); 
Usb_Control_Request(Type=0x41, Request=0x64, Index=0, Value=0, No data) 
do { ... /* C1/6A */ } while(buf[0] & 8); 

也許在Linux中,這是可以做到「的libusb」。雖然我已經在Linux下做了一些驅動程序開發,但我還沒有使用「libusb」。

這樣做後的8字節的數據包是這樣的:

Byte 0: Buttons, as before 
Bytes 1-3: 0 
Byte 4: low 8 bits of X finger position 
Byte 5: bits 0-2: high 3 bits of X finger position 
     bits 3-7: low 5 bits of Y finger position 
Byte 6: bits 0-5: high 6 bits of Y finger position 
Byte 7, low 7 (?) bits: non-zero if finger touches pad, 0 if not 
     some pads report the finger pressure; 
     MAYBE this is done in this field. 

Finger positions: 
X position: left ~0x790, right ~0x70 
Y position: top ~0, bottom ~0x5B0 

由太陽所提供的設備驅動程序使用的絕對位置模式來執行依賴於絕對手指位置滾動和類似的功能。

相關問題