<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 設計應用 > 漢王手寫(xiě)芯片的觸摸屏控制器應用設計

漢王手寫(xiě)芯片的觸摸屏控制器應用設計

作者:北京大學(xué) 楊自鋒 趙建業(yè) 時(shí)間:2007-11-07 來(lái)源:中電網(wǎng) 收藏

引言

在PDA和中高端手機等手持設備中,已經(jīng)成為一種比較常用的輸入設備,用戶(hù)可以通過(guò)在上的點(diǎn)擊和寫(xiě)劃完成與手持設備的交互。此外,由于基于的中文手寫(xiě)輸入法更符合我國各個(gè)文化層次的人使用,因此越來(lái)越多地出現在時(shí)下流行的各種手持設備中。大多數中文手寫(xiě)輸入法完全由軟件來(lái)實(shí)現,將輸入法界面程序和后臺識別算法集成到一起。其好處是不改變系統的硬件結構,而且便于升級;然而,使用商用的手寫(xiě)識別算法,較為高昂的費用和繁重的移植工作,會(huì )大大增加開(kāi)發(fā)成本和延長(cháng)開(kāi)發(fā)周期。若使用開(kāi)源的手寫(xiě)識別源代碼(如kanjipad)進(jìn)行移植開(kāi)發(fā),則一方面涉及移植的工作量問(wèn)題,另一方面識別率比較低。針對以上這些由軟件實(shí)現中文手寫(xiě)輸入法所帶來(lái)的一系列問(wèn)題,本文提出一種在“PXA255微處理器+Linux+Qtopia圖形界面”上由HW006同時(shí)實(shí)現中文手寫(xiě)輸入及觸摸屏控制的設計方案。該方案有以下幾個(gè)優(yōu)點(diǎn):

◇ 軟件方面將觸摸屏驅動(dòng)和手寫(xiě)識別的工作合二為一。
◇ 完全在用戶(hù)空間實(shí)現觸摸屏的驅動(dòng),減少了硬件平臺的依賴(lài)性,降低了驅動(dòng)設計的難度,分層的驅動(dòng)設計思想也不會(huì )破壞原有程序的完整性。
◇ 硬件方面,省去了專(zhuān)用的觸摸屏,降低了成本。
因此,該方案在工作量、成本、難度方面均有著(zhù)明顯的優(yōu)勢,從而大大縮短了開(kāi)發(fā)周期,增強了實(shí)用性。

1  HW006簡(jiǎn)介

HW006是一款漢王手寫(xiě),它內置了觸摸屏控制電路和對外的UART接口,同時(shí)提供了靈活的控制命令接口,可以滿(mǎn)足觸摸屏分離型、觸摸屏一體型等不同情況下的各種應用需求。

1.1  HW006主要功能

◇ 支持6 763個(gè)簡(jiǎn)體中文(GB2312)、52個(gè)英文大小寫(xiě)字母、10個(gè)數字、12個(gè)常用符號的手寫(xiě)識別輸入,并可自由組合,設置識別范圍;
◇ 支持點(diǎn)擊模式、手寫(xiě)模式和混合模式;
◇ 內嵌觸摸屏控制硬件和軟件,可直接與觸摸屏相連接;
◇ 支持異步串行通信接口(UART),通信波特率可設置,便于與各種CPU進(jìn)行通信;
◇ 在手寫(xiě)狀態(tài)下,識別參數可設置。
可見(jiàn),HW006完全可以實(shí)現預想的功能。根據實(shí)際需要,選用混合模式。

1.2  HW006的通信協(xié)議

HW006為從設備,主設備對該芯片發(fā)送控制命令,HW006可以執行相應的功能。

(1) 主設備向手寫(xiě)芯片發(fā)送命令

格式如下:

本文引用地址:http://dyxdggzs.com/article/71389.htm

(2)  手寫(xiě)芯片向主設備發(fā)送數據

這里主要介紹混合模式下的數據格式,如下:

在混合模式下,手寫(xiě)芯片先發(fā)送軌跡坐標,屬性表示該點(diǎn)的狀態(tài):0x00,落筆;0x05,移筆;0x0f,抬筆。EOF表示發(fā)送軌跡結束標志,其值為0xff。之后發(fā)送識別字的編碼,低字節在前,高字節在后。

