锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美顶级艳妇交换群宴,午夜一区二区三区在线观看,国产一区999http://m.shnenglu.com/tdweng/category/16105.htmlzh-cnWed, 10 Apr 2013 01:12:26 GMTWed, 10 Apr 2013 01:12:26 GMT60WinCE6.0鐨凟BOOT姒傝 http://m.shnenglu.com/tdweng/articles/141765.html蹇冪窘蹇冪窘Mon, 14 Mar 2011 02:34:00 GMThttp://m.shnenglu.com/tdweng/articles/141765.htmlhttp://m.shnenglu.com/tdweng/comments/141765.htmlhttp://m.shnenglu.com/tdweng/articles/141765.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/141765.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/141765.htmlwince鍗氬 http://www.cnblogs.com/we-hjb

 

涓轟竴涓柊鐨勭‖浠惰澶囧畾鍒?/font>WinCE6.0鎿嶄綔緋葷粺錛屼竴鑸渶瑕佸畬鎴愪互涓嬪嚑涓富瑕佹楠わ細(xì)

1.       閽堝鐗瑰畾鐨勭‖浠惰澶囧垱寤烘澘綰ф敮鎸佸寘(Board Support Package緙╁啓涓?/span>BSP)錛?/span>BSP蹇呴』鍖呮嫭BOOTLOADER銆?/span>OEM閫傞厤灞?/span>(OEM Adaptation Layer緙╁啓涓?/span>OAL)鍜屼竴浜涘繀瑕佺殑椹卞姩銆?/span>

2.       鍒╃敤鍒涘緩鐨?/span>BSP錛屽畾鍒朵竴涓郴緇熻璁?/span>(OS Design)銆傚嵆閫氳繃VS2005鍒涘緩涓涓?/span>Platform Builder鐨勫伐紼嬨傝宸ョ▼鍙紪璇戜駭鐢熸渶緇堢殑榪愯鏃舵槧鍍忔枃浠訛紙Rum-time Image錛夈?/span>

3.       閽堝鏉夸笂鐨勫鍥磋澶囧垱寤虹浉鍏抽┍鍔紝騫舵坊鍔犲埌BSP涓?/span>

4.       閫氳繃鍒涘緩瀛愬伐紼嬪拰Catalog Items鐨勬柟寮忥紝淇敼OS Design銆?/span>

5.       緙栬瘧OS Design錛屼笅杞界紪璇戝緱鍒扮殑榪愯鏃舵槧鍍忔枃浠跺埌鐩爣璁懼銆傛鏃訛紝鍙氳繃榪滅▼璋冭瘯宸ュ叿榪涜璋冭瘯銆?/span>

6.       鍦ㄥ畬鎴愭墍鏈夌殑璋冭瘯宸ヤ綔涔嬪悗錛屽鍑鴻榪愯鏃舵槧鍍忓搴旂殑SDK(Software Development Kit)錛屽簲鐢ㄧ▼搴忕殑寮鍙戜漢鍛樺彲鍩轟簬姝?/span>SDK緙栧啓璇ヨ澶囩殑搴旂敤紼嬪簭銆?/span>

       鍙互鐪嬪嚭錛屽湪鏁翠釜WinCE鎿嶄綔緋葷粺鐨勭Щ妞嶈繃紼嬩腑錛?/span>BSP鐨勭Щ妞嶆槸鏈鍩虹涔熸槸鏈鍏抽敭鐨勪竴姝ャ傝屽垱寤?/span>BSP鐨勮繃紼嬩富瑕佸寘鎷互涓嬪嚑涓唴瀹癸細(xì)

1.       鍒涘緩BOOTLOADER銆?/span>BOOTLOADER鍦ㄥ紑鍙戠殑榪囩▼涓敤浜庝笅杞芥搷浣滅郴緇熸槧鍍忔枃浠躲?/span>

2.       鍒涘緩OAL銆?/span>OAL鏈緇堣閾炬帴鍒板唴鏍告槧鍍忔枃浠訛紝瀹冧富瑕佸畬鎴愮‖浠剁殑鍒濆鍖栧拰綆$悊銆?/span>

3.       鍒涘緩璁懼椹卞姩銆傝澶囬┍鍔ㄦ槸鏉夸笂澶栧洿璁懼鐨勮蔣浠舵敮鎸併?/span>

4.       淇敼榪愯鏃舵槧鍍忕殑閰嶇疆鏂囦歡銆傞厤緗枃浠朵富瑕佸寘鎷?/span>BIB銆?/span>REG絳夋枃浠躲?/span>

BOOTLOADER鐨勪富瑕佷綔鐢ㄦ槸灝嗘搷浣滅郴緇熻繍琛屾椂鏄犲儚鍔犺澆鍒板唴瀛橈紝騫惰煩杞埌OS鐨勫惎鍔ㄧ▼搴忓銆傚畠鐨勮繖涓浣滅敤璺熷墠涓綃囦粙緇嶇殑NBOOT鐨勪綔鐢ㄥ畬鍏ㄤ竴鑷淬?/span>BOOTLOADER鑾峰彇榪愯鏃舵槧鍍忥紙涓鑸搴旂殑鏂囦歡鍚嶄負(fù)NK錛変竴鑸湁涓ょ鏂規(guī)硶銆傚畠鍙互閫氳繃鏈夌嚎榪炴帴鐨勬柟寮忚薄緗戠粶(Ethernet)銆?/span>USB鎴栦覆鍙d粠澶栭儴涓嬭澆NK銆傚畠涔熷彲浠ヤ粠鏈湴鐨勫瓨鍌ㄥ櫒(Flash銆?/span>Hard Disk)涓姞杞?/span>NK銆傞氬父錛?/span>BOOTLOADER閫氳繃Ethernet涓嬭澆鎿嶄綔緋葷粺鏄犲儚鏁呭皢鍏剁О涓?/span>EBOOT銆傚湪寮鍙戠殑榪囩▼涓嬌鐢?/span>EBOOT錛屽彲浠ユ彁楂樺紑鍙戞晥鐜囥傞氳繃浣跨敤EBOOT錛屼綘鍙互寰堝揩閫熺殑涓嬭澆NK鍒扮洰鏍囪澶囦腑銆傝屽埄鐢?/span>Flash緙栫▼宸ュ叿鎴栬呮槸閫氳繃JTAG涓嬭澆鍒欏緢鎱€傚湪涓浜涗駭鍝佹渶緇堝彂甯冩椂錛?/span>EBOOT鏄彲浠ュ幓鎺夌殑錛屼絾涔熸湁涓浜涘垯蹇呴』鍖呮嫭BOOTLOADER錛屽儚X86鐨勫鉤鍙板氨鏄姝ゃ?/span>

鑷蟲錛屾垜浠凡緇忎簡瑙d簡EBOOT鐨勪富瑕佸姛鑳斤紝涓轟簡瀹炵幇榪欎簺鍔熻兘錛?/span>EBOOT蹇呴』瀹屾垚浠ヤ笅宸ヤ綔錛?/span>

1.       鍒濆鍖?/span>MCU銆傚寘鎷垵濮嬪寲MCU鐨勭浉鍏沖瘎瀛樺櫒銆佷腑鏂佺湅闂ㄧ嫍銆佺郴緇熸椂閽熴佸唴瀛樺拰MMU銆傚墠闈㈠嚑欏硅窡NBOOT鍩烘湰涓鑷達(dá)紝浣嗚繖閲屽鍔犱簡瀵?/span>MMU鐨勫垵濮嬪寲銆?/span>

2.       鍦ㄥ畬鎴愭墍鏈夌殑鍒濆鍖栧伐浣滀箣鍚庯紝璋冪敤BootloaderMain()銆傝繖涓嚱鏁扮殑瀹氫箟鍦?/span>WinCE6.0涓搴旂殑鏂囦歡鏄?/span>C:"WINCE600"PLATFORM"COMMON"SRC"COMMON"BOOT"BLCOMMON"blcommon.c

3.       BootloaderMain()涓昏渚濇璋冪敤浠ヤ笅鍑犱釜鍑芥暟錛?/span>OEMDebugInit()銆?/span>OEMPlatformInit錛堬級(jí)銆?/span>OEMPreDownload錛堬級(jí)銆?/span>OEMLaunch錛堬級(jí)錛岃岃繖浜涘嚱鏁板繀欏葷敱EBOOT鐨勪唬鐮佹潵瀹炵幇銆?/span>

4.       鏈緇堣煩杞埌OAL.exe鐨?/span>StartUp澶勶紝榪涜屽惎鍔?/span>WinCE鎿嶄綔緋葷粺銆?/span>

鏁翠釜嫻佺▼濡備笅鍥炬墍紺猴細(xì)           

      

     EBOOT鐨勪唬鐮佸彲鍙傝僀:"WINCE600"PLATFORM"DEVICEEMULATOR"SRC"BOOTLOADER"EBOOT鐩綍銆傝繖閲岄拡瀵筍3C2410鐨凟BOOT鍋氬嚑鐐硅鏄庛傚墠涓綃囦粙緇峃BOOT鍔犺澆EBOOT鐨勬柟娉曟椂鎻愬埌錛孨BOOT蹇呴』灝咵BOOT鏀懼湪鍐呭瓨涓寚瀹氱殑浣嶇疆錛岃繖涓綅緗槸鐢盓BOOT鐨勬潵鍐沖畾鐨勩傚叿浣撶殑錛屽湪EBOOT涓殑浣撶幇鏄痓oot.bib閲岀殑鍐呭瓨閰嶇疆錛屽涓嬪浘鎵紺恒?

     

     NBOOT鍔犺澆EBOOT鍒板唴瀛樼殑鍦板潃蹇呴』涓庢鍦板潃瀵瑰簲銆傜敱浜庡湪NBOOT涓病鏈変嬌鐢?/span>MMU錛屾墍浠?/span>NBOOT浣跨敤鐨勫疄闄呭湴鍧搴旇涓?/span>0x30021000錛屽惁鍒欑郴緇熷皢涓嶈兘姝e父鍚姩銆傜浜岀偣錛屽鏋滄病鏈夐噰鐢?/span>NBOOT鍔犺澆EBOOT鐨勬柟娉曪紝鑰屾槸灝?/span>EBOOT鐩存帴瀛樺偍鍦?/span>NOR Flash涓紝姝ゆ椂蹇呴』鍦?/span>EBOOT鐨勪唬鐮佷腑瀹炵幇鑷姞杞界殑榪囩▼錛屽嵆灝?/span>NOR Flash涓殑EBOOT鍏ㄩ儴鍔犺澆鍒?/span>RAM涓紝騫舵墽琛岋紝瀹炵幇浠g爜濡備笅:


;------------------------------------------------------------------------------
;   Copy boot loader to memory

        ands    r9, pc, #
0xFF000000     ; see if we are in flash or in ram
        bne     
%f20                    ; go ahead if we are already in ram

        ; This 
is the loop that perform copying.
        ldr     r0, 
= 0x21000           ; offset into the RAM 
        add     r0, r0, #PHYBASE        ; add physical 
base
        mov     r1, r0                  ; (r1) copy destination
        ldr     r2, 
=0x0                ; (r2) flash started at physical address 0
        ldr     r3, 
=0x10000            ; counter (0x40000/4)
10      ldr     r4, [r2], #4
        str     r4, [r1], #
4
        subs    r3, r3, #
1
        bne     
%b10

        ; Restart from the RAM position after copying.
        mov pc, r0
        nop
        nop
        nop

        ; Shouldn
't get here.
        b       .
      EBOOT鍦ㄥ疄鐜板繀澶囧姛鑳界殑鍓嶆彁涓嬶紝鎴戜滑榪樺彲浠ユ墿灞曞叾鍔熻兘錛岃濡傝鍒濆鍖?/span>LCD錛屽茍鏄劇ず鐗瑰畾鐨勫惎鍔ㄧ敾闈紝鏄劇ず鍔犺澆鏄犲儚鐨勮繘搴︾瓑銆?/span>
      鏈枃綺楃暐鐨勪粙緇嶄簡WinCE6.0涓?/span>EBOOT鐨勫唴瀹癸紝浣嗘病鏈夋秹鍙?qiáng)鍏蜂綋鐨勪唬鐮佸疄鐜板Q岀浉鍏充唬鐮佸彲浠ュ弬鑰冪洰褰?/span>C:"WINCE600"PLATFORM"DEVICEEMULATOR"SRC"BOOTLOADER"EBOOT銆傛葷殑鏉ヨ錛?/span>EBOOT鐨勬牳蹇冨姛鑳藉氨鏄紩瀵兼搷浣滅郴緇熸槧鍍忋?/span>


蹇冪窘 2011-03-14 10:34 鍙戣〃璇勮
]]>
錛堣漿錛塛indows CE涓嬭闂墿鐞嗗唴瀛樼殑涓浜涙柟娉曪紒錛?http://m.shnenglu.com/tdweng/articles/140929.html蹇冪窘蹇冪窘Tue, 01 Mar 2011 09:37:00 GMThttp://m.shnenglu.com/tdweng/articles/140929.htmlhttp://m.shnenglu.com/tdweng/comments/140929.htmlhttp://m.shnenglu.com/tdweng/articles/140929.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/140929.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/140929.html1.VirtualAlloc鐢ㄦ潵鍦ㄨ繘紼嬬殑铏氭嫙鍦板潃絀洪棿涓繚鐣欙紙reserve)鎴栬呮彁浜?commit)欏點(diǎn)傚湪淇濈暀鏃朵互64KB涓虹矑搴︼紝鍗充繚鐣欑┖闂翠互64K涓哄崟浣嶃傝屾彁浜よ櫄鎷熷湴鍧鏃訛紝鍒欎互欏?鍏稿瀷澶у皬涓?KB)涓哄崟浣嶃?br>
2.VirtualCopy鐢ㄦ潵緇戝畾涓鍧楃墿鐞嗗唴瀛樺埌褰撳墠榪涚▼铏氭嫙鍦板潃絀洪棿銆傚弬鏁伴噷鐨刲pvSrc鏃㈠彲浠ユ槸鍐呮牳孌電殑铏氭嫙鍦板潃涔熷彲浠ユ槸鐗╃悊鍦板潃(鐢╬age_physical鏉ユ爣璁?銆傚悓鏃惰娉ㄦ剰lpvSrc鐨勫彸縐諱笌鍚︺?br>
3.浣跨敤VirtualAlloc瑕佸寘鍚玏inbase.h;浣跨敤VirtualCopy鏃惰鍖呭惈plfuncs.h.涓よ呴兘瑕侀摼鎺oredll.lib.

4.鍦–E5.0涔嬪墠,浣跨敤VirtualAlloc鑾峰緱鐨勮櫄鎷熷湴鍧絀洪棿鍒嗕負(fù)涓ょ鎯呭艦:
(1)澶у皬鍦?MB浠ヤ笅鏃?浣嶄簬璋冪敤榪涚▼鐨勮櫄鎷熺┖闂翠腑;
(2)澶у皬澶т簬2MB鏃?浣嶄簬鐢ㄦ埛鎬佺殑鍏變韓鍦板潃絀洪棿鍐?0x42000000-0x7E000000 )


1. 濡傛灉copy鐨勭墿鐞嗗湴鍧鍦?12M鑼冨洿鍐咃紝閭d箞鐢變簬闈欐佹槧灝勭殑瀛樺湪錛宭pvSrc鍙互涓洪潤鎬佹槧灝勭殑铏氭嫙鍦板潃錛屼篃鍙互涓虹墿鐞嗗湴鍧銆傞噰鐢ㄥ悗鑰呴渶瑕佹寚瀹歱age_physical錛屽悓鏃秎pvSrc鍙崇Щ8浣嶃?
2. 濡傛灉copy鐨勭墿鐞嗗湴鍧鍦?12M鑼冨洿澶栵紝閭d箞鐢變簬寰蔣鐨勫涓嬭瀹?#8220;
VirtualCopy also supports the PAGE_PHYSICAL flag. You must set this flag when you are mapping physical memory that resides beyond 512 MB, that is, physical memory with an address above 0x1FFFFFFF.”
lpvSrc鍙兘涓虹墿鐞嗗湴鍧錛屽悓鏃墮渶瑕佸彸縐?br>
鍙璁劇疆浜哖AGE_PHYSICAL 涓虹湡錛岄偅涔堝氨闇瑕佹妸lpvSrc鍙崇Щ8浣?/span>

宓屽叆寮忚澶囦笌妗岄潰
PC鐨勪竴涓樉钁椾笉鍚屾槸瀹冪殑搴旂敤紼嬪簭涓氬父闇瑕佺洿鎺ヨ闂煇涓孌電墿鐞嗗唴瀛橈紝榪欏湪椹卞姩紼嬪簭涓鐗╃悊鍐呭瓨鐨勮闂挨涓洪噸瑕侊紝灝ゅ叾鏄儚ARM浣撶郴緇撴瀯涓嬶紝I/O绔彛涔熻鏄犲皠鎴愭煇涓涓墿鐞嗗唴瀛樺湴鍧銆傚洜姝わ紝涓庢闈㈢増鏈?/span>Windows鐩告瘮錛?/span>Windows CE鎻愪緵浜嗙浉瀵圭畝鍗曠殑鐗╃悊鍐呭瓨璁塊棶鏂瑰紡銆傛棤璁烘槸椹卞姩紼嬪簭榪樻槸搴旂敤紼嬪簭閮藉彲浠ラ氳繃API璁塊棶鏌愪竴孌電墿鐞嗗唴瀛樸?/span>

