<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>

    Rss & SiteMap

    曙海教育集團(tuán)論壇 http://www.bjzhda.cn

    曙海教育集團(tuán)論壇
    共3 條記錄, 每頁顯示 10 條, 頁簽: [1]
    [瀏覽完整版]

    標(biāo)題:WinCE中的Touch Panel驅(qū)動(dòng)介紹

    1樓
    wangxinxin 發(fā)表于:2010-11-16 11:29:14

    WinCE中的Touch Panel驅(qū)動(dòng)是由GWES模塊來管理的,Touch Panel驅(qū)動(dòng)接收用戶的觸摸信息,并將其轉(zhuǎn)換為屏幕上的坐標(biāo)信息,傳給GWES模塊。在WinCE中,Touch Panel驅(qū)動(dòng)是分層的,分為MDD層和PDD層,這和其他WinCE設(shè)備驅(qū)動(dòng)是一樣的。MDD層由微軟提供,用戶只需要實(shí)現(xiàn)MDD和PDD層間的DDSI函數(shù)就可以了。如圖


            WinCE中的GWES模塊負(fù)責(zé)加載和管理Touch Panel驅(qū)動(dòng),Touch Panel的MDD層向上提供DDI接口,PDD層是針對(duì)硬件的實(shí)現(xiàn),對(duì)MDD層提供DDSI接口。


    1 Touch Panel驅(qū)動(dòng)中的數(shù)據(jù)結(jié)構(gòu)

    (1) TOUCH_PANEL_SAMPLE_FLAGS

    用于描述一個(gè)采樣點(diǎn)的信息,這些信息被定義在一個(gè)枚舉結(jié)構(gòu)中:

                   enum enumTouchPanelSampleFlags {

                     TouchSampleValidFlag = 0x01,

                     TouchSampleDownFlag = 0x02,

                     TouchSampleIsCalibratedFlag = 0x04,

                     TouchSamplePreviousDownFlag = 0x08,

                     TouchSampleIgnore = 0x10,

                     TouchSampleMouse = 0x40000000

                   };

                   TouchSampleValidFlag:一個(gè)有效的采樣值

                   TouchSampleDownFlag:第一次按觸摸屏?xí)r,返回該flag

                   TouchSampleIsCalibratedFlag:采樣的x和y坐標(biāo)值不需要再被校驗(yàn)了

                   TouchSamplePreviousDownFlag:表示上一次采樣狀態(tài)是按在觸摸屏上

                   TouchSampleIgnore:忽略這次采樣值

                   TouchSampleMouse:預(yù)留


    (2) TPDC_CALIBRATION_POINT

    用于描述一個(gè)校驗(yàn)點(diǎn)的相關(guān)信息,結(jié)構(gòu)如下:

                   struct TPDC_CALIBRATION_POINT {

                     INT PointNumber;

                     INT cDisplayWidth;

                     INT cDisplayHeight;

                     INT CalibrationX;

                     INT CalibrationY;

                   };

                   PointNumber:校驗(yàn)點(diǎn)索引值,用于描述校驗(yàn)點(diǎn)在LCD上的位置

                                                    0:中間

                                                    1:左上

                                                    2:左下

                                                    3:右下

                                                    4:右上

                   cDisplayWidth:顯示的寬度

                   cDisplayHeight:顯示的高度

                   CalibrationX:校驗(yàn)點(diǎn)的x坐標(biāo)值

                   CalibrationY:校驗(yàn)點(diǎn)的y坐標(biāo)值


    (3) TPDC_CALIBRATION_POINT_COUNT

    用于描述需要校驗(yàn)的點(diǎn)的個(gè)數(shù),結(jié)構(gòu)如下:

                   struct TPDC_CALIBRATION_POINT_COUNT {

                      DDI_TOUCH_PANEL_CALIBRATION_FLAGS flags;

                      INT cCalibrationPoints;

                   };

                   flags:一般為0

                   cCalibrationPoints:需要校驗(yàn)的點(diǎn)的個(gè)數(shù),一般是5


    (4) gIntrTouch和gIntrTouchChanged

    這是兩個(gè)被MDD層用到的中斷,需要在PDD層中定義,如下:

                            DWORD gIntrTouch        = SYSINTR_NOP;

    DWORD gIntrTouchChanged = SYSINTR_NOP;

    gIntrTouch用于描述觸摸屏中斷,要和硬件的觸摸屏中斷相關(guān)聯(lián)。

    gIntrTouchChanged用于在觸摸屏按下后,每隔一段時(shí)間進(jìn)行一次采樣,應(yīng)該和硬件的一個(gè)定時(shí)器中斷相關(guān)聯(lián)。

    這兩個(gè)值應(yīng)該在DdsiTouchPanelEnable(..)函數(shù)中和硬件中斷關(guān)聯(lián),并在函數(shù)DdsiTouchPanelGetPoint(..)中根據(jù)情況清除相應(yīng)的中斷。


    2 MDD層API

            MDD為上層導(dǎo)出所需的Touch Panel驅(qū)動(dòng)接口函數(shù),上層通過這些函數(shù)可以完成對(duì)Touch Panel的操作,下面會(huì)介紹這些函數(shù)的功能。

    (1) BOOL TouchPanelEnable(PFN_TOUCH_PANEL_CALLBACK pfnCallback):

    使能Touch Panel設(shè)備,用于初始化Touch Panel。

           pfnCallback:指向處理Touch Panel事件的回調(diào)函數(shù)


    (2) Void TouchPanelDisable(void):

    禁用Touch Panel設(shè)備。


    (3) BOOL TouchPanelGetDeviceCaps(INT iIndex, LPVOID lpOutput ):

    獲得Touch Panel設(shè)備的相關(guān)信息。

           iIndex:索引值

                            TPDC_SAMPLE_RATE_ID:采樣率信息

                            TPDC_CALIBRATION_POINT_COUNT_ID:采樣點(diǎn)個(gè)數(shù)信息

                            TPDC_CALIBRATION_POINT_ID:采樣點(diǎn)坐標(biāo)信息

                lpOutput:指向一個(gè)內(nèi)存區(qū)域,用于存放獲得的相關(guān)信息


    (4) VOID TouchPanelCalibrateAPoint(INT32 UncalX, INT32 UncalY, INT32* pCalX, INT32* pCalY):

    將輸入的未經(jīng)過校驗(yàn)的坐標(biāo)信息轉(zhuǎn)換成校驗(yàn)后的坐標(biāo)信息。

           UncalX:輸入的X坐標(biāo)

                   UncalY:輸入的Y坐標(biāo)

           pCalX:校驗(yàn)后的X坐標(biāo)

           pCalY: 校驗(yàn)后的Y坐標(biāo)


    (5) VOID TouchPanelPowerHandler(BOOL bOff):

    Touch Panel的電源控制函數(shù)。

           bOff:TRUE表示關(guān)閉電源,F(xiàn)ALSE表示打開電源


    (6) BOOL TouchPanelReadCalibrationPoint(INT* pRawX, INT* pRawY):

    獲得Touch Panel的坐標(biāo)。

           pRawX:觸摸屏的X坐標(biāo)

           PRawY:觸摸屏的Y坐標(biāo)


    (7) VOID TouchPanelReadCalibrationAbort(void):

    終止當(dāng)前的校驗(yàn)。


    (8) VOID TouchPanelSetCalibration(INT32 cCalibrationPoints, INT32* pScreenXBuffer, INT32* pScreenYBuffer, INT32* pUncalXBuffer, INT32* pUncalYBuffer):

    共3 條記錄, 每頁顯示 10 條, 頁簽: [1]

    Copyright © 2000 - 2009 曙海教育集團(tuán)
    Powered By 曙海教育集團(tuán) Version 2.2
    Processed in .03125 s, 2 queries.
    主站蜘蛛池模板: 亚洲第一页中文字幕| 国产精品一区二区三区高清在线| 亚洲a∨无码男人的天堂| 男女一边桶一边摸一边脱视频免费 | 最近韩国免费观看hd电影国语| 午夜伦情电午夜伦情影院| 高清国产一级毛片国语| 国内精品久久人妻互换| 国产免费av一区二区三区| 亚洲一区二区三区在线播放| 激情国产白嫩美女在线观看| 国产twink男同chinese| 黄色网站在线免费观看| 在线a人片天堂免费观看高清| 中文字幕日韩一区二区三区不卡| 日韩中文字幕不卡| 亚洲欧美成人中文在线网站| 男人的天堂毛片| 国产一级一级毛片| 高h全肉动漫在线观看| 国产色无码精品视频国产| 七次郎最新首页在线视频| 无码国内精品人妻少妇蜜桃视频| 亚洲免费在线视频| 欧美日韩a级片| 免费播看30分钟大片| 精品少妇人妻av一区二区| 国产大片www| 2021在线永久免费视频| 国产视频第二页| аⅴ天堂中文在线网| 成人做受视频试看60秒| 久久精品国产一区二区三区不卡 | 国产精品福利久久| www夜插内射视频网站| 性高湖久久久久久久久| 久久精品乱子伦免费| 暴力调教一区二区三区| 亚洲欧美精品中文字幕| 永久看一二三四线| 午夜第九达达兔鲁鲁|