1.3  命令碼的簡(jiǎn)單介紹

對HW006進(jìn)行操作控制的主要命令碼如表1所列。

表1  HW006的主要命令碼

2  硬件框圖以及通信格式簡(jiǎn)介

硬件框圖如圖1所示。

圖1  硬件框圖

UART通信格式: 上電默認波特率,9 600 bps;數據位,8位;校驗位,無(wú);停止位,1位;先低位后高位。觸摸屏采用了4線(xiàn)電阻屏,在觸摸屏與HW006連線(xiàn)處,需要加上濾波電容。

上電初始化時(shí),默認工作模式為點(diǎn)擊模式。用戶(hù)可根據應用需要,設置相應工作模式。使用混合模式時(shí)必須通過(guò)UART給系統發(fā)送4個(gè)數據X1、Y1、X2、Y2,以確定矩形手寫(xiě)區域的范圍。

3  手寫(xiě)輸入法及觸摸屏驅動(dòng)的實(shí)現

選用的圖形界面系統Qtopia是由Trolltech公司所開(kāi)發(fā)的專(zhuān)門(mén)用于嵌入式Linux操作系統電子設備的應用平臺,這里使用開(kāi)放源代碼的Qtopia PDA版。它具有可定制的用戶(hù)界面和集成的組件,其組件包括窗口操作界面、游戲和多媒體、PIM應用程序、輸入法、本地化支持和無(wú)線(xiàn)支持等。對于輸入法,它提供了一系列的通用API,便于開(kāi)發(fā)用戶(hù)自己的輸入法。

Qtopia軟件平臺可分為4個(gè)層次,如圖2所示。

圖2  Qtopia軟件平臺層次結構

其中在Qt/Embedded層提供了觸摸屏的API,在Qtopia層提供了輸入法的API。需要完成的工作: ①  在Linux層編寫(xiě)觸摸屏庫,提供給Qt/Embedded層調用;②  改寫(xiě)Qt/Embedded層的觸摸屏API;③  在Qtopia層利用輸入法API完成手寫(xiě)輸入法的手寫(xiě)和識別字的界面。下面詳細介紹以上步驟。  

3.1  在Linux層編寫(xiě)觸摸屏庫

主要是提供設置HW006工作模式、讀/寫(xiě)HW006數據以及對讀到的數據進(jìn)行發(fā)送的接口函數,最終編譯成動(dòng)態(tài)鏈接庫,可供上層的應用程序調用。主要的接口函數及程序的主要代碼如下:

(1)  打開(kāi)串口
int *ts_open(const char * device) {

*fd=open(device,O_RDWR| O_NONBLOCK);  
if ( (*fd) < 0 ){
printf(open error!n);
return NULL;
}
return fd;
}

(2)  設置HW006的混合工作模式
void ts_config(int* fd) {

write(*fd,&SET_96,2); //設置HW006波特率為9600bps
write(*fd,&SET_X1,2);
write(*fd,&SET_Y1,2);
write(*fd,&SET_X2,2);
write(*fd,&SET_Y2,2);//設置手寫(xiě)區域4個(gè)角的坐標
write(*fd,&WAIT_T,2);//設置漢字識別等待時(shí)間
write(*fd,&REG_SCOPE,2);//設置識別范圍
write(*fd,&REG_CAN,2);//設置識別字候選個(gè)數

}

(3)  讀串口
int ts_read(int *fd,unsigned char *buf) {
int res;
res=read(*fd,buf,3);
return res;
}

(4) 發(fā)送到有名管道
void sendFifo(unsigned char* buf,int i) {

fd=open(/dev/myfifo,O_WRONLY | O_NONBLOCK);
write(fd,buf,i);
close(fd);
}

3.2  改寫(xiě)Qt/Embedded層的觸摸屏API

對讀到的原始數據進(jìn)行處理,包括變換、校正、分發(fā)等。Qt/Embedded中提供觸摸屏API的文件是qwsmouse_qws.cpp,其中的類(lèi)QCalibratedMouseHandler實(shí)現了對觸摸屏數據的讀取及其處理。本文所用的HW006是8位的,而分辨率是640



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>