Windows CE鐨勬湁浜涘嚱鏁頒腑闇瑕佺敤鍒扮墿鐞嗗唴瀛樼粨鏋勪綋PHYSICAL_ADDRESS錛?/span> Windows CE鍦?/span>ceddk.h涓畾涔変簡PHYSICAL_ADDRESS錛屽畠鍏跺疄鏄?/span>LARGE_INTEGER綾誨瀷錛屽叾瀹氫箟濡備笅錛?/span>

// in ceddk.h

typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;

// in winnt.h

typedef union _LARGE_INTEGER{

 struct{

    DWORD LowPart;

    LONG HighPart;

 };

 LONGLONG QuadPart;

} LARGE_INTEGER;

鍙錛?/span>Windows CE涓敤64涓?/span>Bit鏉ヤ唬琛ㄧ墿鐞嗗湴鍧錛屽浜庡ぇ澶氭暟32浣嶇殑CPU鑰岃█錛屽彧闇瑕佹妸瀹冪殑HighPart璁劇疆涓?/span>0灝卞彲浠ヤ簡銆?/span>

濡傛灉瑕佺洿鎺ヨ闂煇涓涓湴鍧鐨勭墿鐞嗗唴瀛橈紝Windows CE鎻愪緵浜?/span>VirtualAlloc()鍜?/span>VirtualCopy()鍑芥暟錛?/span>VirtualAlloc璐熻矗鍦ㄨ櫄鎷熷唴瀛樼┖闂村唴淇濈暀涓孌佃櫄鎷熷唴瀛橈紝鑰?/span>VirtualCopy璐熻矗鎶婁竴孌電墿鐞嗗唴瀛樺拰铏氭嫙鍐呭瓨緇戝畾錛岃繖鏍鳳紝鏈緇堝鐗╃悊鍐呭瓨鐨勮闂繕鏄氳繃铏氭嫙鍦板潃榪涜銆傚畠浠殑澹版槑濡備笅錛?/span>

// 鐢寵铏氭嫙鍐呭瓨

LPVOID VirtualAlloc(

 LPVOID lpAddress,     // 甯屾湜鐨勮櫄鎷熷唴瀛樿搗濮嬪湴鍧

 DWORD dwSize,             // 浠ュ瓧鑺備負(fù)鍗曚綅鐨勫ぇ灝?/span>

 DWORD flAllocationType,  // 鐢寵綾誨瀷錛屽垎涓?/span>Reserve鍜?/span>Commit

 DWORD flProtect           // 璁塊棶鏉冮檺

);

// 鎶婄墿鐞嗗唴瀛樼粦瀹氬埌铏氭嫙鍦板潃絀洪棿

BOOL VirtualCopy(

 LPVOID lpvDest,           // 铏氭嫙鍐呭瓨鐨勭洰鏍囧湴鍧

 LPVOID lpvSrc,            // 鐗╃悊鍐呭瓨鍦板潃

 DWORD cbSize,             // 瑕佺粦瀹氱殑澶у皬

 DWORD fdwProtect          // 璁塊棶鏉冮檺

);

VirtualAlloc瀵硅櫄鎷熷唴瀛樼殑鐢寵鍒嗕負(fù)涓ゆ錛屼繚鐣?/span>MEM_RESERVE鍜屾彁浜?/span>MEM_COMMIT銆傚叾涓?/span>MEM_RESERVE鍙槸鍦ㄨ繘紼嬬殑铏氭嫙鍦板潃絀洪棿鍐呬繚鐣欎竴孌碉紝騫朵笉鍒嗛厤瀹為檯鐨勭墿鐞嗗唴瀛橈紝鍥犳淇濈暀鐨勮櫄鎷熷唴瀛樺茍涓嶈兘琚簲鐢ㄧ▼搴忕洿鎺ヤ嬌鐢ㄣ?/span>MEM_COMMIT闃舵鎵嶇湡姝g殑涓鴻櫄鎷熷唴瀛樺垎閰嶇墿鐞嗗唴瀛樸?/span>

涓嬮潰鐨勪唬鐮佹樉紺轟簡濡備綍浣跨敤VirtualAlloc鍜?/span>VirtualCopy鏉ヨ闂墿鐞嗗唴瀛樸傚洜涓?/span>VirtualCopy璐熻矗鎶婁竴孌電墿鐞嗗唴瀛樺拰铏氭嫙鍐呭瓨緇戝畾錛屾墍浠?/span>VirtualAlloc鐨勬椂鍊欏彧闇瑕佸鍐呭瓨淇濈暀錛屾病鏈夊繀瑕佹彁浜ゃ?/span>

FpDriverGlobals =

(PDRIVER_GLOBALS) VirtualAlloc(

    0,

    DRIVER_GLOBALS_PHYSICAL_MEMORY_SIZE,

    MEM_RESERVE,

    PAGE_NOACCESS);

 if (FpDriverGlobals == NULL) {

    ERRORMSG(DRIVER_ERROR_MSG, (TEXT(" VirtualAlloc failed!\r\n")));

    return;

 }

 else {

    if (!VirtualCopy(

    (PVOID)FpDriverGlobals,

    (PVOID)(DRIVER_GLOBALS_PHYSICAL_MEMORY_START),

    DRIVER_GLOBALS_PHYSICAL_MEMORY_SIZE,

    (PAGE_READWRITE | PAGE_NOCACHE))) {

       ERRORMSG(DRIVER_ERROR_MSG, (TEXT("VirtualCopy failed!\r\n")));

       return;

    }

 }

CEDDK榪樻彁渚涗簡鍑芥暟MmMapIoSpace鐢ㄦ潵鎶婁竴孌電墿鐞嗗唴瀛樼洿鎺ユ槧灝勫埌铏氭嫙鍐呭瓨銆傛鍑芥暟鐨勫師褰㈠涓嬶細(xì)

PVOID MmMapIoSpace(

 PHYSICAL_ADDRESS PhysicalAddress, // 璧峰鐗╃悊鍦板潃

 ULONG NumberOfBytes,                  // 瑕佹槧灝勭殑瀛楄妭鏁?/span>

 BOOLEAN CacheEnable                   // 鏄惁緙撳瓨

);

鍏跺疄錛?/span>MmMapIoSpace鍑芥暟鍐呴儴涔熸槸璋冪敤VirtualAlloc鍜?/span>VirtualCopy鍑芥暟鏉ュ疄鐜扮墿鐞嗗湴鍧鍒拌櫄鎷熷湴鍧鐨勬槧灝勭殑銆?/span>MmMapIoSpace鍑芥暟鐨勫師浠g爜鏄叕寮鐨勶紝鎴戜滑鍙互浠?/span>%_WINCEROOT%\PUBLIC\COMMON\OAK\DRIVERS\CEDDK\DDK_MAP\ddk_map.c寰楀埌銆備粠MmMapIoSpace鐨勫疄鐜版垜浠篃鍙互鐪嬪嚭VirtualAlloc鍜?/span>VirtualCopy鐨勭敤娉曪細(xì)

PVOID MmMapIoSpace (

    IN PHYSICAL_ADDRESS PhysicalAddress,

    IN ULONG NumberOfBytes,

    IN BOOLEAN CacheEnable

    )

{

PVOID pVirtualAddress; ULONGLONG SourcePhys;

ULONG SourceSize; BOOL bSuccess;

 

    SourcePhys = PhysicalAddress.QuadPart & ~(PAGE_SIZE - 1);

    SourceSize = NumberOfBytes + (PhysicalAddress.LowPart & (PAGE_SIZE - 1));

 

    pVirtualAddress = VirtualAlloc(0, SourceSize, MEM_RESERVE, PAGE_NOACCESS);

    if (pVirtualAddress != NULL)

    {

        bSuccess = VirtualCopy(

            pVirtualAddress, (PVOID)(SourcePhys >> 8), SourceSize,

            PAGE_PHYSICAL | PAGE_READWRITE | (CacheEnable ? 0 : PAGE_NOCACHE));

 

        if (bSuccess) {

            (ULONG)pVirtualAddress += PhysicalAddress.LowPart & (PAGE_SIZE - 1);

        }

        else {

            VirtualFree(pVirtualAddress, 0, MEM_RELEASE);

            pVirtualAddress = NULL;

        }

    }

    return pVirtualAddress;

}

姝ゅ錛?/span>Windows CE榪樹緵浜?/span>AllocPhysMem鍑芥暟鍜?/span>FreePhysMem鍑芥暟錛岀敤鏉ョ敵璇峰拰閲婃斁涓孌佃繛緇殑鐗╃悊鍐呭瓨銆傚嚱鏁板彲浠ヤ繚璇佺敵璇風(fēng)殑鐗╃悊鍐呭瓨鏄繛緇殑錛屽鏋滃嚱鏁版垚鍔燂紝浼?xì)杩斿洖铏氭嫙鍐呭瓨鐨勫彞鏌勫拰鐗╃悊鍐呭瓨鐨勮捣濮嬪湴鍧銆傝繖瀵逛簬DMA璁懼灝や負(fù)鏈夌敤銆傚湪榪欓噷灝變笉璇︾粏浠嬬粛浜嗭紝璇昏呭彲浠ュ弬鑰?/span>Windows CE鐨勮仈鏈烘枃妗c?/span>



蹇冪窘 2011-03-01 17:37 鍙戣〃璇勮
]]>
wince緙栬瘧榪囩▼http://m.shnenglu.com/tdweng/articles/140919.html蹇冪窘蹇冪窘Tue, 01 Mar 2011 08:53:00 GMThttp://m.shnenglu.com/tdweng/articles/140919.htmlhttp://m.shnenglu.com/tdweng/comments/140919.htmlhttp://m.shnenglu.com/tdweng/articles/140919.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/140919.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/140919.html鍦╓inCE緋葷粺涓紝褰撴垜浠畬鎴愪簡鐩稿叧鐨勫紑鍙戝拰緋葷粺瀹氬埗宸ヤ綔浠ュ悗錛屼細(xì)緙栬瘧WinCE緋葷粺錛屾渶鍚庣敓鎴怤K.bin鍜孨K.nb0銆傛垜鐜板湪鐢╓inCE6.0鍦ㄨ嚜宸辯殑PC涓婇潰緙栬瘧涓嬈$敤鏃?9鍒?6縐?鏈変竴澶╂棤鑱婏紝灝辨祴浜嗕竴涓?銆備笅闈粙緇嶄竴涓媁inCE緋葷粺鐨勭紪璇戣繃紼嬶紝澶ц嚧鍒嗕負(fù)4涓樁孌碉細(xì)緙栬瘧闃舵(Compile phase)錛岀郴緇熶駭鐢熼樁孌?Sysgen phase)錛屾枃浠舵嫹璐濋樁孌?Release copy phase)鍜岀敓鎴愭槧鍍忛樁孌?Make Run-time image phase)銆?/p>

榪囩▼濡傚浘錛?/p>

浠庡浘涓彲浠ョ湅鍑猴紝鏁翠釜緙栬瘧閮芥槸閫氳繃璋冪敤Blddemo.bat鏉ュ疄鐜扮殑錛屽疄闄呬笂涔熸槸榪欐牱錛岀紪璇慦inCE灝辨槸鐢˙lddemo.bat錛屽彧涓嶈繃鍚庨潰鍙互璺熶笉鍚岀殑鍙傛暟銆傜紪璇戦樁孌靛拰緋葷粺浜х敓闃舵鐢盋ebuild.bat瀹屾垚錛屾枃浠舵嫹璐濋樁孌電敱Buildrel.bat瀹屾垚錛屾渶鍚庣殑鐢熸垚鏄犲儚闃舵鐢盡akeimg.exe瀹屾垚銆備笅闈粙緇嶄竴涓嬪悇涓樁孌點(diǎn)?/p>

1. 緙栬瘧闃舵(Compile phase)

榪欎釜榪囩▼鎸囧WinCE璺緞涓嬬殑Private鍜孭ublic鐩綍榪涜緙栬瘧錛屽皢閲岄潰鐨勬簮浠g爜緙栬瘧鎴愬簱鏂囦歡絳夛紝榪欎釜榪囩▼鍙兘浼?xì)鑺辫垂鍑犱釜灏忔椂銆傞櫎闈炴敼鍔ㄤ簡Private鎴朠ublic鐩綍涓嬬殑婧愮爜錛屽惁鍒欐槸涓嶉渶瑕佺紪璇戠殑銆備竴鑸垜浠紪璇戣嚜宸辯殑宸ョ▼鐨勬椂鍊欙紝涓嶉渶瑕佽繖涓楠ゃ?/p>

2. 緋葷粺浜х敓闃舵(Sysgen phase)

鍦ㄨ繖涓繃紼嬩腑錛岀郴緇熶細(xì)鏍規(guī)嵁浣犲湪PB涓瑿atalog涓殑閫夐」錛屽垹闄ゅ拰璁劇疆鐩稿簲鐨凷YSGEN鐜鍙橀噺錛岄摼鎺ョ浉搴旂殑闈欐佸簱錛岃繃婊ゅご鏂囦歡錛屼負(fù)SDK鍒涘緩鎵闇鐨勫鍏ュ簱錛屽悓鏃惰繕浼?xì)湄?fù)WinCE緋葷粺鍒涘緩涓浜涢厤緗枃浠躲傛渶鍚庝細(xì)緙栬瘧褰撳墠鐨凚SP鍜屽簲鐢ㄧ▼搴忋?/p>

3. 鏂囦歡鎷瘋礉闃舵(Release Copy phase)

鎷瘋礉鎵鏈夋墍闇鐨勬枃浠跺埌宸ョ▼鐨剅elease鐩綍涓嬮潰錛屼富瑕佹槸鍓嶉潰緋葷粺浜х敓闃舵鎵浜х敓鐨勬墍鏈夋枃浠躲?/p>

4. 鐢熸垚鏄犲儚闃舵(Make run-time image phase)

璇ヨ繃紼嬮鍏堣皟鐢╟enlscmp.exe鏍規(guī)嵁鍥介檯璇郴涓庡湴鍖鴻瀹氱敓鎴恮ince.nls鏂囦歡銆傜劧鍚庤皟鐢‵merge.exe鍚堝茍涓浜涢厤緗枃浠訛紝鍚堝茍鎵鏈塨ib鏂囦歡涓篶e.bib錛屽悎騫舵墍鏈夌殑reg鏂囦歡涓篟eginit.ini錛屽悎騫舵墍鏈夌殑dat鏂囦歡涓篒nitobj.dat錛屽悎騫舵墍鏈夌殑db鏂囦歡涓篒nitdb.ini銆備箣鍚庤皟鐢≧egcomp.exe鍘嬬緝r(jià)eginit.ini涓篸efault.fdf銆傛牴鎹甃OCAL鐜鍙橀噺鐨勮緗皟鐢≧es2exe.exe鏇存柊鎵鏈夌殑dll錛宔xe鍜宑pl鏂囦歡涓殑璧勬簮鏂囦歡錛屼富瑕佹槸鏇存柊鍏朵腑鐨勮璦閮ㄥ垎銆傚啀璋冪敤Txt2ucde.exe杞崲鎵鏈堿SCII鐮佸瓧絎︿覆涓篣NICODE銆傛渶鍚庤皟鐢≧omimage.exe鍚堝茍鎵鏈夋枃浠朵負(fù)NK.bin銆?/p>

鍦ㄦ暣涓紪璇戣繃紼嬩腑鏈夋椂浼?xì)閬囧埌缂栬瘧閿欒锛寴q欎釜鍙互閫氳繃瀵熺湅Build.log錛孊uild.err鍜孊uild.wrn鏂囦歡鏉ュ垎鏋愰棶棰橈紝榪欎笁涓枃浠跺簲璇ユ槸浣嶄簬”\WINCE600”鐩綍涓嬮潰銆傜紪璇戦敊璇彲鑳藉湪涓嶅悓鐨勭紪璇戦樁孌典駭鐢燂紝鎴戜滑涔熷彲浠ユ牴鎹繖涓鐐規(guī)潵鍒嗘瀽闂銆?/p>

