Windows CE Interface/zh TW: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: Windows CE Interface/zh TW
| Old | New | Line | |
|---|---|---|---|
| 1 | + | ## 設定Windows CE介面 | |
| 2 | + | ||
| 3 | + | 要設定Windows CE介面,您需要多裝一個安裝程式,或者是手動設定介面,以下對兩種方法都有詳細的說明,當然,透過安裝程式當然是簡單多了。 | |
| 4 | + | ||
| 5 | + | ### 使用額外的安裝程式 | |
| 6 | + | ||
| 7 | + | 要用第一次穩定的Free Pascal for Windows CE來安裝WinCE開發環境的動作從來都沒容易過。 | |
| 8 | + | ||
| 9 | + | 逐步教學: | |
| 10 | + | ||
| 11 | + | - 要在Windows作業系統上安裝最新版的Lazarus,請直接從SourceForge網站上下載: <http://sourceforge.net/project/showfiles.php?group_id=89339> | |
| 12 | + | ||
| 13 | + | - 要下載Lazarus編譯器的外加功能安裝程式,您也可以直接下載,同樣從Source Forge的下載網頁就可以找到了。 | |
| 14 | + | ||
| 15 | + | - 安裝完成後,您就可以透過Lazarus編譯Win32應用程式,以及arm-wince的應用程式了,當然,要編譯arm-wince應用程式時,您要先變更編譯器選項: | |
| 16 | + | ||
| 17 | + | Project-\>Compiler Option-\>Paths分頁 | |
| 18 | + | ||
| 19 | + | - - LCL Widget Type(various): wince | |
| 20 | + | ||
| 21 | + | Project-\>Compiler Option-\>Code分頁 | |
| 22 | + | ||
| 23 | + | - - Target OS: wince | |
| 24 | + | - Target CPU: arm | |
| 25 | + | ||
| 26 | + | ### 手動設定Windows CE介面 | |
| 27 | + | ||
| 28 | + | 提供給Windows CE用的編譯器跟執行時期函式庫只有在Free Pascal 2.1.x版裡面才有附。Lazarus的最新版本裡面有包含這一版的Free Pascal。 | |
| 29 | + | ||
| 30 | + | **步驟一** – 您得先在Windows上面把編譯器重新進行編譯,以產生Windows CE-ARM 交叉編譯器,相關指令請見: [[http://wiki.freepascal.org/WinCE port 移植WinCE]]. | |
| 31 | + | ||
| 32 | + | **步驟二** – 您必須用步驟一裡面產生出來的交叉編譯器,把FCL (Free Component Library)重新編譯,請參考[[http://wiki.freepascal.org/WinCE port|http://wiki.freepascal.org/WinCE_port#Building_FPC_libraries 這裡]]的指令說明。 | |
| 33 | + | ||
| 34 | + | **步驟三** – 將以下的指令作成批次檔,放在您安裝Lazarus的目錄下,並執行它: | |
| 35 | + | ||
| 36 | + | PATH=C:\Programas\lazarus\pp\bin\i386-win32;c:\Programas\arm | |
| 37 | + | make lcl LCL_PLATFORM=wince PP=ppcrossarm.exe CPU_TARGET=arm OS_TARGET=wince | |
| 38 | + | ||
| 39 | + | 上述指令會編譯出Windows CE可使用的LCL。 | |
| 40 | + | ||
| 41 | + | **步驟四** – 把LazarusPackageIntf 進行交叉編譯,這樣就可以使用第三方視覺元件了,請切換到lazarus\packager\registration目錄: | |
| 42 | + | ||
| 43 | + | PATH=C:\Programas\lazarus\pp\bin\i386-win32;c:\Programas\arm | |
| 44 | + | make PP=ppcrossarm.exe CPU_TARGET=arm OS_TARGET=wince | |
| 45 | + | ||
| 46 | + | 附註: 您必須要在您的專案的unit path中,特地把\$(LazarusDir)\packager\units\\\$(TargetCPU)-\$(TargetOS)\\ 這個路徑加入,只要您的專案有把FCL設定成必要套件,專案的unit path就一定要加該路徑。 | |
| 47 | + | ||
| 48 | + | **步驟五** – 現在您就可以開始使用Lazarus IDE來設計、編譯、對您的應用程式進行偵錯了。 | |
| 49 | + | ||
| 50 | + | - 您可以用跟以下的批次檔類似的指令來編譯您的應用程式: | |
| 51 | + | ||
| 52 | + | PATH=C:\Programas\lazarus\pp\bin\i386-win32;c:\Programas\arm | |
| 53 | + | ppcrossarm.exe -Twince -FuC:\Programas\fpc\rtl\units\arm-wince -FDC:\Programas\arm -XParm-wince- test.pas | |
| 54 | + | ppcrossarm.exe -Twince -FuC:\programas\lazarus\lcl\units\arm-wince -FuC:\programas\lazarus\lcl\units\arm-wince\wince -FuC:\Programas\fpc\rtl\units\arm-wince -FDC:\Programas\arm -XParm-wince- windowtest.pas | |
| 55 | + | ||
| 56 | + | ### 用Lazarus IDE來編譯Windows CE的專案 | |
| 57 | + | ||
| 58 | + | 附註: 最近常有使用者回報,在進行程式連結的時候,IDE會回報說找不到 "wincemenures.or"這個檔案。您只要從"lazarus/lcl/interfaces/wince"這個目錄裡把該檔案複製到"lazarus/lcl/units/arm-wince"目錄就行了。 | |
| 59 | + | ||
| 60 | + | 就像您要為其他介面跟作業系統的程式進行編譯的動作一樣。 請確定您已經把Lazarus選單裡面的設定設好了: Project-\>Compiler Option-\>Paths分頁 | |
| 61 | + | ||
| 62 | + | - - LCL Widget Type(various): wince | |
| 63 | + | ||
| 64 | + | Project-\>Compiler Option-\>Code分頁 | |
| 65 | + | ||
| 66 | + | - - Target OS: wince | |
| 67 | + | - Target CPU: arm | |
| 68 | + | ||
| 69 | + | 您還需要把: Environment options-\> Files分頁的 compiler path項目設定為 ppcrossarm.exe這個編譯程式。 | |
| 70 | + | ||
| 71 | + | 設定完後,IDE就可以用來編譯您的Windows CE專案了。 | |
| 72 | + | ||
| 73 | + | ### 在Lazarus IDE裡面對Windows CE軟體進行偵錯 | |
| 74 | + | ||
| 75 | + | 您也能直接在Lazarus IDE裡面對產生的應用程式進行偵錯。 | |
| 76 | + | ||
| 77 | + | **步驟一** – 在Lazarus IDE裡面,選擇**Environment-\>Debugger Options**項目,把裡面的debugger path設定為專為WinCE設計的gdb程式所在的目錄,您可以從這裡取得為WinCE設計的gdb程式執行檔:[1](ftp://ftp.freepascal.org/pub/fpc/contrib/cross/gdb-6.4-win32-arm-wince.zip) | |
| 78 | + | ||
| 79 | + | **步驟二** – 如果您使用Microsoft Device Emulator 1.0或2.0,請執行它,並確認您設定讓該模擬器使用128MB的記憶體,在模擬器裡面設定一個與作業系統共用的資料夾。然後在您用來編譯/建立應用程式的批次檔裡面,加入一個命令,把產生出來的WinCE執行程式複製到那個共用的資料夾裡面去。 以下是一個啟動模擬器,並直接設定讓模擬器使用128MB的指令。 | |
| 80 | + | ||
| 81 | + | start deviceemulator.exe ".\ppc_2003_se\PPC_2003_SE_WWE_ARMv4.bin" /memsize 128 /skin | |
| 82 | + | ".\ppc_2003_se\PocketPC_2003_Skin.xml" | |
| 83 | + | ||
| 84 | + | 啟動模擬器以後,如果您想停止它,請直接進行儲存並離開 ('save and exit') ,以後想要再啟動的時候,可以直接從開始命令列裡面執行啟動模擬器(或復原模擬器)的捷徑即可。 | |
| 85 | + | ||
| 86 | + | **步驟三** – 執行Device Emulator Manager,並在已經執行的模擬器項目上按滑鼠右鍵,選擇”連接底座”(cradle)。此時,Microsoft的ActiveSync應該會自動跳出來。如果ActiveSync沒有自己跳出來,則請您直接按模擬器裡面的”檔案-\>與電腦連接”(**File-\>Get connected**),如果ActiveSync這時候還是無法認得模擬器,請先”移除底座”,然後再次進行”連接底座”(cradle)的動作。 | |
| 87 | + | ||
| 88 | + | **步驟四** – 把該檔案透過檔案總管複製到 \gdb目錄裡面去。如果這是您第一次使用模擬器,則您必須在'My Pocket PC'這個項目中建立gbd目錄,從檔案總管裡面看到的 ‘My Pocket PC’這個項目就是模擬器的根目錄。(要讓這個動作加速的話,請直接打開一個檔案總管視窗,切換到您建置應用程式的目錄,點選該檔案,按下Ctrl+C,然後到模擬器裡面的 \gdb 目錄裡面按 Ctrl+V把該檔案貼上即可) | |
| 89 | + | ||
| 90 | + | **步驟五** – 現在您已經可以對您的WinCE應用程式進行偵錯了,您的application.gdb應該會被啟動,它會把arm-wince-pe-stub.exe這個執行檔複製到\gdb目錄裡面,並檢查您的應用程式執行檔已經存在,然後啟動您的程式。 如果您遇到任何錯誤,請確定\gdb這個資料夾是否存在,arm-wince-pe-stub.exe跟您的應用程式執行檔是否位於該資料夾中。使用者常遇到無法把過大的執行檔順利複製到\gdb資料夾裡面的情形,所以我們才希望您讓模擬器使用128MB的記憶體,否則模擬器的預設值是只會使用64MB而已的。 | |
| 91 | + | ||
| 92 | + | **註記:** | |
| 93 | + | ||
| 94 | + | 1\. 在WinCE系統裡面,在結束程式後,程式還會繼續被留在記憶體裡面所以您不能把執行檔給覆蓋掉。因此您得從WinCE的控制台(開始-\>設定)把記憶體裡面執行中的程式個體給刪除,步驟如下 (以下步驟是在模擬器裡面點選的喔): 開始工作列-\>設定-\>系統(分頁)-\>記憶體-\>執行程式(分頁)-\>點選您的應用程式名稱-\>點選”停止” | |
| 95 | + | ||
| 96 | + | 2\. 每次您完成偵錯的步驟後,請勿直接結束程式,而要執行”Program Reset”,來把偵錯程式重置。請注意,這個程序執行過後,有時候您的執行程式個體還會留在模擬器的記憶體裡面,所以請您依照註記1的說明,把該程式執行個體給刪除掉。 | |
| 97 | + | ||
| 98 | + | ### 安裝與使用Pocket PC 模擬器 | |
| 99 | + | ||
| 100 | + | 1 – 您可以從微軟的[網站](http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=dd567053-f231-4a64-a648-fea5e7061303)下載Pocket PC的模擬器. 我所列出的模擬器跟英文版網頁所列的不同,這是微軟Device Emulator 2.0的中文版,大家可以放心下載,不用擔心有語文上的隔閡。 | |
| 101 | + | ||
| 102 | + | 如果您需要正體中文的Windows Mobile 6裝置模擬器,請從[這裡](http://www.microsoft.com/downloads/details.aspx?FamilyID=38C46AA8-1DD7-426F-A913-4F370A65A582&displaylang=en)下載,請下載 0404\Windows Mobile 6 Professional Images (CHT).msi,安裝裡面有很多個模擬器,您如果不需要行動電話功能的純PDA,安裝後,請執行開始工作列-\>Windows Mobile 6 SDK-\>Standalone Emulator Images-\>Chinese (Traditional)中的Classic裝置即可。 | |
| 103 | + | ||
| 104 | + | 2 – 在英文版網頁裡面,提到建議大家下載微軟的虛擬機器網路驅動程式,好讓模擬器可以具備連線功能,但在中文網頁中提供給大家的是微軟的裝置管理員2.0版,已經內建NE2000驅動程式,可以直接讓模擬器分享電腦網路卡以獲得網路功能了,所以這些驅動程式就免了。 | |
| 105 | + | ||
| 106 | + | 3 – 下載ActiveSync 4.5來安裝,如果您的電腦上已經裝了ActiveSync 4.5或更新的版本,就可以跳過這個步驟,否則,請您到[這個網頁](http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=9e641c34-6f7f-404d-a04b-dc09f8141141)把ActiveSync 4.5下載回來安裝,雖然該網頁會要求您註冊,但也別怕,請直接按下繼續,然後選擇不要註冊,還是可以下載回來安裝的。(如果您使用的是Windows Vista,那就不用下載ActiveSync 4.5了,您得下載[Windows Mobile裝置中心6.1 (32位元版)](http://www.microsoft.com/downloads/details.aspx?familyid=46F72DF1-E46A-4A5F-A791-09F07AAA1914&displaylang=zh-tw)或是[Windows Mobile裝置中心6.1 (64位元版)](http://www.microsoft.com/downloads/details.aspx?familyid=4F68EB56-7825-43B2-AC89-2030ED98ED95&displaylang=zh-tw),請依照您的Windows Vista的版本決定要下載哪一個程式回來安裝。 | |
| 107 | + | ||
| 108 | + | 4 – 設定ActiveSync/Windows Mobile裝置中心6.1,在一般完全不設定的情形下,ActiveSync/ Windows Mobile裝置中心6.1只能辨識插入USB插槽的Windows Mobile裝置,模擬器是無法被辨識的。請您依照下列步驟進行設定: ActiveSync 4.5: 檔案-\>連線設定: 允許連線到下列其中一個裝置 : 請選擇 DMA | |
| 109 | + | ||
| 110 | + | Windows Mobile裝置中心6.1: “行動裝置設定”-\>”連線設定”: 勾選”允許連線到下列其中一個裝置”,選擇”DMA”後,按確定鍵。 | |
| 111 | + | ||
| 112 | + | 至此,您已經有了完整功能的PocketPC模擬器了,它已經可以用來跟Lazarus進行應用程式開發的工作了。 | |
| 113 | + | ||
| 114 | + | 要在模擬器上面對Lazarus開發的應用程式進行偵錯,您需要透過ActiveSync/Windows Mobile 裝置中心6.1來使用GDB,不然就只能直接執行了。 | |
| 115 | + | ||
| 116 | + | #### 在模擬器上面執行應用程式 | |
| 117 | + | ||
| 118 | + | 1 – 點選Windows開始工作列-\>Windows Mobile 6 SDK-\>Standalone Emulator Images-\>Chinese (Traditional)中的Classic裝置,如果您需要具備電話功能的Pocket PC裝置,則請您點選其它的模擬裝置,裡頭有多種不同螢幕解析度的模擬裝置喔。 | |
| 119 | + | ||
| 120 | + | 2 – 如果您從來沒有為這個模擬裝置設定任何共用資料夾的話,請現在幫它設定好,設定的方法如下: 點選模擬裝置視窗上面: 檔案-\>設定-\>一般(分頁) 最底下有個共用資料夾,點選右邊的按鍵選擇一個系統中的資料夾即可。 | |
| 121 | + | ||
| 122 | + | 設定完畢後,您就有了可以跟Windows CE模擬裝置共用的資料夾,也就能把您用Lazarus作出來的Windows CE執行檔從這裡放到模擬裝置上面去執行了。 | |
| 123 | + | ||
| 124 | + | 3 – 在模擬裝置上面點選: 開始-\>程式集,然後在畫面中點選”檔案總管”,然後從下拉式選單中,您就可以選擇”Storage Card”。”Storage Card”這個資料夾就是您剛剛設定的共用資料夾了,如果您是把執行檔放在這個資料夾裡面,直接點它,就可以從模擬裝置上面執行它了。 | |
| 125 | + | ||
| 126 | + | ## 螢幕截圖 | |
| 127 | + | ||
| 128 | + | 以下我們用Free Pascal與Lazarus+WinCE的一個簡單範例來測試交叉編譯器:   | |
| 129 | + | ||
| 130 | + | ## 要怎麼新增一個視覺元件呢? | |
| 131 | + | ||
| 132 | + | 範例: TButton. | |
| 133 | + | ||
| 134 | + | TButton是在lcl/buttons.pp這個檔案中定義的。它是一個跟作業系統無關的LCL元件,所以不管是開發哪一種平台應用程式的程式設計人員都能使用到它。 | |
| 135 | + | ||
| 136 | + | 它的視覺化類別(widgetset class)則是寫在lcl/widgetset/wsbuttons.pp這個檔案中,這是所有視覺化元件的基礎,與平台無關的(可以支援qt, carbon, gtk, win32等)。 | |
| 137 | + | ||
| 138 | + | 它的wince介面類別則在lcl/interfaces/wince/wincewsbuttons.pp這個檔案裡: | |
| 139 | + | ||
| 140 | + | ` TWinCEWSButton = class(TWSButton)`\ | |
| 141 | + | ` private`\ | |
| 142 | + | ` protected`\ | |
| 143 | + | ` public`\ | |
| 144 | + | ` class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;`\ | |
| 145 | + | ` end;` | |
| 146 | + | ||
| 147 | + | 每個WS類別,實際上都做了一些需要進行註冊的動作,您可以在每個wincewsXXX.pp檔案結尾的initialization區段裡看到: | |
| 148 | + | ||
| 149 | + | ` RegisterWSComponent(TButton, TWinCEWSButton);` | |
| 150 | + | ||
| 151 | + | 請注意,DestroyHandle也是需要被實現的,它會被用來把這些控制項所用到的記憶體空間釋放掉。 | |
| 152 | + | ||
| 153 | + | ## 請同時參照 | |
| 154 | + | ||
| 155 | + | - [[Windows CE Development Notes/zh TW|Windows CE 介面開發注意事項]] | |
| 156 | + | - 使用Win64+Lazarus開發Windows CE程式的補充教學 | |
| 157 | + | - [[Roadmap|Windows CE介面的未來發展計劃]] | |
| 158 | + | - WindowsCE應用程式的迷你架構:[pkMiniGUI.pas](http://ccrdude.net/files/fpc/pkMiniGUI.pas) [說明文件](http://ccrdude.net/docs/pkCEStuff.htm) | |
| 159 | + | - [[KOL-CE/zh TW|KOL GUI函式庫,將WinCE介面進行完整的移植]] – 讓Win32/WinCE的專案可以快速轉移。(我自己是還沒成功測試過這部分,但本頁的說明我已經成功的在Windows Vista + Windows Mobile 6 模擬器上面測試成功了-2008/1/5) | |
| 160 | + | ||
| 161 | + | ## 下載 | |
| 162 | + | ||
| 163 | + | - Lazarus的Windows版安裝程式是建構於FPC 2.1.1或更新的版本:<ftp://ftp.hu.freepascal.org/pub/lazarus/cross/>. 這些檔案也被同步放在 <http://michael-ep3.physik.uni-halle.de/Lazarus/cross/> 更詳細的資料可以從 <http://www.mail-archive.com/lazarus@miraclec.com/msg12909.html> 找到,感謝Vincent Snijders。 | |
| 164 | + | ||
| 165 | + | ## 本網頁的更新記錄 | |
| 166 | + | ||
| 167 | + | - 初版正體中文翻譯,以及Device Emulator 2.0等相關資訊,由[元智大學](http://www.yzu.edu.tw/)[資訊傳播學系](http://www.infocom.yzu.edu.tw/)兼任講師[張子仁 (Dennies Chang)](mailto://dennies@ms4.hinet.net)製作。 - 2008/1/4 User:Dennies | |
| 168 | + | ||
| 169 | + | --- | |
| 170 | + | *From the Free Pascal wiki, page "Windows CE Interface/zh TW", as it stood on 2015-07-20 after a change by FTurtle, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).* | |
| 171 | + | Category: WinCE/zh TW | |
| 172 | + | Category: zh |
