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

    曙海教育集團論壇Win CE 專區Wince技術討論區 → WinCE中的Touch Panel驅動介紹


      共有9045人關注過本帖樹形打印

    主題:WinCE中的Touch Panel驅動介紹

    美女呀,離線,留言給我吧!
    wangxinxin
      1樓 個性首頁 | 博客 | 信息 | 搜索 | 郵箱 | 主頁 | UC


    加好友 發短信
    等級:青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊:2010-11-12 11:08:23
    WinCE中的Touch Panel驅動介紹  發帖心情 Post By:2010-11-16 11:29:14

    WinCE中的Touch Panel驅動是由GWES模塊來管理的,Touch Panel驅動接收用戶的觸摸信息,并將其轉換為屏幕上的坐標信息,傳給GWES模塊。在WinCE中,Touch Panel驅動是分層的,分為MDD層和PDD層,這和其他WinCE設備驅動是一樣的。MDD層由微軟提供,用戶只需要實現MDD和PDD層間的DDSI函數就可以了。如圖


            WinCE中的GWES模塊負責加載和管理Touch Panel驅動,Touch Panel的MDD層向上提供DDI接口,PDD層是針對硬件的實現,對MDD層提供DDSI接口。


    1 Touch Panel驅動中的數據結構

    (1) TOUCH_PANEL_SAMPLE_FLAGS

    用于描述一個采樣點的信息,這些信息被定義在一個枚舉結構中:

                   enum enumTouchPanelSampleFlags {

                     TouchSampleValidFlag = 0x01,

                     TouchSampleDownFlag = 0x02,

                     TouchSampleIsCalibratedFlag = 0x04,

                     TouchSamplePreviousDownFlag = 0x08,

                     TouchSampleIgnore = 0x10,

                     TouchSampleMouse = 0x40000000

                   };

                   TouchSampleValidFlag:一個有效的采樣值

                   TouchSampleDownFlag:第一次按觸摸屏時,返回該flag

                   TouchSampleIsCalibratedFlag:采樣的x和y坐標值不需要再被校驗了

                   TouchSamplePreviousDownFlag:表示上一次采樣狀態是按在觸摸屏上

                   TouchSampleIgnore:忽略這次采樣值

                   TouchSampleMouse:預留


    (2) TPDC_CALIBRATION_POINT

    用于描述一個校驗點的相關信息,結構如下:

                   struct TPDC_CALIBRATION_POINT {

                     INT PointNumber;

                     INT cDisplayWidth;

                     INT cDisplayHeight;

                     INT CalibrationX;

                     INT CalibrationY;

                   };

                   PointNumber:校驗點索引值,用于描述校驗點在LCD上的位置

                                                    0:中間

                                                    1:左上

                                                    2:左下

                                                    3:右下

                                                    4:右上

                   cDisplayWidth:顯示的寬度

                   cDisplayHeight:顯示的高度

                   CalibrationX:校驗點的x坐標值

                   CalibrationY:校驗點的y坐標值


    (3) TPDC_CALIBRATION_POINT_COUNT

    用于描述需要校驗的點的個數,結構如下:

                   struct TPDC_CALIBRATION_POINT_COUNT {

                      DDI_TOUCH_PANEL_CALIBRATION_FLAGS flags;

                      INT cCalibrationPoints;

                   };

                   flags:一般為0

                   cCalibrationPoints:需要校驗的點的個數,一般是5


    (4) gIntrTouch和gIntrTouchChanged

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

                            DWORD gIntrTouch        = SYSINTR_NOP;

    DWORD gIntrTouchChanged = SYSINTR_NOP;

    gIntrTouch用于描述觸摸屏中斷,要和硬件的觸摸屏中斷相關聯。

    gIntrTouchChanged用于在觸摸屏按下后,每隔一段時間進行一次采樣,應該和硬件的一個定時器中斷相關聯。

    這兩個值應該在DdsiTouchPanelEnable(..)函數中和硬件中斷關聯,并在函數DdsiTouchPanelGetPoint(..)中根據情況清除相應的中斷。


    2 MDD層API

            MDD為上層導出所需的Touch Panel驅動接口函數,上層通過這些函數可以完成對Touch Panel的操作,下面會介紹這些函數的功能。

    (1) BOOL TouchPanelEnable(PFN_TOUCH_PANEL_CALLBACK pfnCallback):

    使能Touch Panel設備,用于初始化Touch Panel。

           pfnCallback:指向處理Touch Panel事件的回調函數


    (2) Void TouchPanelDisable(void):

    禁用Touch Panel設備。


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

    獲得Touch Panel設備的相關信息。

           iIndex:索引值

                            TPDC_SAMPLE_RATE_ID:采樣率信息

                            TPDC_CALIBRATION_POINT_COUNT_ID:采樣點個數信息

                            TPDC_CALIBRATION_POINT_ID:采樣點坐標信息

                lpOutput:指向一個內存區域,用于存放獲得的相關信息


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

    將輸入的未經過校驗的坐標信息轉換成校驗后的坐標信息。

           UncalX:輸入的X坐標

                   UncalY:輸入的Y坐標

           pCalX:校驗后的X坐標

           pCalY: 校驗后的Y坐標


    (5) VOID TouchPanelPowerHandler(BOOL bOff):

    Touch Panel的電源控制函數。

           bOff:TRUE表示關閉電源,FALSE表示打開電源


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

    獲得Touch Panel的坐標。

           pRawX:觸摸屏的X坐標

           PRawY:觸摸屏的Y坐標


    (7) VOID TouchPanelReadCalibrationAbort(void):

    終止當前的校驗。


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


    支持(0中立(0反對(0單帖管理 | 引用 | 回復 回到頂部

    返回版面帖子列表

    WinCE中的Touch Panel驅動介紹








    簽名
    主站蜘蛛池模板: 国产精品成人观看视频国产奇米| 欧美18www| 国产成人19禁在线观看| hkpic比思特区东方美人| 无翼乌邪恶工番口番邪恶| 亚洲欧洲自拍拍偷综合| 神乃麻美三点尽露写真| 国产孕妇孕交视频| 99久久久国产精品免费牛牛四川| 少妇饥渴XXHD麻豆XXHD骆驼| 九九九精品视频免费| 欧美日韩一区二区三区视视频| 卡一卡二卡三免费专区2| 视频精品一区二区三区| 国产精品正在播放| 东北女人下面痒大叫| 日本一区高清视频| 亚洲国产欧美视频| 欧美综合色另类图片区| 又爽又黄无遮挡高清免费视频| 香港国产特级一级毛片| 国产精品萌白酱在线观看| 一级毛片在线完整观看| 新婚夜的娇吟声| 亚洲av无码乱码在线观看| 欧美日韩中文国产一区| 再深点灬舒服灬免费观看| 色偷偷人人澡人人爽人人模| 国产特级淫片免费看| 99精品久久久久久久婷婷| 女同性之间同床互摸视频| 久久久国产乱子伦精品| 日韩精品免费一线在线观看| 亚洲欧美日韩久久精品第一区| 特黄特色大片免费| 嘟嘟嘟www在线观看免费高清| 色视频综合无码一区二区三区| 国产福利一区二区三区在线视频 | 无码日韩精品一区二区免费暖暖| 亚洲人成网站在线观看青青| 欧美日韩国产在线人成|