涓鑸湪緋葷粺浜х敓闃舵(Sysgen phase)鍑虹幇閿欒寰堝彲鑳芥槸鐢變簬涓㈠け緇勪歡鎴栨枃浠墮犳垚鐨勶紝榪欐椂鍊橞uild.log浼?xì)鎻愪緵鏇村淇℃伅甯姪鍒嗘瀽闂銆傚湪榪欎釜闃舵浜х敓閿欒錛屽緢鍙兘鏄敱浜庡湪褰撳墠宸ョ▼涓坊鍔犳垨鑰呭垹闄inCE緇勪歡閫犳垚鐨勶紝鍏朵腑鏈変簺緇勪歡鐨勬洿鏀規(guī)槸闇瑕佽繘琛?#8221;clean sysgen”鐨勶紝鑰屼笉鑳藉彧浣跨敤”sysgen”鍛戒護(hù)銆傛墍浠ユ垜鐨勫緩璁槸姣忔娣誨姞鎴栧垹闄ょ粍浠墮兘鍋?#8221;clean sysgen”銆?/p>

濡備笂闈粙緇嶇郴緇熶駭鐢熼樁孌?Sysgen phase)涔熶細(xì)緙栬瘧B(tài)SP鍜岄儴鍒嗗簲鐢ㄣ傛墍浠ュ鏋滈敊璇嚭鐜板湪緋葷粺浜х敓闃舵鐨勭紪璇戣繃紼嬩腑錛屼竴鑸竴縐嶅彲鑳藉氨鏄綘鐨勪唬鐮佹湁璇硶閿欒錛屽綋鐒惰繖縐嶉敊璇緢濂芥煡銆傝繕鏈変竴縐嶅彲鑳藉嚭鐜扮殑閿欒鏄繛鎺ラ敊璇紝鏈夊彲鑳芥槸涓㈠け浜唋ib搴撴枃浠舵垨鑰呴摼鎺ラ敊浜嗗簱鏂囦歡錛屼篃鏈夊彲鑳芥槸璋冪敤浜嗛敊璇殑API鍑芥暟錛岃繕鏈夊氨鏄緗簡閿欒鐨勭幆澧冨彉閲忥紝榪欎簺鏌ヨ搗鏉ョ浉瀵瑰洶闅句竴鐐廣?/p>

濡傛灉閿欒浜х敓鍦ㄦ枃浠舵嫹璐濋樁孌?Release copy phase)錛屼竴縐嶅父瑙佺殑闂灝辨槸鍜岀‖鐩橀┍鍔ㄥ櫒鏈夊叧錛屾鏌ヤ竴涓媟elease鐩綍鎵鍦ㄧ鐩樼殑紓佺洏絀洪棿銆?/p>

濡傛灉闂鍑虹幇鍦ㄧ敓鎴愭槧鍍忛樁孌?Make run-time image phase)錛屾牴鎹紪璇戠殑杈撳嚭紿楀彛鐨勮緭鍑轟俊鎭垽鏂棶棰樺嚭鍦ㄥ摢涓瓙闃舵銆備竴縐嶅彲鑳芥槸浣犵殑bib鏂囦歡鎴栬卹eg鏂囦歡涓瓨鍦ㄨ娉曢敊璇鑷村悎騫舵枃浠舵椂鍑洪敊錛岃繕鏈夊氨鏄敞鎰忎綘鐨刬mage鐨勫ぇ灝忔槸鍚﹁秴榪囦簡config.bib鏂囦歡涓殑璁懼畾錛岃繕鏈夊氨鏄彲鑳戒涪澶變簡鏌愪釜鎴栬呮煇浜涙枃浠訛紝榪欎簺涓㈠け鐨勬枃浠跺緢鍙兘鏄敱浜庡湪鍓嶉潰鐨勭紪璇戣繃紼嬩腑鍑虹幇閿欒瀵艱嚧鐨勩?/p>

褰撶劧錛屼篃鏈夋椂鍊欎細(xì)閬囧埌涓浜涘鎬殑闂錛岃繖浜涢棶棰樺彲鑳芥槸鐢變簬娌℃湁姝g‘鐨勫畨瑁匴inCE閫犳垚鐨勶紝姣斿鍦ㄥ畨瑁匴inCE鐨勬椂鍊欙紝璺緞涓笉瑕佹湁涓枃鎴栬呯┖鏍兼垨鑰呭叾浠栨瘮杈冨鎬殑瀛楃銆傝ˉ涓佽鎸夌収欏哄簭鏉ユ墦錛岃涓嶄篃鍙兘浼?xì)鍑虹幇闂銆?/p>

 

鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/FLandY1982/archive/2009/12/04/4941120.aspx



蹇冪窘 2011-03-01 16:53 鍙戣〃璇勮
]]>
WINCE涓插彛椹卞姩MDD灞備唬鐮佺畝鍗曞垎鏋?http://m.shnenglu.com/tdweng/articles/140916.html蹇冪窘蹇冪窘Tue, 01 Mar 2011 08:16:00 GMThttp://m.shnenglu.com/tdweng/articles/140916.htmlhttp://m.shnenglu.com/tdweng/comments/140916.htmlhttp://m.shnenglu.com/tdweng/articles/140916.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/140916.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/140916.htmlhttp://blog.csdn.net/FLandY1982/archive/2009/12/24/5070059.aspx

蹇冪窘 2011-03-01 16:16 鍙戣〃璇勮
]]>
WINCE涓插彛椹卞姩PDD灞備唬鐮佺畝鍗曞垎鏋?http://m.shnenglu.com/tdweng/articles/140915.html蹇冪窘蹇冪窘Tue, 01 Mar 2011 08:13:00 GMThttp://m.shnenglu.com/tdweng/articles/140915.htmlhttp://m.shnenglu.com/tdweng/comments/140915.htmlhttp://m.shnenglu.com/tdweng/articles/140915.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/140915.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/140915.html闃呰鍏ㄦ枃

蹇冪窘 2011-03-01 16:13 鍙戣〃璇勮
]]>
WinCE涓婽ouch Panel椹卞姩浠嬬粛http://m.shnenglu.com/tdweng/articles/140894.html蹇冪窘蹇冪窘Tue, 01 Mar 2011 03:51:00 GMThttp://m.shnenglu.com/tdweng/articles/140894.htmlhttp://m.shnenglu.com/tdweng/comments/140894.htmlhttp://m.shnenglu.com/tdweng/articles/140894.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/140894.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/140894.htmlWinCE涓殑Touch Panel椹卞姩鏄敱GWES妯″潡鏉ョ鐞嗙殑錛孴ouch Panel椹卞姩鎺ユ敹鐢ㄦ埛鐨勮Е鎽鎬俊鎭紝騫跺皢鍏惰漿鎹負(fù)灞忓箷涓婄殑鍧愭爣淇℃伅錛屼紶緇橤WES妯″潡銆傚湪WinCE涓紝Touch Panel椹卞姩鏄垎灞傜殑錛屽垎涓篗DD灞傚拰PDD灞傦紝榪欏拰鍏朵粬WinCE璁懼椹卞姩鏄竴鏍風(fēng)殑銆侻DD灞傜敱寰蔣鎻愪緵錛岀敤鎴峰彧闇瑕佸疄鐜癕DD鍜孭DD灞傞棿鐨凞DSI鍑芥暟灝卞彲浠ヤ簡銆傚鍥?span style="FONT-SIZE: small">

 


    WinCE涓殑GWES妯″潡璐熻矗鍔犺澆鍜岀鐞員ouch Panel椹卞姩錛孴ouch Panel鐨凪DD灞傚悜涓婃彁渚汥DI鎺ュ彛錛孭DD灞傛槸閽堝紜歡鐨勫疄鐜幫紝瀵筂DD灞傛彁渚汥DSI鎺ュ彛銆?/p>

 

  WinCE涓殑GWES妯″潡璐熻矗鍔犺澆鍜岀鐞員ouch Panel椹卞姩錛孴ouch Panel鐨凪DD灞傚悜涓婃彁渚汥DI鎺ュ彛錛孭DD灞傛槸閽堝紜歡鐨勫疄鐜幫紝瀵筂DD灞傛彁渚汥DSI鎺ュ彛銆?/p>

 

1 Touch Panel椹卞姩涓殑鏁版嵁緇撴瀯

(1) TOUCH_PANEL_SAMPLE_FLAGS

鐢ㄤ簬鎻忚堪涓涓噰鏍風(fēng)偣鐨勪俊鎭紝榪欎簺淇℃伅琚畾涔夊湪涓涓灇涓劇粨鏋勪腑錛?/p>

               enum enumTouchPanelSampleFlags {

                 TouchSampleValidFlag = 0x01,

                 TouchSampleDownFlag = 0x02,

                 TouchSampleIsCalibratedFlag = 0x04,

                 TouchSamplePreviousDownFlag = 0x08,

                 TouchSampleIgnore = 0x10,

                 TouchSampleMouse = 0x40000000

               };

               TouchSampleValidFlag錛氫竴涓湁鏁堢殑閲囨牱鍊?/p>

               TouchSampleDownFlag錛氱涓嬈℃寜瑙︽懜灞忔椂錛岃繑鍥炶flag

               TouchSampleIsCalibratedFlag錛氶噰鏍風(fēng)殑x鍜寉鍧愭爣鍊間笉闇瑕佸啀琚牎楠屼簡

               TouchSamplePreviousDownFlag錛氳〃紺轟笂涓嬈¢噰鏍風(fēng)姸鎬佹槸鎸夊湪瑙︽懜灞忎笂

               TouchSampleIgnore錛氬拷鐣ヨ繖嬈¢噰鏍峰?/p>

               TouchSampleMouse錛氶鐣?/p>

 

(2) TPDC_CALIBRATION_POINT

鐢ㄤ簬鎻忚堪涓涓牎楠岀偣鐨勭浉鍏充俊鎭紝緇撴瀯濡備笅錛?/p>

               struct TPDC_CALIBRATION_POINT {

                 INT PointNumber;

                 INT cDisplayWidth;

                 INT cDisplayHeight;

                 INT CalibrationX;

                 INT CalibrationY;

               };

               PointNumber錛氭牎楠岀偣绱㈠紩鍊鹼紝鐢ㄤ簬鎻忚堪鏍¢獙鐐瑰湪LCD涓婄殑浣嶇疆

                                                0錛氫腑闂?/p>

                                                1錛氬乏涓?/p>

                                                2錛氬乏涓?/p>

                                                3錛氬彸涓?/p>

                                                4錛氬彸涓?/p>

               cDisplayWidth錛氭樉紺虹殑瀹藉害

               cDisplayHeight錛氭樉紺虹殑楂樺害

               CalibrationX錛氭牎楠岀偣鐨剎鍧愭爣鍊?/p>

               CalibrationY錛氭牎楠岀偣鐨剏鍧愭爣鍊?/p>

 

(3) TPDC_CALIBRATION_POINT_COUNT

鐢ㄤ簬鎻忚堪闇瑕佹牎楠岀殑鐐圭殑涓暟錛岀粨鏋勫涓嬶細(xì)

               struct TPDC_CALIBRATION_POINT_COUNT {

                  DDI_TOUCH_PANEL_CALIBRATION_FLAGS flags;

                  INT cCalibrationPoints;

               };

               flags錛氫竴鑸負(fù)0

               cCalibrationPoints錛氶渶瑕佹牎楠岀殑鐐圭殑涓暟錛屼竴鑸槸5

 

(4) gIntrTouch鍜実IntrTouchChanged

榪欐槸涓や釜琚玀DD灞傜敤鍒扮殑涓柇錛岄渶瑕佸湪PDD灞備腑瀹氫箟錛屽涓嬶細(xì)

                        DWORD gIntrTouch        = SYSINTR_NOP;

DWORD gIntrTouchChanged = SYSINTR_NOP;

gIntrTouch鐢ㄤ簬鎻忚堪瑙︽懜灞忎腑鏂紝瑕佸拰紜歡鐨勮Е鎽稿睆涓柇鐩稿叧鑱斻?/p>

gIntrTouchChanged鐢ㄤ簬鍦ㄨЕ鎽稿睆鎸変笅鍚庯紝姣忛殧涓孌墊椂闂磋繘琛屼竴嬈¢噰鏍鳳紝搴旇鍜岀‖浠剁殑涓涓畾鏃跺櫒涓柇鐩稿叧鑱斻?/p>

榪欎袱涓煎簲璇ュ湪DdsiTouchPanelEnable(..)鍑芥暟涓拰紜歡涓柇鍏寵仈錛屽茍鍦ㄥ嚱鏁癉dsiTouchPanelGetPoint(..)涓牴鎹儏鍐墊竻闄ょ浉搴旂殑涓柇銆?/p>

 

2 MDD灞侫PI

        MDD涓轟笂灞傚鍑烘墍闇鐨凾ouch Panel椹卞姩鎺ュ彛鍑芥暟錛屼笂灞傞氳繃榪欎簺鍑芥暟鍙互瀹屾垚瀵筎ouch Panel鐨勬搷浣滐紝涓嬮潰浼?xì)浠嬀l嶈繖浜涘嚱鏁扮殑鍔熻兘銆?/p>

(1) BOOL TouchPanelEnable(PFN_TOUCH_PANEL_CALLBACK pfnCallback):

浣胯兘Touch Panel璁懼錛岀敤浜庡垵濮嬪寲Touch Panel銆?/p>

       pfnCallback錛氭寚鍚戝鐞員ouch Panel浜嬩歡鐨勫洖璋冨嚱鏁?/p>

 

(2) Void TouchPanelDisable(void):

紱佺敤Touch Panel璁懼銆?/p>

 

(3) BOOL TouchPanelGetDeviceCaps(INT iIndex, LPVOID lpOutput )錛?/p>

鑾峰緱Touch Panel璁懼鐨勭浉鍏充俊鎭?/p>

       iIndex錛氱儲(chǔ)寮曞?/p>

                        TPDC_SAMPLE_RATE_ID錛氶噰鏍風(fēng)巼淇℃伅

                        TPDC_CALIBRATION_POINT_COUNT_ID錛氶噰鏍風(fēng)偣涓暟淇℃伅

                        TPDC_CALIBRATION_POINT_ID錛氶噰鏍風(fēng)偣鍧愭爣淇℃伅

            lpOutput錛氭寚鍚戜竴涓唴瀛樺尯鍩燂紝鐢ㄤ簬瀛樻斁鑾峰緱鐨勭浉鍏充俊鎭?/p>

 

(4) VOID TouchPanelCalibrateAPoint(INT32 UncalX, INT32 UncalY, INT32* pCalX, INT32* pCalY)錛?/p>

灝嗚緭鍏ョ殑鏈粡榪囨牎楠岀殑鍧愭爣淇℃伅杞崲鎴愭牎楠屽悗鐨勫潗鏍囦俊鎭?/p>

       UncalX錛氳緭鍏ョ殑X鍧愭爣

               UncalY錛氳緭鍏ョ殑Y鍧愭爣

       pCalX錛氭牎楠屽悗鐨刋鍧愭爣

       pCalY錛?鏍¢獙鍚庣殑Y鍧愭爣

 

(5) VOID TouchPanelPowerHandler(BOOL bOff)錛?/p>

Touch Panel鐨勭數(shù)婧愭帶鍒跺嚱鏁般?/p>

       bOff錛歍RUE琛ㄧず鍏抽棴鐢墊簮錛孎ALSE琛ㄧず鎵撳紑鐢墊簮

 

(6) BOOL TouchPanelReadCalibrationPoint(INT* pRawX, INT* pRawY)錛?/p>

鑾峰緱Touch Panel鐨勫潗鏍囥?/p>

       pRawX錛氳Е鎽稿睆鐨刋鍧愭爣

       PRawY錛氳Е鎽稿睆鐨刌鍧愭爣

 

(7) VOID TouchPanelReadCalibrationAbort(void)錛?/p>

緇堟褰撳墠鐨勬牎楠屻?/p>

 

(8) VOID TouchPanelSetCalibration(INT32 cCalibrationPoints, INT32* pScreenXBuffer, INT32* pScreenYBuffer, INT32* pUncalXBuffer, INT32* pUncalYBuffer)錛?/p>

鏍¢獙鍑芥暟銆傞氳繃涓緇勫疄闄呯殑瑙︽懜灞忎笂閲囬泦鐨勭偣鍧愭爣鍜岀浉搴旂殑灞忓箷鍧愭爣璁$畻鏍¢獙緋繪暟銆傚叿浣撳叕寮忓涓嬶細(xì)

        Sx =  A1*Tx + B1*Ty + C1

      Sy =  A2*Tx + B2*Ty + C2

   榪欓噷灝辨槸閫氳繃鏄劇ず灞忓潗鏍囧拰閲囨牱鐨勮Е鎽稿睆鍧愭爣璁$畻A1,B1,C1,A2,B2,C2銆?/p>

       cCalibrationPoints錛氭牎楠岀偣鐨勪釜鏁?/p>

       pScreenXBuffer錛氫竴緇勬樉紺哄睆涓婄殑X鍧愭爣

               pScreenYBuffer錛氫竴緇勬樉紺哄睆涓婄殑Y鍧愭爣

               pUncalXBuffer錛氫竴緇勮Е鎽稿睆涓婇噰鏍風(fēng)殑X鍧愭爣

               pUncalYBuffer錛氫竴緇勮Е鎽稿睆涓婇噰鏍風(fēng)殑Y鍧愭爣

 

