基于A(yíng)RM7和VC平臺的高分辨率紅外觸摸屏設計
Ld=(N-1)×管子的寬度
由于手指遮擋時(shí)有一定的區域,所以遮擋時(shí)有兩種可能:其一是在被確定的管子的前面;其二是在被確定的管子處。圖3所示為手指遮擋示意圖。
為了精確計算,需要計算這兩種情況下位置的偏移量△L1和△L2。則有:
其中,L為第N個(gè)管子被遮擋時(shí)的位置?!鱈1為手指在被確定的管子的前面時(shí)的偏移量?!鱈2為手指在被確定的管子處時(shí)的偏移量,XN為掃描時(shí)采樣第N個(gè)管子接收到的數據,XNmax為“1”態(tài)時(shí)采樣第N個(gè)管子接收到的數據.XNmin為“0”態(tài)時(shí)采樣第N個(gè)管子接收到的數據。
2鼠標驅動(dòng)
ARM7作為硬件上的核心控制芯片,只能進(jìn)行采集以得到觸摸位置信息,而無(wú)法實(shí)現相應的鼠標動(dòng)作。所以,必須通過(guò)主機端的驅動(dòng)程序來(lái)實(shí)現。本文中的驅動(dòng)程序可通過(guò)VC++編程來(lái)實(shí)現串口通信和鼠標動(dòng)作,從而完成軟件結合硬件對鼠標的驅動(dòng)。
2.1 串口通信
為了使主機能夠接收ARM7通過(guò)串口傳送的觸摸位置,可利用Microsoft公司提供的ActiveX控件Microsoft Communications Control,并通過(guò)VC++編程來(lái)實(shí)現串口通信。通過(guò)在該控件中的設置可指定通信串口號,同時(shí)可設置波特率、校驗位、停止位、數據位等通信參數,以及接收OnComm事件門(mén)限值。其具體代碼如下:
由于傳統的鼠標是一種相對定位系統,它只和前一次鼠標的位置坐標有關(guān)。而觸摸屏則是一種絕對坐標系,與相對定位系統有著(zhù)本質(zhì)的區別。因此,本文通過(guò)主機從串口接收到的觸摸點(diǎn)坐標數據并進(jìn)行轉換來(lái)得到屏幕坐標,即觸摸屏的坐標范圍為(0,0)到(2048,768)。而ARM7只能通過(guò)串口發(fā)送字節,且只能發(fā)送小于256的數據,所以很難實(shí)現直接傳輸。因此,在數據發(fā)送時(shí),應將采集得到的位置數據的每個(gè)位上的數分別進(jìn)行傳送。與此同時(shí),主機端從串口接收緩沖區并取出數據,然后在驅動(dòng)程序中將這些數據重新組合起來(lái)以得到觸摸位置信息。另外,為了實(shí)現鼠標的不同動(dòng)作,也應分別發(fā)送不同的控制字。每次串口通信的數據格式如下:
其中,X為觸摸位置的橫坐標,X1為X百位上的數,X2為X十位上的數,X3為X個(gè)位上的數;Y為觸摸位置的縱坐標,Y1為Y百位上的數,Y2為Y十位上的數,Y3為Y個(gè)位上的數。
電容式觸摸屏相關(guān)文章:電容式觸摸屏原理
評論