新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM7和VC平臺(tái)的高分辨率紅外觸摸屏設(shè)計(jì)

基于ARM7和VC平臺(tái)的高分辨率紅外觸摸屏設(shè)計(jì)

作者: 時(shí)間:2009-12-30 來源:網(wǎng)絡(luò) 收藏
本文中的的觸摸位置的計(jì)算主要是通過遮擋時(shí)與未遮擋時(shí)的光強(qiáng)比來得到的。在判斷觸摸位置時(shí),可以先確定被遮擋的管子,計(jì)算得到被遮擋的大致位置。若被遮擋的管子為第N個(gè)管子,這個(gè)被遮擋的大致位置為L(zhǎng)d,則有:

本文引用地址:http://2s4d.com/article/152166.htm

  Ld=(N-1)×管子的寬度

  由于手指遮擋時(shí)有一定的區(qū)域,所以遮擋時(shí)有兩種可能:其一是在被確定的管子的前面;其二是在被確定的管子處。圖3所示為手指遮擋示意圖。


  為了精確計(jì)算,需要計(jì)算這兩種情況下位置的偏移量△L1和△L2。則有:


  其中,L為第N個(gè)管子被遮擋時(shí)的位置?!鱈1為手指在被確定的管子的前面時(shí)的偏移量?!鱈2為手指在被確定的管子處時(shí)的偏移量,XN為掃描時(shí)采樣第N個(gè)管子接收到的數(shù)據(jù),XNmax為“1”態(tài)時(shí)采樣第N個(gè)管子接收到的數(shù)據(jù).XNmin為“0”態(tài)時(shí)采樣第N個(gè)管子接收到的數(shù)據(jù)。

  2鼠標(biāo)驅(qū)動(dòng)

  作為硬件上的核心控制芯片,只能進(jìn)行采集以得到觸摸位置信息,而無法實(shí)現(xiàn)相應(yīng)的鼠標(biāo)動(dòng)作。所以,必須通過主機(jī)端的驅(qū)動(dòng)程序來實(shí)現(xiàn)。本文中的驅(qū)動(dòng)程序可通過++編程來實(shí)現(xiàn)串口通信和鼠標(biāo)動(dòng)作,從而完成軟件結(jié)合硬件對(duì)鼠標(biāo)的驅(qū)動(dòng)。

  2.1 串口通信

  為了使主機(jī)能夠接收通過串口傳送的觸摸位置,可利用Microsoft公司提供的ActiveX控件Microsoft Communications Control,并通過++編程來實(shí)現(xiàn)串口通信。通過在該控件中的設(shè)置可指定通信串口號(hào),同時(shí)可設(shè)置波特率、校驗(yàn)位、停止位、數(shù)據(jù)位等通信參數(shù),以及接收OnComm事件門限值。其具體代碼如下:


  由于傳統(tǒng)的鼠標(biāo)是一種相對(duì)定位系統(tǒng),它只和前一次鼠標(biāo)的位置坐標(biāo)有關(guān)。而則是一種絕對(duì)坐標(biāo)系,與相對(duì)定位系統(tǒng)有著本質(zhì)的區(qū)別。因此,本文通過主機(jī)從串口接收到的觸摸點(diǎn)坐標(biāo)數(shù)據(jù)并進(jìn)行轉(zhuǎn)換來得到屏幕坐標(biāo),即的坐標(biāo)范圍為(0,0)到(2048,768)。而只能通過串口發(fā)送字節(jié),且只能發(fā)送小于256的數(shù)據(jù),所以很難實(shí)現(xiàn)直接傳輸。因此,在數(shù)據(jù)發(fā)送時(shí),應(yīng)將采集得到的位置數(shù)據(jù)的每個(gè)位上的數(shù)分別進(jìn)行傳送。與此同時(shí),主機(jī)端從串口接收緩沖區(qū)并取出數(shù)據(jù),然后在驅(qū)動(dòng)程序中將這些數(shù)據(jù)重新組合起來以得到觸摸位置信息。另外,為了實(shí)現(xiàn)鼠標(biāo)的不同動(dòng)作,也應(yīng)分別發(fā)送不同的控制字。每次串口通信的數(shù)據(jù)格式如下:



  其中,X為觸摸位置的橫坐標(biāo),X1為X百位上的數(shù),X2為X十位上的數(shù),X3為X個(gè)位上的數(shù);Y為觸摸位置的縱坐標(biāo),Y1為Y百位上的數(shù),Y2為Y十位上的數(shù),Y3為Y個(gè)位上的數(shù)。

  

電容式觸摸屏相關(guān)文章:電容式觸摸屏原理


評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