(9) BOOL TouchPanelSetMode(INT iIndex, LPVOID lpInput)錛?/p>

璁劇疆Touch Panel鐨勫伐浣滄ā寮忋?/p>

               iIndex錛氱儲(chǔ)寮曟ā寮?/p>

                                    TPSM_SAMPLERATE_HIGH錛氳緗珮閲囨牱鐜?/p>

                                    TPSM_SAMPLERATE_LOW錛氳緗綆閲囨牱鐜?/p>

                                    TPSM_PRIORITY_HIGH_ID錛氳緗Е鎽稿睆鐨処ST涓洪珮浼樺厛綰?/p>

                                    TPSM_PRIORITY_NORMAL_ID錛氳緗甀ST涓烘甯鎬紭鍏堢駭

               lpInput錛氭寚鍚戜竴鍧楀唴瀛橈紝鍏朵腑鍖呭惈鐩稿叧淇℃伅銆?/p>

 

3 PDD灞侫PI

(1) LONG DdsiTouchPanelAttach(void)錛?/p>

璇ュ嚱鏁板湪Touch Panel椹卞姩鐨凞ll琚姞杞界殑鏃跺欒皟鐢?/p>

 

(2) LONG DdsiTouchPanelDettach(void)錛?/p>

璇ュ嚱鏁板湪Touch Panel椹卞姩鐨凞ll琚嵏杞界殑鏃跺欒皟鐢?/p>

 

(3) BOOL DdsiTouchPanelEnable(void)錛?/p>

鎵撳紑Touch Panel鐢墊簮騫跺仛鍒濆鍖栥備竴鑸細(xì)鍦ㄨ繖閲屽垵濮嬪寲涓浜涗俊鎭紝鎵撳紑Touch Panel璁懼鐢墊簮騫跺仛鍒濆鍖栥?/p>

 

(4) VOID DdsiTouchPanelDisable(void)錛?/p>

鍏抽棴Touch Panel璁懼銆傚叧闂璗ouch Panel鐢墊簮騫墮噴鏀捐祫婧愩?/p>

 

(5) BOOL DdsiTouchPanelGetDeviceCaps(ULONG iIndex, LPVOID lpOutput)錛?/p>

鏌ヨTouch Panel璁懼鐨勭浉鍏充俊鎭?/p>

               iIndex錛氭煡璇㈢殑绱㈠紩鍊?/p>

                   TPDC_SAMPLE_RATE_ID錛氭煡璇㈤噰鏍風(fēng)巼淇℃伅

                   TPDC_CALIBRATION_POINT_ID錛氭煡璇㈤渶瑕佹牎楠岀殑鐐圭殑鍧愭爣

                   TPDC_CALIBRATION_POINT_COUNT_ID錛氭煡璇㈢敤浜庢牎楠岀殑鐐圭殑涓暟

          lpOutput錛氭牴鎹甶Index鍊煎垎鍒寚鍚戠浉鍏崇殑淇℃伅

 

(6) void DdsiTouchPanelGetPoint(TOUCH_PANEL_SAMPLE_FLAGS pTipState, PLONG pUnCalX, PLONG pUnCalY)錛?/p>

鑾峰緱Touch Panel涓婅鎸変笅鐨勭偣鐨勭姸鎬佸拰鍧愭爣銆?/p>

               pTipState錛氬綋鍓嶈Е鎽哥偣鐨勭姸鎬侊紝姣斿鏃犳晥鐐癸紝鏈夋晥鐐癸紝琚寜涓嬬殑鐐圭瓑銆?/p>

               pUnCalX錛氳Е鎽哥偣鐨刋鍧愭爣

               pUnCalY錛氳Е鎽哥偣鐨刌鍧愭爣

 

(7) VOID DdsiTouchPanelPowerHandler(BOOL bOff)錛?/p>

璁劇疆Touch Panel鐨勭數(shù)婧愮姸鎬併?/p>

               bOff錛歍RUE琛ㄧず鍏抽棴鐢墊簮錛孎ALSE琛ㄧず鎵撳紑鐢墊簮

 

(8) BOOL DdsiTouchPanelSetMode(ULONG iIndex, LPVOID lpInput)錛?/p>

璁劇疆Touch Panel宸ヤ綔妯″紡銆?/p>

               iIndex錛氭ā寮忕儲(chǔ)寮?/p>

                        TPSM_SAMPLERATE_HIGH_ID錛氶珮閲囨牱鐜?/p>

                        TPSM_SAMPLERATE_LOW_ID錛氫綆閲囨牱鐜?/p>

               lpInput錛氭寚鍚戝寘鍚浉鍏充俊鎭殑鍐呭瓨

 

4 娉ㄥ唽琛ㄨ緗?/p>

瀵逛簬Touch Panel椹卞姩鏉ヨ錛屾湁浜涙敞鍐岃〃欏規(guī)槸闇瑕侀厤緗殑銆傚叿浣撳涓嬶細(xì)

“InputConfig”錛歐inCE緋葷粺杈撳叆閰嶇疆銆?/p>

Bit0琛ㄧず閿洏杈撳叆

Bit1琛ㄧずTouch Panel杈撳叆

                                    Bit2琛ㄧず紜歡鎸夐敭杈撳叆

“DeviceName”錛歍ouch Panel椹卞姩鐨勫悕瀛椼?/p>

“MaxCalError”錛歍ouch Panel鐨勭簿紜害閰嶇疆銆?/p>

“CalibrationData”錛歍ouch Panel鐨勬牎楠屽箋傜涓嬈″惎鍔╓inCE鍚庯紝闇瑕侀氳繃WinCE鐨勮Е鎽稿睆鏍¢獙紼嬪簭瀵筎ouch Panel榪涜鏍¢獙銆傛牎楠屽畬鎴愬悗錛屾牎楠屽間細(xì)琚啓鍏ユ敞鍐岃〃閲岄潰銆?/p>

 

涓嬮潰鏄叧浜嶵ouch Panel鐨勬敞鍐岃〃閰嶇疆鐨勪緥瀛愶細(xì)

[HKEY_LOCAL_MACHINE\ControlPanel]

                "InputConfig"=dword:3    ;3 => keybd and touch screen

[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH]

                "DriverName"="touch.dll"

                "MaxCalError"=dword:8

                "CalibrationData"="446,671 36,191 38,1179 856,1161 862,169 "

 

涓漢瑙夊緱錛岃鎯蟲洿濂界殑鐞嗚ВTouch Panel椹卞姩錛岃繕鏄渶瑕佸幓璇昏浠g爜錛屽熀浜嶹inCE6.0涓嬶紝鍙互鍙傝?\WINCE600\PLATFORM\H4SAMPLE\SRC\DRIVERS\TOUCH"涓嬮潰鐨勯┍鍔紝鍩轟簬榪欎釜椹卞姩寮鍙戣嚜宸辯殑椹卞姩浼?xì)姣旇緝鏂逛狙潃?/p>

 

 

 

 

 

 

 

Windows CE涓嬭Е鎽稿睆椹卞姩瀹炵幇鐨勫垎鏋?br>Analysis of Touch Panel Driver Realization Based on Windows CE OS

鍒樻灄杈?    寮?鑺?

Liu,LinHui1    Zhang,Fen2

錛? 闀挎矙鐞嗗伐澶у鑳芥簮涓庡姩鍔涘伐紼嬪闄紝婀栧崡 闀挎矙錛?10077錛? 鍗庝腑縐戞妧澶у鏈烘縐戝涓庡伐紼嬪闄紝婀栧寳 姝︽眽錛?30074錛?/p>

鎽樿錛氭湰鏂囦粙緇嶄簡Windows CE鎿嶄綔緋葷粺鐨勮Е鎽稿睆椹卞姩紼嬪簭妯″瀷錛岃緇嗛槓榪板祵鍏ュ紡緋葷粺涓數(shù)闃誨紡瑙︽懜灞忕殑Windows CE椹卞姩紼嬪簭鐨勮璁″拰瀹炵幇鏂規(guī)硶銆?/p>

鍏抽敭璇嶏細(xì)瑙︽懜灞忥紝W(xué)indows CE

涓浘鍒嗙被鍙鳳細(xì)TP316

鏂囩尞鏍囪瘑鐮侊細(xì)A

Abstract錛歍his article introduced touch panel driver model of Windows CE operating system, and elaborated the driver design and the realization method of resistance-type touch panel based on an embedded system which take Windows CE as operating system.

Keyword錛歍ouch Panel錛學(xué)indows CE

1. 鍓嶈█
瑙︽懜灞忔槸宓屽叆寮忚澶囦腑甯哥敤鐨勮綆楁満杈撳叆璁懼錛屽畠鍙嬌鎿嶄綔綆鍗曠洿瑙傦紝浜轟漢閮戒細(xì)浣跨敤錛岃繖涓鐐規(guī)棤璁烘槸閿洏榪樻槸榧犳爣閮芥棤娉曚笌鍏剁浉姣斻傚湪鎵嬫満銆丳DA絳夋墜鎸佷駭鍝佸強(qiáng)鍏叡鏈嶅姟璁懼涓ぇ閲忛噰鐢ㄨЕ鎽稿睆銆傝Е鎽稿睆鍒嗕負(fù)鐢?shù)闃诲紡銆佺數(shù)瀹瑰紡銆佽〃闈㈠0娉㈠紡絳夊縐嶏紝鐢?shù)闃诲紡瑙︽懜灞忔槸鐩墠搴旂敤姣旇緝骞挎硾鐨勪竴縐嶏紝鏈夊洓綰褲佷簲綰褲佷竷綰跨瓑鍑犵銆傛湰鏂囧皢鍒嗘瀽Windows CE鎿嶄綔緋葷粺涓嬬殑瑙︽懜灞忛┍鍔ㄧ▼搴忔ā鍨嬪強(qiáng)瀹炵幇鏂規(guī)硶銆?/p>

2. Windows CE瑙︽懜灞忛┍鍔ㄧ▼搴忔ā鍨?br>鍦╓indows CE鎿嶄綔緋葷粺涓Е鎽稿睆椹卞姩鏄竴縐嶅垎灞傞┍鍔ㄣ傚叾椹卞姩妯″瀷濡傚浘1鎵紺恒備笂灞傛槸妯″瀷璁懼椹卞姩紼嬪簭錛圡odel Device Driver, MDD錛夛紝涓嬪眰鏄緷璧栧鉤鍙扮殑椹卞姩紼嬪簭錛圥latform Dependent Driver, PDD錛夈侻DD閫氬父鏃犻渶淇敼鐩存帴浣跨敤錛孧DD閾炬帴PDD灞傚茍瀹氫箟瀹冨笇鏈涜皟鐢ㄧ殑鍑芥暟鎺ュ彛錛氳澶囬┍鍔ㄧ▼搴忔彁渚涘櫒鎺ュ彛錛圖evice Driver Service Provider Interface, DDSI錛夈傚悓鏃禡DD鎶婁笉鍚岀殑鍑芥暟闆嗘彁渚涚粰鎿嶄綔緋葷粺錛岃繖浜涘嚱鏁板彨鍋氳澶囬┍鍔ㄧ▼搴忔帴鍙o紙Device Driver Interface, DDI錛夛紝榪欓儴鍒嗕負(fù)涔熷氨鏄垜浠氬父椹卞姩闇瑕佸疄鐜扮殑閮ㄥ垎銆?/p>

3 Windows CE鐨勮Е鎽稿睆椹卞姩紼嬪簭鎺ュ彛

Windows CE鐨勮Е鎽稿睆椹卞姩閾炬帴浜唗ch_cal.lib鍜宼chmdd.lib涓や釜闈欐侀摼鎺ュ簱銆傝Е鎽稿睆椹卞姩鐢盙WES鍔犺澆錛孏WES閫氳繃DDI璋冪敤椹卞姩紼嬪簭鑾峰彇璁懼鐘舵侊紝璁劇疆椹卞姩鍔熻兘絳夛紝鑰岄┍鍔ㄦ湰韜氳繃DDSI鐩存帴鑾峰緱紜歡淇℃伅鏉ョ‘瀹氬綋鍓嶈Е鎽稿睆鐨勭姸鎬併?/p>

Windows CE瑙︽懜灞忛┍鍔ㄨ姹傜殑DDI鎺ュ彛鍖呮嫭錛歍ouchPanelGetDeviceCaps銆乀ouchPanelEnable銆乀ouchPanelDisable銆乀ouchPanelSetMode銆乀ouchPanelReadCalibrationPoint銆乀ouchPanelReadCalibrationAbort銆乀ouchPanelSetCalibration銆乀ouchPanelCalibrateAPoint銆乀ouchPanelPowerHandler銆?/p>

Windows CE瑙︽懜灞忛┍鍔ㄨ姹傜殑DDSI鎺ュ彛鍖呮嫭錛欴dsiTouchPanelAttach銆丏dsiTouchPanelDetach銆丏dsiTouchPanelDisable銆丏dsiTouchPanelEnable銆丏dsiTouchPanelGetDeviceCaps銆丏dsiTouchPanelGetPoint銆丏dsiTouchPanelPowerHandler銆?/p>

4 Windows CE鐨勮Е鎽稿睆鏁版嵁閲囬泦
Windows CE瑙︽懜灞忛┍鍔ㄧ▼搴忛噰鐢ㄤ腑鏂柟寮忓瑙︽懜絎旂殑鎸変笅鐘舵佽繘琛屾嫻嬶紝濡傛灉媯(gè)嫻嬪埌瑙︽懜絎旀寜涓嬪皢浜х敓涓柇騫惰Е鍙戜竴涓簨浠墮氱煡涓涓伐浣滅嚎紼嬪紑濮嬮噰闆嗘暟鎹傚悓鏃訛紝椹卞姩灝嗘墦寮涓涓‖浠跺畾鏃跺櫒錛屽彧瑕佹嫻嬪埌瑙︽懜絎斾粛鐒跺湪鎸変笅鐘舵佸皢瀹氭椂瑙﹀彂鍚屼竴涓簨浠墮氱煡宸ヤ綔綰跨▼閲囬泦鏁版嵁錛岀洿鍒拌Е鎽哥瑪鎶搗鍚庡叧闂瀹氭椂鍣紝騫墮噸鏂版嫻嬫寜涓嬬姸鎬併傞┍鍔ㄤ腑閲囩敤浜嗚Е鎽稿睆涓柇浠ュ強(qiáng)瀹氭椂鍣ㄤ腑鏂袱涓腑鏂簮錛屼笉浠呭彲浠ョ洃鎺цЕ鎽哥瑪鎸変笅鍜屾姮璧風(fēng)姸鎬侊紝鑰屼笖鍙互媯(gè)嫻嬭Е鎽哥瑪鎸変笅鏃剁殑鎷栧姩杞ㄨ抗銆?/p>

瑙︽懜灞忛┍鍔ㄥ湪鍒濆鍖栬繃紼嬭皟鐢═ouchPanelEnable鍑芥暟浣胯兘瑙︽懜灞忋傝鍑芥暟璋冪敤鐨凞DSI鍑芥暟涓猴細(xì)DdsiTouchPanelEnable鍜孌dsiTouchPanelDisable銆傝鍑芥暟瀹炵幇濡備笅 鍐呭錛?/p>

1) 鍒涘緩浜嬩歡hTouchPanelEvent鍜宧CalibrationSampleAvailable銆俬TouchPanelEvent浜嬩歡鍦ㄦ甯哥姸鎬佷笅褰撴湁瑙︽懜絎旀寜涓嬫垨鑰呮寜涓嬪悗闇瑕佸畾鏃墮噰闆嗘暟鎹椂琚Е鍙戙傝宧CalibrationSampleAvailable浜嬩歡鍦ㄦ牎鍑嗙姸鎬佷笅褰撴湁鏍″噯鏁版嵁杈撳叆鏃惰瑙﹀彂錛?/p>

2) 媯(gè)鏌ュ茍鍒濆鍖栨墍闇鐨勪腑鏂璯IntrTouch錛堣Е鎽稿睆涓柇錛夊拰gIntrTouchChanged錛堝畾鏃跺櫒涓柇錛夛紝騫跺皢涓柇gIntrTouch銆乬IntrTouchChanged鍏寵仈鍒頒簨浠秇TouchPanelEvent銆傚綋gIntrTouch錛実IntrTouchChanged涓柇浜х敓鏃跺皢瑙﹀彂hTouchPanelEvent浜嬩歡錛?/p>

3) 鍒涘緩涓涓狪SR綰跨▼TouchPanelpISR銆俆ouchPanelpISR鐢ㄤ簬絳夊緟鍜屽鐞嗚Е鎽稿睆浜嬩歡hTouchPanelEvent錛屽畠鏄暣涓┍鍔ㄧ▼搴忎腑鍞竴鐨勪簨浠舵簮銆?/p>

TouchPanelpISR鍑芥暟鏄疄鐜拌Е鎽稿睆鏁版嵁閲囬泦鍏抽敭鍑芥暟錛屽畠瀹炵幇鐨勫唴瀹逛負(fù)錛?/p>

1) 絳夊緟寰幆錛岀敤浜庢帴鏀秇TouchPanelEvent浜嬩歡錛屽茍鏋勬垚鍑芥暟鐨勪富浣擄紱

2) 閫氳繃璋冪敤DdsiTouchPanelGetPoint鍑芥暟鑾峰彇褰撳墠瑙︽懜灞忎綅緗拰鐘舵佷俊鎭紱

3) 鍦ㄨ幏鍙栨湁鏁堟暟鎹笖鍦ㄦ牎鍑嗙姸鎬佷笅錛屾敹闆嗗茍鎻愪氦鎸変笅鐨勪綅緗俊鎭紱

4) 鍦ㄦ甯哥姸鎬佷笅錛屾牎鍑嗘暟鎹紝騫舵鏌ユ牎鍑嗗悗鏁版嵁鐨勬湁鏁堟э紱

5) 鏈鍚庤皟鐢ㄧ敱GWES浼犲叆鐨勫洖璋冨嚱鏁幫紝鎻愪氦浣嶇疆淇℃伅鍜岀姸鎬佷俊鎭?/p>

鍥犳錛屽湪瑙︽懜灞忛┍鍔ㄧ▼搴忎腑DdsiTouchPanelEnable銆丏dsiTouchPanelDisable鍜孌dsiTouchPanelGetPoint涓変釜DDSI鎺ュ彛鍑芥暟鏄┍鍔ㄥ疄鐜扮殑鍏抽敭鎵鍦ㄣ?/p>

鍦―dsiTouchPanelEnable鍜孌dsiTouchPanelDisable鍑芥暟涓垎鍒墦寮鍜屽叧闂Е鎽稿睆紜歡錛岃繖涓や釜鍑芥暟鍏跺疄鍙互涓嶇湡姝f搷浣滅‖浠訛紝鑰屽彧鏄疄鐜拌蔣浠朵笂鐨勬帶鍒訛紝浣嗘槸涓轟簡闄嶄綆鍔熻楁渶濂藉湪DdsiTouchPanelDisable涓皢瑙︽懜灞忔帶鍒跺櫒鐢墊簮鍏抽棴騫跺湪DdsiTouchPanelEnable鍑芥暟涓墦寮銆?/p>

鍦―dsiTouchPanelGetPoint鍑芥暟涓疄鐜板瑙︽懜灞忔暟鎹殑閲囨牱銆備粠涓婇潰鐨勫垎鏋愬緱鐭DD閫氳繃媯(gè)嫻媓TouchPanelEvent鍜宧CalibrationSampleAvailable浜嬩歡鎺у埗閲囨牱錛岃繖涓や釜浜嬩歡琚Е鍙戦兘灝嗚皟鐢ㄨ鍑芥暟銆傝岃繖涓や釜浜嬩歡瑙﹀彂鏉′歡鏈変袱涓細(xì)

1) 瑙︽懜絎旀寜涓嬫椂浜х敓瑙︽懜灞忎腑鏂璯IntrTouch鏃惰Е鍙戯紱

2) 瑙︽懜絎旀寜涓嬪悗錛屽畾鏃跺櫒琚墦寮錛屽畾鏃跺櫒灝嗗畾鏃朵駭鐢熶腑鏂璯IntrTouchChanged錛屽茍瑙﹀彂浜嬩歡錛岀洿鍒拌Е鎽哥瑪鎶搗涓烘銆?/p>

鍥犳璇ュ嚱鏁頒笉浠呴渶瑕佸瑙︽懜灞忔暟鎹噰鏍鳳紝鑰屼笖闇瑕佸瑙﹀彂鏉′歡榪涜鐘舵佹帶鍒訛紝鍏舵祦紼嬪鍥?鎵紺恒傚浘涓畾涔変簡涓変釜鍙橀噺錛屽畠浠垎鍒負(fù)錛?/p>

1) TouchIrq涓洪潤鎬佸彉閲忔垨鍏ㄥ眬鍙橀噺錛屼笖鍒濆鍊間負(fù)TRUE錛岃鍙橀噺蹇呴』鍦ㄨЕ鎽稿睆鎸変笅騫朵駭鐢熻Е鎽稿睆涓柇鏃惰緗負(fù)FALSE錛?/p>

2) InterruptType涓洪潤鎬佸彉閲忔垨鍏ㄥ眬鍙橀噺錛屼笖鍒濆鍊間負(fù)SYSINTR_NOP錛屽綋鍦ㄥ鐞嗚Е鎽稿睆涓柇鏃惰緗負(fù)SYSINTR_TOUCH錛屽湪澶勭悊瀹氭椂鍣ㄤ腑鏂椂璁劇疆涓篠YSINTR_TOUCH_CHANGED錛屽叾浣欒緗負(fù)SYSINTR_NOP錛屼笖鍦ㄥ鐞嗗畬姣曞悗蹇呴』灝嗗叾浣滀負(fù)鍙傛暟浼犲叆InterruptDone鍑芥暟浠ユ竻闄や腑鏂紱

3) g_NextExpectedInterrupt涓洪潤鎬佸彉閲忔垨鍏ㄥ眬鍙橀噺錛岃鍙橀噺琛ㄧず涓嬩竴涓笇鏈涗駭鐢熺殑涓柇錛屽垵濮嬬姸鎬佷負(fù)PEN_DOWN錛屼篃灝辨槸瑙︽懜絎斿湪鎶搗鐘舵侊紝鍥犳甯屾湜涓嬩竴涓駭鐢熺殑涓柇涓篜EN_DOWN銆傚綋瑙︽懜灞忎腑鏂駭鐢熶互鍙?qiáng)瀹氭椂鍣ㄤ腑鏂骇鐢熸椂璇ュ彉閲忎负PEN_UP_OR_TIMER錛屼篃灝辨槸涓嬩竴涓彲鑳戒駭鐢熺殑鐘舵佷負(fù)瑙︽懜絎旀姮璧風(fēng)姸鎬佹垨鑰呰Е鎽哥瑪鎸変笅浣嗗畾鏃跺櫒涓柇浜х敓銆?/p>

DdsiTouchPanelGetPoint鍑芥暟涓寮濮嬩粠瑙︽懜絎旀姮璧風(fēng)姸鎬佸紑濮嬫墽琛岋紝姝ゆ椂TouchIrq絳変簬TRUE銆傚鏋滄鏃惰Е鎽哥瑪鎸変笅錛屽皢璁劇疆TouchIrq涓篎ALSE錛岃〃紺烘湰嬈¢噰鏍鋒槸鐢變簬瑙︽懜灞忎腑鏂駭鐢熷茍璁劇疆涓嬩竴嬈¤皟鐢ㄧ敱瀹氭椂鍣ㄤ駭鐢熴傜劧鍚庤緗甀nterruptType鐘舵佷負(fù)SYSINTR_TOUCH錛屾帴鐫寮濮嬮噰闆嗘暟鎹茍璁劇疆g_NextExpectedInterrupt鍙橀噺涓篜EN_UP_OR_TIMER錛岃〃紺轟笅涓嬈′駭鐢熺殑涓柇涓哄畾鏃跺櫒涓柇銆傛帴鐫鍒ゆ柇鍦ㄨЕ鎽哥瑪鎸変笅鐘舵侊紙g_NextExpectedInterrupt絳変簬PEN_UP_OR_TIMER錛変笅瑙︽懜絎旀槸鍚︽姮璧鳳紝濡傛灉鎶搗鍒欒緗甮_NextExpectedInterrupt涓篜EN_DOWN鎭㈠鍒版姮璧風(fēng)姸鎬併傛渶鍚庨氳繃灝咺nterruptType浣滀負(fù)鍙傛暟浼犲叆InterruptDone鍑芥暟浠ユ竻闄や腑鏂傚綋瑙︽懜絎旀寜涓嬶紝騫朵駭鐢熷畾鏃跺櫒涓柇鏃訛紝TouchIrq絳変簬FALSE錛屾鏃禝nterruptType琚緗負(fù)SYSINTR_TOUCH_CHANGED錛屽叾浣欑殑鍔ㄤ綔鍩烘湰鍜屼笂闈㈢殑嫻佺▼涓鑷淬?/p>


5 Windows CE涓嬬殑瑙︽懜灞忔牎鍑?br>鐢?shù)闃昏Е鎽稿睆闇瑕佹牎鍑嗐傚簲鐢ㄧ▼搴忛渶瑕佷竴浜涘弬鑰冨鹼紝浠ヤ究灝嗘帴鏀跺埌鐨勮Е鎽稿睆鍧愭爣鏁版嵁杞崲鎴愰珮灞傝蔣浠舵墍闇鐨勫睆騫曞潗鏍囥傜悊鎯蟲儏鍐典笅鏍″噯紼嬪簭鍙鍦ㄤ駭鍝佸垵嬈″姞鐢墊祴璇曡繃紼嬩腑榪愯涓嬈″氨鍙互浜嗭紝鍙傝冨艱瀛樺偍鍦ㄩ潪鏄撳け鎬у瓨鍌ㄥ櫒涓傚湪鐞嗘兂鎯呭喌涓嬪彧闇涓ょ粍鍘熷鏁版嵁錛屽嵆鍦ㄥ睆騫曞瑙掕鍙栫殑鏈灝忓拰鏈澶у箋傝屽湪瀹為檯搴旂敤涓紝鍥犱負(fù)璁稿鐢?shù)闃昏Е鎽稿睆瀛樺湪鏄捐憲鐨勯潪绾挎э紝鍥犳濡傛灉鍦ㄦ渶灝忓拰鏈澶у間箣闂寸畝鍗曠殑鎻掑叆浣嶇疆鏁板間細(xì)瀵艱嚧椹卞姩紼嬪簭闈炲父鐨勪笉綺劇‘銆?/p>

鍦╓indows CE涓氳繃鍦ㄥ嚱鏁癉dsiTouchPanelGetDeviceCaps 涓緗牎鍑嗙偣鐨勪釜鏁幫紝鍦═ouchDriverCalibrationPointGet涓幏鍙栨瘡涓牎鍑嗙偣鐨勫睆騫曞潗鏍囥傚父鐢ㄧ殑鏍″噯鐐規(guī)暟閲忎負(fù)5銆傛牎鍑哢I灝嗗湪鏍″噯鐐瑰潗鏍囧鐩稿簲鏄劇ず涓涓崄瀛楀弶錛岀敤鎴烽渶瑕佺簿紜湴鍦ㄨ鍗佸瓧鍙変綅緗寜涓嬭Е鎽稿睆錛岄┍鍔ㄩ氳繃TouchPanelReadCalibrationPoint鍑芥暟璇誨彇鐩稿簲鐨勮Е鎽稿睆鍧愭爣鍊鹼紝鐒跺悗寮濮嬩笅涓涓牎鍑嗙偣銆傚驚鐜瀹氱殑嬈℃暟鍚庯紝灝嗛噰闆嗗埌鐨勮Е鎽稿睆鍧愭爣鍊煎拰鏍″噯鐐瑰睆騫曞潗鏍囬佸埌TouchPanelSetCalibration鍑芥暟涓繘琛屽鐞嗐傝鍑芥暟灝嗕駭鐢熸牎鍑嗗熀鍑嗗弬鏁般?/p>

TouchPanelSetCalibration鍑芥暟鎵ц鐨勫姩浣滄槸涓濂楁暟瀛︾畻娉曪紝鍏蜂綋鍐呭涓?

鍦ㄨЕ鎽稿睆鏁版嵁涓庡叾浣嶇疆鍋忕Щ鍏崇郴涓斿睆騫曞儚绱犱笌鍏朵綅緗亸縐誨叧緋誨悓涓虹嚎鎬у叧緋誨亣璁炬儏鍐典笅錛岃Е鎽稿睆榪斿洖鐨勪綅緗俊鎭笌鍍忕礌浣嶇疆淇℃伅涔嬮棿鎴?D鍧愭爣鍙樻崲鍏崇郴銆傚垯瀵逛簬瑙︽懜灞忔寜涓嬬偣鐨勮Е鎽稿睆鍧愭爣(Tx,Ty)涓庡叾鍦ㄦ樉紺鴻澶囦綅緗叧緋諱笂鍖歸厤鐨勭偣鐨勫睆騫曞潗鏍?Sx,Sy)涔嬮棿鐨勮漿鎹㈠叧緋伙紝鍙互閫氳繃涓嬭堪鍧愭爣鍙樻崲琛ㄧず錛?/p>

Sx =  A1*Tx + B1*Ty + C1

Sy =  A2*Tx + B2*Ty + C2

TouchPanelSetCalibration鐨勫叿浣撳伐浣滃氨鏄氳繃鏍″噯鐨勫姩浣滆幏鍙栫殑灞忓箷鍧愭爣鍜岃Е鎽稿睆鍧愭爣TouchCoordinate鏉ョ‘瀹欰1錛孊1錛孋1鍜孉2, B2, C2銆?/p>

6. 緇撴潫璇?br>鏈枃浣滆呯殑鍒涙柊鐐癸細(xì)浠庡垎鏋愬祵鍏ュ紡Windows CE鎿嶄綔緋葷粺涓Е鎽稿睆椹卞姩紼嬪簭鐨勬ā鍨嬪強(qiáng)瀹炵幇鏂規(guī)硶鐨勮搴︽繁鍏ュ墫鏋愪簡Windows CE涓Е鎽稿睆鏁版嵁閲囬泦鍜屾牎鍑嗙殑鎵ц嫻佺▼錛屽浜庣被浼肩郴緇熺殑椹卞姩寮鍙戝叿鏈変竴瀹氱殑鍊熼壌鎬с?/p>

鍙傝冩枃鐚細(xì)

[1] Paul Kovitz. 鐢?shù)闃诲紡瑙︽懜灞従l撴瀯鍜屽疄鐜板師鐞嗭紝澶忔櫘鍏徃錛?003


鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/zhongnanjun_3/archive/2008/11/11/3274020.aspx



蹇冪窘 2011-03-01 11:51 鍙戣〃璇勮
]]>
wince涓嬬殑瑙︽懜灞忛┍鍔ㄥ垎鏋?鍩轟簬2410) http://m.shnenglu.com/tdweng/articles/140893.html蹇冪窘蹇冪窘Tue, 01 Mar 2011 03:50:00 GMThttp://m.shnenglu.com/tdweng/articles/140893.htmlhttp://m.shnenglu.com/tdweng/comments/140893.htmlhttp://m.shnenglu.com/tdweng/articles/140893.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/140893.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/140893.html

杞澆璇鋒敞鏄庡嚭澶?/font>

浣滆?灝忛┈


 

鍓嶆鏃墮棿縐繪 6.0 BSP錛岀洰鍓嶅凡縐繪鍒拌Е鎽稿睆閮ㄥ垎浜? 縐繪榪囩▼涓鍒頒簡涓嶅皯涓滆タ. 鐢卞叾鏄叧浜庤Е鎽稿睆榪欓儴鍒? 鎺屾彙浜嗗緢澶氫互鍓嶄笉浼?xì)鐨勪笢瑗? 瑙夊緱鏈夊繀瑕佹妸榪欎簺鐭ヨ瘑鐐規(guī)暣鐞嗕竴涓? 


涓 紜歡閮ㄥ垎


紜歡涓婄殑鍘熺悊涓嶆槸鏈枃鐨勯噸鐐癸紝鍙涓涓嬪ぇ姒傜殑鍘熺悊(涓昏鏄垜涔熷彧鐭ラ亾澶ф鐨勫師鐞? 姣曠珶鍜變笉鏄悶紜歡鐨? 鍢誨樆!)


鎴戠Щ妞嶇敤鐨勮繖涓睆鏄?20*240 鐨凾FT灞? 鍥涚嚎鐢?shù)闃诲紡瑙﹀? 榪欑瑙﹀睆鐨勫師鐞嗘槸鐢變袱涓數(shù)闃誨眰緇勬垚, 涓涓疄鐜癤浣嶇疆鐨勬祴閲忥紝涓涓敤浜嶻浣嶇疆涓婄殑嫻嬮噺. 綆鍗曟潵璇達(dá)紝灝辨槸褰撶敤瑙︾瑪鎸変笅灞忓箷鏃訛紝涓や釜鐢?shù)闃诲眰鎺ヨ? 鐢?shù)闃诲彂鐢熷彉鍖栧Q岀劧鍚庡湪X Y鏂瑰悜涓婁駭鐢熶俊鍙? 榪欎釜淇″彿鏄數(shù)鍘嬩俊鍙鳳紝 鍐嶇粡榪嘋PU鍐呴儴鍒咥D杞崲涓哄潗鏍囧? 榪欎釜鍘熺悊鏈夌偣鍍忛珮涓墿鐞嗚鐢ㄧ殑婊戝姩鐢?shù)闃诲Q屾湁涓涓渶澶т笂闄愶紝婊戝姩鍒頒笉鍚岀殑鍦版柟錛岄樆鍊間笉鍚? 2410鏈韓闆嗘垚浜唗ouch鐨勬帶鍒跺櫒錛岄氳繃綆鍗曠殑閰嶇疆鍜岃鍙栫浉鍏崇殑瀵勫瓨鍣紝灝卞彲浠ュ疄鐜拌Е鎽稿睆鐨勬搷浣? 


浜?椹卞姩閮ㄥ垎

Wince涓嬬殑touch椹卞姩璺熷緢澶氬叾瀹冪殑椹卞姩涓鏍? 鏄垎灞傜殑, 鏈塎DD 鍜孭DD涓ゅ眰. MDD灞傝緋葷粺闅愯棌璧鋒潵, 涓鑸笉鐢ㄦ垜浠潵淇敼. 鑰屾垜浠湡姝e叧蹇冪殑鏄疨DD 灞? 涔熷氨鏄鐢卞紑鍙戣呮潵淇敼鐨勮繖涓灞? 


鍒嗘瀽touch椹卞姩鏃訛紝浠ユ垜鏈榪戝垰鍒氱Щ妞嶅埌涓涓熀浜?410鐨勬澘瀛愪笂鐨?.0鐨凚SP鍖呯殑瑙﹀睆椹卞姩涓轟緥.鍒?span style="COLOR: red">C:\WINCE600\PLATFORM\DEVICEEMULATOR\SRC\DRIVERS\TOUCH涓? 鎵懼埌s3c2410x_touch.cpp鏂囦歡. 榪欓噷闈㈡鏄疨DD灞傜殑瀹炵幇浠g爜. 瀹規(guī)槗鍙戠幇榪欓噷闈㈢殑鍑芥暟鍒嗕負(fù)涓ょ被錛屼竴綾繪槸浠SP寮澶寸殑鍑芥暟錛屼竴綾繪槸浠DSI寮澶寸殑鍑芥暟. TSP寮澶寸殑鍑芥暟涓哄唴閮ㄧ鏈夌殑鍑芥暟錛屾槸琚獶DSI璋冪敤鐨? 鑰孌DSI寮澶寸殑鍑芥暟鍒欐槸瀵瑰鐨勬帴鍙? 涔熷氨鏄MDD灞傜殑鍑芥暟璋冪敤鐨勬帴鍙? 


DdsiTouchPanelEnable鏄鍏堣璋冪敤鐨勪竴涓閮ㄦ帴鍙? 瀹冪殑瀹炵幇鍙弬瑙佹簮紼嬪簭,  瀹冧富

瑕佸仛浜嗕笅闈㈠嚑涓簨鎯?

1 閫氳繃璋冪敤TSP_VirtualAlloc鍑芥暟涓洪┍鍔ㄦ墍鐢ㄧ殑IO,涓柇絳夌‖浠朵腑鏂垎閰嶅唴瀛樼┖闂? 


2 閫氳繃璋冪敤KernelIoControl鍚戠郴緇熺敵璇蜂袱涓腑鏂紝濡傛灉鐢寵鎴愬姛錛岃祴浜堢浉搴旂殑閫昏緫涓柇鍙? KernelIoControl鍚戝簳灞傛槸璋冪敤OEMIoControl鍑芥暟, OEMIoControl鏍規(guī)嵁KernelIoControl浼犺繘鏉ョ殑IOCTL浠g爜錛屽仛鐩稿簲鐨勬搷浣?姣斿榪欓噷, IOCTL鏄疘OCTL_HAL_REQUEST_SYSINTR錛?瀹冩槸鍚戝唴鏍哥敵璇蜂竴涓墿鐞嗕腑鏂拰閫昏緫涓柇鐨勬槧灝? 


3 閫氳繃璋冪敤TSP_PowerOn鏉ュ垵濮嬪寲涓柇鎺у埗鍣紝ADC瀵勫瓨鍣紝瀹氭椂鍣ㄧ瓑, 鍦═SP_PowerOn鐨勫疄鐜頒腑錛屾湁鍑犵偣瑕佽鏄庝竴涓?

ADCDLY 榪欎釜鍊煎湪涓嶅悓鐨勬ā寮忎笅鎰忎箟涓嶅悓, 鍥犱負(fù)鍓嶉潰閫氳繃ADCTSC宸茬粡閰嶇疆涓簑ait for interrupt mode, 鎵浠ヨ繖涓肩殑鎰忎箟鍜屼綘鐨勮Е絎旀寜涓嬫椂,  浠庝駭鐢熶腑鏂俊鍙峰埌寮濮嬭嚜鍔ㄨ漿鎹,Y鏃剁殑鏃墮棿闂撮殧鏄浉鍏崇殑錛屽畠鐨勫崟浣嶆槸ms


v_pPWMregs->TCNTB3  = g_timer3_sampleticks

TCNTB3鏄痶imer3鐨刢ount buffer, 褰撳畾鏃跺櫒鍚姩鏃? 0錛岃繖涓間互涓涓緗ソ鐨勯鐜囬掑噺錛岀洿鍒板噺鍒?錛?榪欐椂浼?xì)漶旂敓涓涓畾鏃跺櫒涓柇. 榪欎釜鏈変粈涔堢敤鍛? 瑕佺悊瑙e畠錛屽緱鐭ラ亾瑙︽懜灞忓湪涓柇妯″紡涓嬫槸濡備綍宸ヤ綔鐨? 


褰撴垜浠寜涓嬬殑瑙︽懜灞忔椂錛屼細(xì)浜х敓涓涓狝DC鐨勪腑鏂? 鍚屾椂鎴戜滑鐨勯┍鍔ㄨ繕浼?xì)鍚姩涓涓畾鏃跺櫒, 榪欎釜瀹氭椂鍣ㄨЕ鍙戜竴涓簨浠跺仛鏁版嵁閲囬泦, 鍦ㄦ垜浠殑鎵嬫垨瑙︾瑪鎶搗鏉ュ墠錛岃繖涓畾鏃跺櫒涓嶆柇鐨勮Е鍙戦噰闆嗕簨浠訛紝鐩村埌瀹冭鍏抽棴, 鑰屽畠浠涔堟椂鍊欎細(xì)琚叧闂憿錛屽氨鏄湪瑙︾瑪鐨勬姮璧鋒潵鏃? 涓嬮潰鎴彇鐨勪唬鐮佸緢濂界殑璇存槑鐨勮繖涓師鐞?

if ( (v_pADCregs->ADCDAT0 & (1 << 15)) |(v_pADCregs->ADCDAT1 & (1 << 15)) )

{

bTSP_DownFlag = FALSE;

DEBUGMSG(ZONE_TIPSTATE, (TEXT("up\r\n")));

v_pADCregs->ADCTSC &= 0xff;

        *pUncalX = x;

*pUncalY = y;

TSP_SampleStop();

            ……

}

涓婇潰鐨勪唬鐮侊紝if鍒ゆ柇鐨勬鏄槸鍚︽姮璧? 

鑰実_timer3_sampleticks鐨勫兼槸榪欐牱璁$畻鍑烘潵鐨? 

g_timer3_freq        = (g_s3c2410_pclk / TIMER3_DIVIDER);

g_timer3_sampleticks = (g_timer3_freq / TSP_SAMPLE_RATE_LOW); 

TIMER3_DIVIDER 鐨勫兼槸2, TSP_SAMPLE_RATE_LOW鐨勫兼槸100, 鐢?/p>

v_pPWMregs->TCFG1  &= ~(0xf << 12);  

v_pPWMregs->TCFG1  |=  (0   << 12); 

鍙煡瀹氭椂鍣?/2鍒嗛, 鎵浠ワ紝寰堝鏄撹綆楀嚭錛屾墍璁劇疆鐨勫畾鏃跺櫒鏄瘡10ms浜х敓涓嬈″畾鏃跺櫒涓柇

鑰岃Е鎽稿睆涓柇鏄湪浣犳寜涓嬪拰鎶搗鏃朵駭鐢熺殑. 


DdsiTouchPanelGetPoint鏄噰鏍風(fēng)殑涓昏瀹炵幇鍑芥暟錛屽綋MDD媯(gè)嫻嬪埌涓柇浜嬩歡鍙戠敓鏃訛紝璇ュ嚱鏁頒細(xì)琚皟鐢? 瑙︽懜灞忕殑涓柇鏄疭YSINTR_TOUCH, 鑰屽畾鏃跺櫒鐨勪腑鏂槸SYSINTR_TOUCH_CHANGED 

璇ュ嚱鏁扮敤if else鍒嗗埆澶勭悊涓ょ涓柇, 濡備笅:

if (v_pINTregs->SUBSRCPND & (1<<IRQ_SUB_TC))      /* 瑙︽懜灞忎腑鏂?/

{

    ……

}


else        /*瀹氭椂鍣ㄤ腑鏂?span style="WHITE-SPACE: pre"> */

{

}

DdsiTouchPanelGetPoint鍑芥暟鐨勫疄鐜頒唬鐮佷腑錛岃皟鐢ㄤ簡涓や釜寰堥噸瑕佺殑鍑芥暟TSP_TransXY鍜孴SP_GetXY

闇瑕佽鏄庣殑鏄紝榪欎袱涓嚱鏁扮殑瀹炵幇璺烲CD鏈韓鐨勫垎杈ㄧ巼鏄病鏈夊叧緋葷殑.

TSP_GetXY鐢ㄦ潵鑾峰埌AD閲囨牱鍊鹼紝TSP_TransXY鎶婂畠杞寲涓哄睆涓婄殑鍧愭爣. 鎴戠Щ妞峵ouch椹卞姩鏃訛紝閬囧埌榪囩偣灞忓箷涓婇潰錛屼笅闈㈡湁鍙嶅簲錛屾垨鑰呯偣宸︿笂瑙掞紝鍙充笂瑙掓湁鍙嶅簲絳夌被浼肩殑闂, 閮芥槸鍥犱負(fù)榪欎袱涓嚱鏁版病瀹炵幇濂?


鍏堟潵鐪婽SP_GetXY鍑芥暟.瀹冪殑瀹炵幇濡備笅:

TSP_GetXY(INT *px, INT *py)

{

INT i;

INT xsum, ysum;

INT x, y;

INT dx, dy;

xsum = ysum = 0;

for (i = 0; i < TSP_SAMPLE_NUM; i++)

{

v_pADCregs->ADCTSC =   (0      <<  8) |        /* UD_Sen*/

(1      <<  7) |        /* YMON  1 (YM = GND)*/

(1      <<  6) |        /* nYPON 1 (YP Connected AIN[n])*/

(0      <<  5) |        /* XMON  0 (XM = Z)*/

(1      <<  4) |        /* nXPON 1 (XP = AIN[7])*/

(1      <<  3) |        /* Pull Up Enable*/

(1      <<  2) |        /* Auto ADC Conversion Mode*/

(0      <<  0);         /* No Operation Mode*/


v_pADCregs->ADCCON |= (1 << 0);  /* Start Auto conversion*/


while (v_pADCregs->ADCCON & 0x1);               /* check if Enable_start is low*/

while (!(v_pADCregs->ADCCON & (1 << 15)));      /* Check ECFLG*/


y = (0x3ff & v_pADCregs->ADCDAT1);

x = (0x3ff & v_pADCregs->ADCDAT0);

xsum += x;

ysum += y;

}

*px = xsum / TSP_SAMPLE_NUM;

*py = ysum / TSP_SAMPLE_NUM;


v_pADCregs->ADCTSC =    (1      <<  8) |            /* UD_Sen*/

(1      <<  7) |            /* YMON  1 (YM = GND)*/

(1      <<  6) |            /* nYPON 1 (YP Connected AIN[n])*/

(0      <<  5) |            /* XMON  0 (XM = Z)*/

(1      <<  4) |            /* nXPON 1 (XP = AIN[7])*/

(0      <<  3) |            /* Pull Up Disable*/

(0      <<  2) |            /* Normal ADC Conversion Mode*/

(3      <<  0);             /* Waiting Interrupt*/


dx = (*px > x) ? (*px - x) : (x - *px);

dy = (*py > y) ? (*py - y) : (y - *py);


return((dx > TSP_INVALIDLIMIT || dy > TSP_INVALIDLIMIT) ? FALSE : TRUE);

}


鍏充簬榪欎釜鍑芥暟鏈夊嚑鐐硅璇存槑. 

鏍規(guī)嵁2410鐨勬墜鍐? ADCDAT0 淇濆瓨鏄疿鏂瑰悜涓婇噰鏍風(fēng)殑緇撴灉,  ADCDAT1 淇濆瓨鏄痀鏂瑰悜涓婇噰鏍風(fēng)殑緇撴灉,  鎵浠? 鎴戜滑鐪嬪埌涓嬮潰鐨勪袱琛屼唬鐮?/p>

y = (0x3ff & v_pADCregs->ADCDAT1);

x = (0x3ff & v_pADCregs->ADCDAT0);

涓庝笂0x3ff, 鏄洜涓? ADCDAT瀵勫瓨鍣ㄥ彧鐢ㄤ簡鍓嶉潰 10浣嶆潵淇濆瓨AD閲囨牱鐨勭粨鏋? 鑰岃繖鍜?410鍐呴儴鐨凙D妯″潡鍙湁10浣嶇簿搴︽槸鐩鎬竴鑷寸殑.鎵浠ワ紝AD杞崲鍚庣殑鏈澶у間笉浼?xì)瓒厴q?024-1. 

褰撶劧涓婂湪閭g璁$畻鏂規(guī)硶騫朵笉鏄粷瀵圭殑 錛?鏍規(guī)嵁紜歡鏋勯犵殑涓嶅悓, 姣斿鏈夊彲鑳戒綘x鏂瑰悜鐨勫潗鏍囧煎拰閲囨牱鍊兼垚鍙嶆瘮錛屽氨瑕佹寜涓嬮潰鐨勬柟寮忚綆?

x = 0x3ff - (0x3ff & v_pADCregs->ADCDAT0);


鍐嶇湅TSP_TransXY鍑芥暟. 鎴戠Щ妞嶇殑鐗堟湰鐨勫疄鐜板涓?

PRIVATE void

TSP_TransXY(INT *px, INT *py)

{

*px = (*px >= TSP_MAXX) ? (TSP_MAXX) : *px;

*py = (*py >= TSP_MAXY) ? (TSP_MAXY) : *py;


*px = (*px - TSP_MINX);

*py = (*py - TSP_MINY);


*px = (*px >= 0) ? *px : 0;

*py = (*py >= 0) ? *py : 0;


*px = *px * TSP_LCDY / (TSP_MAXX - TSP_MINX);

*py = *py * TSP_LCDX / (TSP_MAXY - TSP_MINY);


*px = (*px >= TSP_LCDY)? (TSP_LCDY - 1) : *px;

*py = (*py >= TSP_LCDX)? (TSP_LCDX - 1) : *py;


*px = TSP_LCDY - *px - 1;

*py = TSP_LCDX - *py - 1;


}

榪欎釜瀹炵幇鏄垜鍦ㄦā鎷熷櫒鐨勫疄鐜頒唬鐮佸熀紜涓婁慨鏀圭殑. 榪欎釜鍑芥暟璁$畻X,Y鐨勫潗鏍囩敤鐨勬槸涓涓叕寮忥紝鑷充簬榪欎釜鍏紡鏄庝箞鏉ョ殑錛屾垜灝變笉澶竻妤氫簡. 鍙鏄庝竴鐐?

#define TSP_MINX 88

#define TSP_MINY 84


#define TSP_MAXX 952

#define TSP_MAXY 996

涓婇潰鍥涗釜鍊兼槸瀹氫箟X+, X-, Y+, Y-鍥涗釜鏈夋晥鐨勯噰鏍峰? 鐞嗚涓婂簲璇ユ槸0鍜?023(10 bit ADC), 浣嗗疄闄呰偗瀹氭湁鍋忓樊錛屽噯紜潵璁? 鎹簡涓嶅悓鐨勭‖浠跺鉤鍙幫紝榪欏洓涓煎簲璇ユ槸瑕侀噸鏂版祴榪囩殑. 鎴戝氨鐩存帴娌跨敤鍘烞SP涓殑鍊間簡. 

    



蹇冪窘 2011-03-01 11:50 鍙戣〃璇勮
]]>
WinCE 6.0涓柇椹卞姩紼嬪簭鍒嗘瀽錛堢數(shù)婧愪緥瀛愶級(jí)http://m.shnenglu.com/tdweng/articles/140884.html蹇冪窘蹇冪窘Tue, 01 Mar 2011 02:55:00 GMThttp://m.shnenglu.com/tdweng/articles/140884.htmlhttp://m.shnenglu.com/tdweng/comments/140884.htmlhttp://m.shnenglu.com/tdweng/articles/140884.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/140884.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/140884.html闃呰鍏ㄦ枃

蹇冪窘 2011-03-01 10:55 鍙戣〃璇勮
]]>
甯哥敤瀹?/title><link>http://m.shnenglu.com/tdweng/articles/140818.html</link><dc:creator>蹇冪窘</dc:creator><author>蹇冪窘</author><pubDate>Mon, 28 Feb 2011 08:26:00 GMT</pubDate><guid>http://m.shnenglu.com/tdweng/articles/140818.html</guid><wfw:comment>http://m.shnenglu.com/tdweng/comments/140818.html</wfw:comment><comments>http://m.shnenglu.com/tdweng/articles/140818.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/tdweng/comments/commentRss/140818.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/tdweng/services/trackbacks/140818.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 14pt"><span style="COLOR: red"><strong>UNREFERENCED_PARAMETER鐨勪綔鐢?/strong></span><br>鎴戜滑浠?UNREFERENCED_PARAMETER 寮濮嬪惂銆傝繖涓畯鍦?winnt.h 涓畾涔夊涓嬶細(xì) <br>#define UNREFERENCED_PARAMETER(P) (P)<br>銆銆鎹㈠彞璇濊 UNREFERENCED_PARAMETER 灞曞紑浼犻掔殑鍙傛暟鎴栬〃杈懼紡銆傚叾鐩殑鏄伩鍏嶇紪璇戝櫒鍏充簬鏈紩鐢ㄥ弬鏁扮殑璀﹀憡銆傝澶氱▼搴忓憳錛屽寘鎷垜鍦ㄥ唴錛屽枩嬈㈢敤鏈楂樼駭鍒殑璀﹀憡 Level 4錛?W4錛夎繘琛岀紪璇戙侺evel 4 灞炰簬“鑳借瀹夊叏蹇界暐鐨勪簨浠?#8221;鐨勮寖鐣淬傝櫧鐒跺畠浠彲鑳戒嬌浣犻毦鍫紝浣嗗緢灝戠牬鍧忎綘鐨勪唬鐮併備緥濡傦紝鍦ㄤ綘鐨勭▼搴忎腑鍙兘浼?xì)鏈墭q欐牱涓浜涗唬鐮佽錛?/p> <p style="FONT-SIZE: 14pt">int x=1;<br>銆銆浣嗕綘浠庢病鐢ㄥ埌榪?x銆備篃璁歌繖涓琛屾槸浣犱互鍓嶄嬌鐢?x 鏃剁暀涓嬫潵鐨勶紝鍙垹闄や簡浣跨敤瀹冪殑浠g爜錛岃屽繕浜嗗垹闄よ繖涓彉閲忋俉arning Level 4 鑳芥壘鍒拌繖浜涘皬楹葷儲(chǔ)銆傛墍浠ワ紝涓轟粈涔堜笉璁╃紪璇戝櫒甯姪浣犲畬鎴愬彲鑳芥槸鏈楂樼駭鍒殑涓撲笟鍖栧憿錛熺敤Level 4 緙栬瘧鏄睍紺轟綘宸ヤ綔鎬佸害鐨勪竴縐嶆柟寮忋傚鏋滀綘涓哄叕浼椾嬌鐢ㄨ呯紪鍐欏簱錛孡evel 4 鍒欐槸紺句氦紺艱妭涓婇渶瑕佺殑銆備綘涓嶆兂寮鴻揩浣犵殑寮鍙戜漢鍛樹嬌鐢ㄤ綆綰ч夐」娓呮磥鍦扮紪璇戜粬浠殑浠g爜銆?br>銆銆闂鏄紝Level 4 瀹炲湪鏄お榪囦簬娉ㄦ剰緇嗚妭錛屽湪 Level 4 涓婏紝緙栬瘧鍣ㄨ繛鏈紩鐢ㄥ弬鏁拌繖鏍鋒棤浼ゅぇ闆呯殑浜嬫儏涔熻鎶辨紙褰撶劧錛岄櫎闈炰綘鐪熺殑鏈夋剰浣跨敤榪欎釜鍙傛暟錛岃繖鏃朵究鐩稿畨鏃犱簨錛夈傚亣璁句綘鏈変竴涓嚱鏁板甫鏉ヤ袱涓弬鏁幫紝浣嗕綘鍙嬌鐢ㄥ叾涓竴涓細(xì)</p> <p style="FONT-SIZE: 14pt">int SomeFunction(int arg1, int arg2){     return arg1+5;}<br>浣跨敤 /W4錛岀紪璇戝櫒鎶辨細(xì)</p> <p style="FONT-SIZE: 14pt">“warning C4100: ''arg2'' : unreferenced formal parameter.”<br>涓轟簡楠楄繃緙栬瘧鍣紝浣犲彲浠ュ姞涓?UNREFERENCED_PARAMETER(arg2)銆傜幇鍦ㄧ紪璇戝櫒鍦ㄧ紪璇戜綘鐨勫紩鐢?arg2 鐨勫嚱鏁版椂渚夸細(xì)浣忓彛銆傚茍涓旂敱浜庤鍙ワ細(xì)</p> <p style="FONT-SIZE: 14pt">arg2;<br>瀹為檯涓婁笉鍋氫換浣曚簨鎯咃紝緙栬瘧鍣ㄤ笉浼?xì)湄?fù)涔嬩駭鐢熶換浣曚唬鐮侊紝鎵浠ュ湪絀洪棿鍜屾ц兘涓婁笉浼?xì)鏈変恢M綍鎹熷け銆?/p> <p style="FONT-SIZE: 14pt">銆銆緇嗗績鐨勪漢鍙兘浼?xì)闂Q氭棦鐒朵綘涓嶄嬌鐢?arg2錛岄偅褰撳垵涓轟綍瑕佸0鏄庡畠鍛紵閫氬父鏄洜涓轟綘瀹炵幇鏌愪釜鍑芥暟浠ユ弧瓚蟲煇浜汚PI鍥烘湁鐨勭講鍚嶉渶瑕侊紝渚嬪錛孧FC鐨?OnSize 澶勭悊渚嬬▼鐨勭講鍚嶅繀欏昏鍍忎笅闈㈣繖鏍鳳細(xì)</p> <p style="FONT-SIZE: 14pt">void OnSize(UINT nType, int cx, int cy);<br>銆銆榪欓噷 cx/cy 鏄獥鍙f柊鐨勫/楂橈紝nType 鏄竴涓被浼?SIZE_MAXIMIZED 鎴?SIZE_RESTORED 榪欐牱鐨勭紪鐮侊紝琛ㄧず紿楀彛鏄惁鏈澶у寲鎴栨槸甯歌澶у皬銆備竴鑸綘涓嶄細(xì)鍦ㄦ剰 nType錛屽彧浼?xì)鍏虫?cx 鍜?xy銆傛墍浠ュ鏋滀綘鎯崇敤 /W4錛屽垯蹇呴』浣跨敤 UNREFERENCED_PARAMETER(nType)銆侽nSize 鍙槸涓婂崈涓?MFC 鍜?Windows 鍑芥暟涔嬩竴銆傜紪鍐欎竴涓熀浜?Windows 鐨勭▼搴忥紝鍑犱箮涓嶅彲鑳戒笉紕板埌鏈紩鐢ㄥ弬鏁般?br>銆銆璇翠簡榪欎箞澶氬叧浜?UNREFERENCED_PARAMETER 鍐呭銆侸udy 鍦ㄥス鐨勯棶棰樹腑榪樻彁鍒頒簡鍙︿竴涓?C++ 紼嬪簭鍛樺父鐢ㄧ殑騫朵笖鍏朵綔鐢ㄤ笌 UNREFERENCED_PARAMETER 鐩稿悓鐨勮瘈紿嶏紝閭e氨鏄敞閲婂嚱鏁扮講鍚嶄腑鐨勫弬鏁板悕錛?/p> <p style="FONT-SIZE: 14pt">void CMyWnd::OnSize(UINT /* nType */, int cx, int cy){}<br>銆銆鐜板湪 nType 鏄湭鍛藉悕鍙傛暟錛屽叾鏁堟灉灝卞儚浣犳暡鍏?OnSize(UINT, int cx, int cy)涓鏍楓傞偅涔堢幇鍦ㄧ殑鍏抽敭闂鏄細(xì)浣犲簲璇ヤ嬌鐢ㄥ摢縐嶆柟娉曗斺旀湭鍛藉悕鍙傛暟錛岃繕鏄?UNREFERENCED_PARAMETER錛?br>銆銆澶у鏁版儏鍐典笅錛屼袱鑰呮病浠涔堝尯鍒紝浣跨敤鍝竴涓函綺規(guī)槸椋庢牸闂銆傦紙浣犲枩嬈綘鐨?java 鍜栧暋鏄粦鑹茶繕鏄ザ娌圭殑棰滆壊錛燂級(jí)浣嗘垜璁や負(fù)鑷沖皯鏈変竴縐嶆儏鍐靛繀欏諱嬌鐢?UNREFERENCED_PARAMETER銆傚亣璁句綘鍐沖畾紿楀彛涓嶅厑璁告渶澶у寲銆傞偅涔堜綘渚跨鐢?Maximize 鎸夐挳錛屼粠緋葷粺鑿滃崟涓垹闄わ紝鍚屾椂闃繪姣忎竴涓敤鎴瘋兘澶熸渶澶у寲紿楀彛鐨勬搷浣溿傚洜涓轟綘鏄亸鎵х媯錛堝ぇ澶氭暟濂界殑紼嬪簭鍛橀兘鏄亸鎵х媯錛夛紝浣犳坊鍔犱竴涓?ASSERT 錛堟柇璦錛変互紜繚浠g爜鎸夌収浣犵殑鎰忓浘榪愯錛?/p> <p style="FONT-SIZE: 14pt">void CMyWnd::OnSize(UINT nType, int cx, int cy){     ASSERT(nType != SIZE_MAXIMIZE);     ... // use cx, cy}<br>銆銆璐ㄦ鍥㈤槦绔敖鎵鑳戒互鍚勭鏂瑰紡榪愯浣犵殑紼嬪簭錛孉SSERT 浠庢病鏈夊脊鍑鴻繃錛屼簬鏄綘璁や負(fù)緙栬瘧鐢熸垚 Release 鐗堟湰鏄畨鍏ㄧ殑銆備絾鏄鏃?_DEBUG 瀹氫箟娌℃湁浜嗭紝ASSERT(nType != SIZE_MAXIMIZE)灞曞紑涓?((void)0)錛屽茍涓?nType 涓涓嬪瓙鎴愪簡涓涓湭寮曠敤鍙傛暟錛佽繖鏍瘋繘鍏ヤ綘騫插噣鐨勭紪璇戙備綘鏃犳硶娉ㄩ噴鎺夊弬鏁拌〃涓殑 nType錛屽洜涓轟綘瑕佸湪 ASSERT 涓嬌鐢ㄥ畠銆備簬鏄湪榪欑鎯呭喌涓嬧斺斾綘鍞竴浣跨敤鍙傛暟鐨勫湴鏂規(guī)槸鍦?ASSERT 涓垨鍏跺畠 _DEBUG 鏉′歡浠g爜涓斺斿彧鏈?UNREFERENCED_PARAMETER 浼?xì)淇濇寔缂栬瘧鍣ㄥ?Debug 鍜?Release 鐢熸垚妯″紡涓嬮兘娌℃湁闂銆傜煡閬撲簡鍚楋紵<br>銆銆緇撴潫璁ㄨ涔嬪墠錛屾垜鎯寵繕鏈変竴涓棶棰樻垜娌℃湁鎻愬強(qiáng)錛屽氨鏄綘鍙互璞′笅闈㈣繖鏍風(fēng)敤 pragma 鎸囦護(hù)鎶戝埗鍗曚竴鐨勭紪璇戝櫒璀﹀憡錛?/p> <p style="FONT-SIZE: 14pt">#pragma warning( disable : 4100 )<br>4100 鏄湭寮曠敤鍙傛暟鐨勫嚭閿欎唬鐮併俻ragma 鎶戝埗鍏朵綑鏂囦歡/妯″潡鐨勮璀﹀憡銆傜敤涓嬮潰鏂規(guī)硶鍙互閲嶆柊鍚敤榪欎釜璀﹀憡錛?/p> <p style="FONT-SIZE: 14pt">#pragma warning( default : 4100 )<br>銆銆涓嶇鎬庢牱錛岃緝濂界殑鏂規(guī)硶鏄湪紱佺敤鐗瑰畾鐨勮鍛婁箣鍓嶄繚瀛樻墍鏈夌殑璀﹀憡鐘舵侊紝鐒跺悗錛岀瓑浣犲仛瀹屼箣鍚庡啀鍥炲埌浠ュ墠鐨勯厤緗傞偅鏍鳳紝浣犱究鍥炲埌鐨勪互鍓嶇殑鐘舵侊紝榪欎釜鐘舵佷笉涓瀹氭槸緙栬瘧鍣ㄧ殑榛樿鐘舵併?br>銆銆鎵浠ヤ綘鑳借薄涓嬮潰榪欐牱鍦ㄤ唬鐮佺殑鍓嶅悗鐢?pragma 鎸囦護(hù)鎶戝埗鍗曚釜鍑芥暟鐨勬湭寮曠敤鍙傛暟璀﹀憡錛?/p> <p style="FONT-SIZE: 14pt">#pragma warning( push ) #pragma warning( disable : 4100 )void SomeFunction(...){}#pragma warning( pop )<br>銆銆褰撶劧錛屽浜庢湭寮曠敤鍙傛暟鑰岃█錛岃繖縐嶆柟娉曟湭鍏嶅啑闀匡紝浣嗗浜庡叾瀹冪被鍨嬬殑璀﹀憡鏉ヨ鍙兘灝變笉鏄繖鏍蜂簡銆傚簱鐢熸垚鑰呴兘鏄敤 #pragma warning 鏉ラ樆濉炶鍛婏紝榪欐牱浠栦滑鐨勪唬鐮佸彲浠ョ敤 /W4 榪涜娓呮磥緙栬瘧銆侻FC 涓厖婊′簡榪欐牱鐨?pragmas 鎸囦護(hù)銆傝繕鏈夊ソ澶氱殑 #pragma warning 閫夐」鎴戞病鏈夊湪鏈枃璁ㄨ銆傛湁鍏沖畠浠殑淇℃伅璇峰弬鑰冪浉鍏蟲枃妗c?/p> <p style="FONT-SIZE: 14pt"> </p> <p style="FONT-SIZE: 14pt">鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/apunix/archive/2008/01/14/2043945.aspx</a></p> <img src ="http://m.shnenglu.com/tdweng/aggbug/140818.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/tdweng/" target="_blank">蹇冪窘</a> 2011-02-28 16:26 <a href="http://m.shnenglu.com/tdweng/articles/140818.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>WinCE涓殑Debug Zone璋冭瘯http://m.shnenglu.com/tdweng/articles/140815.html蹇冪窘蹇冪窘Mon, 28 Feb 2011 08:18:00 GMThttp://m.shnenglu.com/tdweng/articles/140815.htmlhttp://m.shnenglu.com/tdweng/comments/140815.htmlhttp://m.shnenglu.com/tdweng/articles/140815.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/140815.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/140815.html鍦?/span>WinCE鐨勫紑鍙戠幆澧冧腑鏀寔Debug Zones鍔熻兘錛岄氬父涔熻縐頒負(fù)璋冭瘯鍩燂紝閫氳繃瀹冨彲浠ユ帶鍒舵墦鍗頒俊鎭傚綋鏌愪釜璋冭瘯鍩熻鎵撳紑浠ュ悗錛屽湪榪欎釜鍩熶腑鐨勬墦鍗頒俊鎭氨浼?xì)琚墦鍗板嚭鏉ュQ屽鏋滄煇涓皟璇曞煙琚叧闂簡錛岄偅涔堣繖涓煙涓殑鎵撳嵃淇℃伅灝變細(xì)琚叧闂傝皟璇曞煙鏄熀浜庢ā鍧楃殑錛屼篃灝辨槸璇翠竴涓ā鍧楋紝鍙兘鏄湪涓涓┍鍔ㄦ垨鑰呬竴涓簲鐢ㄤ腑閮藉彲浠ュ畾涔変竴涓皟璇曞煙錛岀敤鏉ヨ皟璇曡妯″潡銆備竴涓皟璇曞煙鏈澶氬彲浠ュ寘鎷?/span>16涓煙錛屼竴鑸湪姣忎竴涓ā鍧椾腑閮戒細(xì)鏈変竴涓叏灞鍙橀噺dpCurSettings錛岃鍙橀噺鐢ㄤ簬鎻忚堪璋冭瘯鍩熺殑鐩稿叧淇℃伅錛屽畠鐢變竴涓ā鍧楀悕瀛楋紝16涓煙鐨勫悕瀛楀拰涓涓帺鐮佺粍鎴愩備笅闈㈠叿涓緥瀛愶細(xì)

DBGPARAM dpCurSettings =

{
    TEXT("PCIBUS"), {
    TEXT("Errors"),TEXT("Warnings"),TEXT("Functions"),TEXT("Initialization"),
    TEXT("Enumeration"),TEXT("Load Order"),TEXT("Resource"),TEXT("Undefined"),
    TEXT("Undefined"),TEXT("Undefined"),TEXT("Undefined"),TEXT("Undefined"),
    TEXT("Undefined"),TEXT("Undefined"),TEXT("Undefined"),TEXT("Undefined") },
    0x20

};

鍏堟潵瑙i噴涓涓?/span>DBGPARAM緇撴瀯錛岃緇撴瀯鍦?/span>Dbgapi.h涓畾涔夛紝鎵浠ュ湪瀹氫箟dpCurSettings鐨勬椂鍊欒繕闇瑕佸寘鍚繖涓ご鏂囦歡錛岃緇撴瀯瀹氫箟濡備笅錛?/span>

typedef struct _DBGPARAM {

    WCHAR  lpszName[32];                    //妯″潡鐨勫悕瀛?/span>

    WCHAR  rglpszZones[16][32];            //璋冭瘯鍩熺殑鍚嶅瓧

    ULONG  ulZoneMask;                        //璋冭瘯鍩熺殑鎺╃爜

}DBGPARAM, *LPDBGPARAM;

 

鍦ㄤ笂闈㈢殑渚嬪瓙涓彲浠ョ湅鍒幫紝絎竴涓槸妯″潡鐨勫悕瀛楋紝鍙?/span>PCIBUS銆傝屽悗瀹氫箟浜?/span>16涓煙鐨勫悕瀛楋紝鍏朵腑鍙敤鍒頒簡7涓煙錛屽墿涓嬬殑閮藉畾涔変負(fù)Undefined浜嗐傛渶鍚庝竴涓暟瀛椾負(fù)鍩熺殑鎺╃爜錛岃〃紺哄綋鍓嶅摢涓煙鏄嬋媧葷殑錛?/span>0x20琛ㄧず鍙湁絎?/span>6涓煙鏄嬋媧葷殑銆備粠涓婇潰鐨勪緥瀛愯繕鍙互鐪嬪嚭錛屽墠7涓煙鏄湁鎰忎箟鐨勶紝鑰屼笖鎸夌収欏哄簭鍒嗗埆瀵瑰簲1鍒?/span>7銆備笅闈㈤拡瀵硅繖浜涘煙闇瑕佸畾涔夌浉搴?/span>Debug璋冭瘯鐨勫畯瀹氫箟錛?/span>

#define DBGZONE_ERROR                           1

#define DBGZONE_WARNING                     2

#define DBGZONE_FUNCTION                    3

#define DBGZONE_INIT                                4

#define DBGZONE_ENUM                            5

#define DBGZONE_LOADORDER                6

#define DBGZONE_RESOURCE                    7

 

涓婅堪瀹忓畾涔夊搴斿湪dpCurSettings涓殑7涓煙錛岀劧鍚庡氨鍙互鍦ㄦ墦鍗頒俊鎭殑鏃跺欙紝閫氳繃榪欎簺瀹忓畾涔夋潵瀵瑰簲鐩稿簲鐨勮皟璇曞煙浜嗐備緥濡傦細(xì)

  1. while(1)
  2. {
  3.     if (dwFlag)
  4.     {
  5.          DEBUGMSG(DBGZONE_ERROR, (L"Error found: %d\r\n", NumDevKeys));
  6.          break;
  7.      }
  8.      else
  9.      {
  10.          DEBUGMSG(DBGZONE_WARNING, (L"Warning found\r\n"));
  11.      }
  12.      DEBUGMSG(DBGZONE_LOADORDER, (L"load in a while loop\r\n"));
  13.      Sleep(100);
  14. }
  15.  

浠庤繖孌典唬鐮佸彲浠ョ湅鍑猴紝濡傛灉dpCurSettings涓殑鎺╃爜瀹氫箟涓?/span>0x20錛岄偅涔堝湪DEBUGMSG鐨勬墦鍗頒腑錛屽彧鏈夋潯浠朵負(fù)DBGZONE_LOADORDER鎵嶄細(xì)琚墦鍗幫紝寰幆涓殑鍓嶄袱涓墦鍗頒俊鎭槸涓嶄細(xì)琚墦鍗扮殑銆傚鏋滄兂璁╀笂闈㈢殑浠g爜涓殑鎵鏈?/span>DEBUGMSG閮借兘鎵撳嵃蹇呴』璁劇疆鎺╃爜濡備笅錛?/span>

dpCurSettings.ulZoneMask = DBGZONE_ERROR | DBGZONE_WARNING | DBGZONE_LOADORDER;

 

鍦ㄤ竴涓ā鍧椾腑瀹氫箟浜嗚皟璇曞煙錛屽鏋滄兂鍦ㄧ郴緇熶腑鍘諱嬌鐢ㄨ繕蹇呴』娉ㄥ唽璇ヨ皟璇曞煙錛岄渶瑕佺敤鍒扮殑鍑芥暟鍙?/span>DEBUGREGISTER(..)錛屽叾涓鎶婅璋冭瘯妯″潡鐨勫彞鏌勪綔涓哄弬鏁頒紶緇欏畠銆備緥濡傦細(xì)

DllMain(..)

{

    switch(op)

    {

        case DLL_PROCESS_ATTACH:

            DEBUGREGISTER(hPCIBUS);

            break;

        ….

    }

}

 

瀹屾垚浜嗕笂榪板伐浣滀互鍚庯紝灝卞彲浠ラ噸鏂扮紪璇戣皟璇曠殑妯″潡錛岀劧鍚庤繍琛岀郴緇熸潵璋冭瘯浜嗐傝皟璇曞煙鐨勪竴涓ソ澶勫氨鏄湪Debug鐨勮繃紼嬩腑錛屼笉闇瑕佺粓姝㈢郴緇熷彲浠ュ姩鎬佺殑鏀瑰彉璋冭瘯鍩燂紝鏂逛究鎴戜滑鍒嗘瀽闂銆傞鍏堬紝鎴戜滑鍙互鍩轟簬Platform. Builder涓殑CE Debug Zones鏉ヨ皟璇曪紝鍦?/span>VS2005鐨勮彍鍗曚腑閫夋嫨Target錛岀劧鍚庨夋嫨CE Debug Zones錛屽鍥撅細(xì)

 

鐒跺悗浼?xì)鍑虹庮C竴涓?/span>Debug Zones鐨勭獥鍙o紝鍦ㄧ獥鍙e脊鍑轟互鍚庯紝瀹冨彲鑳戒細(xì)鑺變竴鐐規(guī)椂闂存潵鏀墮泦褰撳墠鏀寔Debug Zone鐨勬ā鍧楋紝濡備笅鍥撅細(xì)

 

璇ュ浘鍙槸涓涓緥瀛愶紝宸﹁竟鏄劇ず浜嗗彲璋冭瘯鐨勬ā鍧楋紝閫夋嫨serial_SMDK2410.dll榪欎釜妯″潡錛屽氨鏄?/span>S3C2410鐨勪覆鍙i┍鍔ㄦā鍧椼傚湪鍙充晶鍙互鐪嬪埌鍚勪釜璋冭瘯鍩熷強(qiáng)鍚嶅瓧錛岀敤鎴峰彲浠ユ牴鎹渶瑕佹潵閫夋嫨鎵撳紑鍜屽叧闂浉搴旂殑璋冭瘯鍩燂紝鏈鍚庣偣鍑?/span>Apply鍜?/span>OK灝卞彲浠ヤ簡銆?/span>

 

褰撶劧錛岃繕鏈夊叾浠栫殑鏂規(guī)硶鏉ヤ慨鏀硅皟璇曞煙錛屼竴縐嶆柟娉曟槸浣跨敤Target Control涓殑zo鍛戒護(hù)鏉ヤ慨鏀癸紝Target Control灝嗗湪浠ュ悗浠嬬粛銆傝繕鏈変竴縐嶆柟娉曞氨鏄氳繃SetDbgZone(..)鍑芥暟鏉ヤ慨鏀廣傚畾涔夊涓嬶細(xì)

BOOL SetDbgZone(DWORDdwProcid, LPVOIDlpvMod, LPVOIDbaseptr, DWORDzone, LPDBGPARAMlpdbgTgt)

    dwProcid錛?/span>    榪涚▼鐨勫彞鏌?/span>

    lpvMod錛?/span>        璋冭瘯妯″潡鐨勫彞鏌?/span>

    baseptr錛?/span>        璁劇疆涓?/span>NULL

    zone錛?/span>            鏂扮殑璋冭瘯鍩熸帺鐮?/span>

    lpdbgTgt錛?/span>      榪斿洖鏂扮殑DBGPARAM緇撴瀯

 

涓婇潰瀵?/span>Debug Zone鐨勫畾涔夛紝浣跨敤浠ュ強(qiáng)璋冭瘯浣滀簡澶ц嚧鐨勪粙緇嶏紝鎸夌収涓婇潰鐨勬楠ゅ彲浠ョ粰涓涓ā鍧楁坊鍔犺皟璇曞煙錛屾敞鍐岃皟璇曞煙騫跺湪緋葷粺榪愯浠ュ悗闅忔椂鏇存敼璋冭瘯鍩燂紝鍏舵牴鏈洰鐨勬棤闈炴槸甯姪鎴戜滑鏉ヨ皟璇曟ā鍧楀拰鍒嗘瀽闂銆備竴鑸儏鍐典笅錛岃皟璇曞煙鍙湪Debug妯″紡涓嬩嬌鐢紝浣嗘槸涔熷彲浠ュ湪Release妯″紡涓嬩嬌鐢ㄣ備絾鏄湁浜涘湴鏂歸渶瑕佷慨鏀癸紝棣栧厛鍓嶉潰宸茬粡浠嬬粛榪?/span>Debug妯″紡涓嬬殑鎵撳嵃鐢?/span>DEBUGMSG錛岃?/span>Release妯″紡涓嬬殑鎵撳嵃搴旇浣跨敤RETAILMSG鍑芥暟銆傛墍浠ュ湪Release妯″紡涓嬶紝鎵撳嵃鍑芥暟搴旇鏀逛負(fù)RETAILMSG鍑芥暟銆傝繕鏈夊湪娉ㄥ唽璋冭瘯鍩熺殑鏃跺欙紝涓嶈兘鍐嶄嬌鐢?/span>DEBUGREGISTER(..)鍑芥暟錛岃屾槸搴旇鏀圭敤RETAILREGISTERZONES(..)鍑芥暟銆?/span>




蹇冪窘 2011-02-28 16:18 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              欧美日韩精品伦理作品在线免费观看 | 亚洲国内欧美| 99国产精品99久久久久久| 国产在线精品一区二区中文| 国产视频亚洲| 国产主播精品| 韩国亚洲精品| 亚洲国产精品久久精品怡红院| 国语自产精品视频在线看| 国产中文一区二区| 亚洲国产一区二区在线| 日韩视频在线播放| 性欧美1819sex性高清| 久久精品国产99国产精品澳门| 久久综合网hezyo| 亚洲精品国产精品国自产在线| 在线午夜精品| 久久激情视频| 欧美日韩高清在线播放| 国产乱理伦片在线观看夜一区| 黄色亚洲在线| 中文在线资源观看视频网站免费不卡| 欧美尤物一区| 欧美二区不卡| 一区二区三区日韩欧美精品| 久久精品国产久精国产思思| 欧美日韩成人一区二区| 影音先锋久久| 亚洲欧美一区在线| 免费成人黄色av| 一区二区三区鲁丝不卡| 久久精品亚洲一区二区| 欧美日韩精品福利| 亚洲高清在线播放| 亚洲永久免费视频| 欧美成人性网| 欧美在线看片| 国产精品盗摄一区二区三区| 亚洲精品欧美| 久久人人97超碰人人澡爱香蕉 | 欧美激情综合| 久久不射中文字幕| 欧美性猛交一区二区三区精品| 国产亚洲第一区| 国产精品久久久久久五月尺| 久久精品国产亚洲a| 亚洲在线成人精品| 欧美黄色一区二区| 欧美在线视频免费观看| 欧美色123| 亚洲精品久久久久久下一站| 久久国产精品久久w女人spa| 夜夜嗨av一区二区三区四区| 免费观看久久久4p| 国产一区二区三区高清播放| 亚洲欧美bt| 亚洲高清视频在线观看| 香蕉久久夜色精品国产| 国产精品久久久久一区二区三区共 | 亚洲国产一成人久久精品| 久久久亚洲国产美女国产盗摄| 在线一区视频| 国产精品夜夜夜一区二区三区尤| 亚洲视频导航| 在线视频一区二区| 国产精品萝li| 久久久91精品国产一区二区三区| 欧美亚洲一区二区三区| 国产日韩精品一区二区三区在线| 欧美在线网址| 久久天堂精品| 亚洲免费高清| 亚洲午夜在线观看视频在线| 国产日韩欧美在线一区| 久久久久久久久蜜桃| 久久久无码精品亚洲日韩按摩| 亚洲国产精品精华液2区45| 亚洲国产高清一区| 欧美色综合天天久久综合精品| 午夜精品久久久久久久99樱桃| 欧美亚洲一区二区在线| 韩国女主播一区二区三区| 欧美阿v一级看视频| 欧美激情一区二区三区蜜桃视频| 国产精品99久久久久久www| 亚洲一区二区三区影院| 黄色小说综合网站| 亚洲精品在线电影| 国产欧美不卡| 亚洲国产另类久久精品| 国产精品你懂得| 免费高清在线视频一区·| 欧美日韩国产二区| 久久久久久久久久久成人| 欧美大片一区二区三区| 午夜视频在线观看一区二区| 久久婷婷丁香| 亚洲免费在线播放| 麻豆久久久9性大片| 欧美亚洲自偷自偷| 欧美国产成人在线| 国产欧美日韩一区| 亚洲人成网站色ww在线| 中文成人激情娱乐网| 在线不卡a资源高清| 亚洲美女福利视频网站| 国产在线精品一区二区中文 | 亚洲高清一二三区| 国产亚洲精品高潮| 亚洲精品视频在线观看网站| 激情久久综艺| 午夜国产精品视频| 日韩视频―中文字幕| 欧美伊人精品成人久久综合97| av成人免费在线观看| 久久漫画官网| 久久久久久久久久久久久9999| 国产精品成人在线观看| 亚洲三级色网| 亚洲伦理在线| 欧美成人免费全部观看天天性色| 久久在线91| 国产亚洲精品aa午夜观看| 中国成人黄色视屏| 99精品免费网| 欧美精品三级日韩久久| 亚洲第一网站| 亚洲人成77777在线观看网| 久久免费精品日本久久中文字幕| 久久精品一区二区三区四区| 国产欧美精品日韩区二区麻豆天美 | 能在线观看的日韩av| 久久免费视频观看| 国产乱码精品1区2区3区| 国产精品99久久久久久白浆小说| 亚洲色在线视频| 欧美三级日本三级少妇99| 欧美xx视频| 一区二区三区国产在线| 最新高清无码专区| 久久精品国产免费观看| 久久精品国产第一区二区三区| 久久久欧美一区二区| 欧美一区深夜视频| 亚洲一区二区三区涩| 欧美日韩激情网| 亚洲日本久久| 99视频超级精品| 欧美日韩一区自拍| 亚洲视频在线播放| 欧美在线视频二区| 狠狠久久亚洲欧美专区| 久久手机免费观看| 亚洲国内在线| 亚洲男人影院| 红桃视频一区| 欧美激情一二三区| 国产精品99久久99久久久二8| 欧美在线啊v一区| 一区二区三区自拍| 欧美极品在线观看| 亚洲免费综合| 欧美a级理论片| 亚洲小少妇裸体bbw| 国产自产2019最新不卡| 欧美黄色一区二区| 亚洲尤物视频网| 欧美激情一区二区三区成人| 亚洲一区成人| 韩国久久久久| 欧美色视频在线| 久久亚洲图片| 亚洲自拍偷拍色片视频| 欧美丰满高潮xxxx喷水动漫| 亚洲一区影音先锋| 又紧又大又爽精品一区二区| 欧美日韩一区二区三区免费看| 性色一区二区三区| 亚洲欧洲综合另类| 久久久久国产精品厨房| 亚洲精品日本| 黄色精品网站| 国产精品视频免费观看| 欧美成人午夜视频| 欧美一区二区三区免费视| 亚洲国产精品高清久久久| 欧美一区永久视频免费观看| 亚洲精选一区二区| 黄色亚洲大片免费在线观看| 国产精品二区二区三区| 美日韩丰满少妇在线观看| 亚洲欧美一区二区激情| 亚洲三级免费电影| 欧美不卡视频一区发布| 久久国产手机看片| 亚洲一区二区三区在线视频| 亚洲精品日产精品乱码不卡| 一区二区三区在线观看欧美| 国产农村妇女精品| 国产精品成人aaaaa网站|