Sign in Join
Wiki copytemporary

Windows CE Interface/zh TW: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11## 設定Windows CE介面
22
33要設定Windows CE介面,您需要多裝一個安裝程式,或者是手動設定介面,以下對兩種方法都有詳細的說明,當然,透過安裝程式當然是簡單多了。
44
55### 使用額外的安裝程式
66
77要用第一次穩定的Free Pascal for Windows CE來安裝WinCE開發環境的動作從來都沒容易過。
88
99逐步教學:
1010
1111- 要在Windows作業系統上安裝最新版的Lazarus,請直接從SourceForge網站上下載: <http://sourceforge.net/project/showfiles.php?group_id=89339>
1212
1313- 要下載Lazarus編譯器的外加功能安裝程式,您也可以直接下載,同樣從Source Forge的下載網頁就可以找到了。
1414
1515- 安裝完成後,您就可以透過Lazarus編譯Win32應用程式,以及arm-wince的應用程式了,當然,要編譯arm-wince應用程式時,您要先變更編譯器選項:
1616
1717Project-\>Compiler Option-\>Paths分頁
1818
1919- - LCL Widget Type(various): wince
2020
2121Project-\>Compiler Option-\>Code分頁
2222
2323- - Target OS: wince
2424 - Target CPU: arm
2525
2626### 手動設定Windows CE介面
2727
2828提供給Windows CE用的編譯器跟執行時期函式庫只有在Free Pascal 2.1.x版裡面才有附。Lazarus的最新版本裡面有包含這一版的Free Pascal。
2929
3030**步驟一** – 您得先在Windows上面把編譯器重新進行編譯,以產生Windows CE-ARM 交叉編譯器,相關指令請見: [[http://wiki.freepascal.org/WinCE port 移植WinCE]].
3131
3232**步驟二** – 您必須用步驟一裡面產生出來的交叉編譯器,把FCL (Free Component Library)重新編譯,請參考[[http://wiki.freepascal.org/WinCE port|http://wiki.freepascal.org/WinCE_port#Building_FPC_libraries 這裡]]的指令說明。
3333
3434**步驟三** – 將以下的指令作成批次檔,放在您安裝Lazarus的目錄下,並執行它:
3535
3636 PATH=C:\Programas\lazarus\pp\bin\i386-win32;c:\Programas\arm
3737 make lcl LCL_PLATFORM=wince PP=ppcrossarm.exe CPU_TARGET=arm OS_TARGET=wince
3838
3939上述指令會編譯出Windows CE可使用的LCL。
4040
4141**步驟四** – 把LazarusPackageIntf 進行交叉編譯,這樣就可以使用第三方視覺元件了,請切換到lazarus\packager\registration目錄:
4242
4343 PATH=C:\Programas\lazarus\pp\bin\i386-win32;c:\Programas\arm
4444 make PP=ppcrossarm.exe CPU_TARGET=arm OS_TARGET=wince
4545
4646附註: 您必須要在您的專案的unit path中,特地把\$(LazarusDir)\packager\units\\\$(TargetCPU)-\$(TargetOS)\\ 這個路徑加入,只要您的專案有把FCL設定成必要套件,專案的unit path就一定要加該路徑。
4747
4848**步驟五** – 現在您就可以開始使用Lazarus IDE來設計、編譯、對您的應用程式進行偵錯了。
4949
5050- 您可以用跟以下的批次檔類似的指令來編譯您的應用程式:
5151
5252 PATH=C:\Programas\lazarus\pp\bin\i386-win32;c:\Programas\arm
5353 ppcrossarm.exe -Twince -FuC:\Programas\fpc\rtl\units\arm-wince -FDC:\Programas\arm -XParm-wince- test.pas
5454 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
5555
5656### 用Lazarus IDE來編譯Windows CE的專案
5757
5858附註: 最近常有使用者回報,在進行程式連結的時候,IDE會回報說找不到 "wincemenures.or"這個檔案。您只要從"lazarus/lcl/interfaces/wince"這個目錄裡把該檔案複製到"lazarus/lcl/units/arm-wince"目錄就行了。
5959
6060就像您要為其他介面跟作業系統的程式進行編譯的動作一樣。 請確定您已經把Lazarus選單裡面的設定設好了: Project-\>Compiler Option-\>Paths分頁
6161
6262- - LCL Widget Type(various): wince
6363
6464Project-\>Compiler Option-\>Code分頁
6565
6666- - Target OS: wince
6767 - Target CPU: arm
6868
6969您還需要把: Environment options-\> Files分頁的 compiler path項目設定為 ppcrossarm.exe這個編譯程式。
7070
7171設定完後,IDE就可以用來編譯您的Windows CE專案了。
7272
7373### 在Lazarus IDE裡面對Windows CE軟體進行偵錯
7474
7575您也能直接在Lazarus IDE裡面對產生的應用程式進行偵錯。
7676
7777**步驟一** – 在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)
7878
7979**步驟二** – 如果您使用Microsoft Device Emulator 1.0或2.0,請執行它,並確認您設定讓該模擬器使用128MB的記憶體,在模擬器裡面設定一個與作業系統共用的資料夾。然後在您用來編譯/建立應用程式的批次檔裡面,加入一個命令,把產生出來的WinCE執行程式複製到那個共用的資料夾裡面去。 以下是一個啟動模擬器,並直接設定讓模擬器使用128MB的指令。
8080
8181 start deviceemulator.exe ".\ppc_2003_se\PPC_2003_SE_WWE_ARMv4.bin" /memsize 128 /skin
8282 ".\ppc_2003_se\PocketPC_2003_Skin.xml"
8383
8484啟動模擬器以後,如果您想停止它,請直接進行儲存並離開 ('save and exit') ,以後想要再啟動的時候,可以直接從開始命令列裡面執行啟動模擬器(或復原模擬器)的捷徑即可。
8585
8686**步驟三** – 執行Device Emulator Manager,並在已經執行的模擬器項目上按滑鼠右鍵,選擇”連接底座”(cradle)。此時,Microsoft的ActiveSync應該會自動跳出來。如果ActiveSync沒有自己跳出來,則請您直接按模擬器裡面的”檔案-\>與電腦連接”(**File-\>Get connected**),如果ActiveSync這時候還是無法認得模擬器,請先”移除底座”,然後再次進行”連接底座”(cradle)的動作。
8787
8888**步驟四** – 把該檔案透過檔案總管複製到 \gdb目錄裡面去。如果這是您第一次使用模擬器,則您必須在'My Pocket PC'這個項目中建立gbd目錄,從檔案總管裡面看到的 ‘My Pocket PC’這個項目就是模擬器的根目錄。(要讓這個動作加速的話,請直接打開一個檔案總管視窗,切換到您建置應用程式的目錄,點選該檔案,按下Ctrl+C,然後到模擬器裡面的 \gdb 目錄裡面按 Ctrl+V把該檔案貼上即可)
8989
9090**步驟五** – 現在您已經可以對您的WinCE應用程式進行偵錯了,您的application.gdb應該會被啟動,它會把arm-wince-pe-stub.exe這個執行檔複製到\gdb目錄裡面,並檢查您的應用程式執行檔已經存在,然後啟動您的程式。 如果您遇到任何錯誤,請確定\gdb這個資料夾是否存在,arm-wince-pe-stub.exe跟您的應用程式執行檔是否位於該資料夾中。使用者常遇到無法把過大的執行檔順利複製到\gdb資料夾裡面的情形,所以我們才希望您讓模擬器使用128MB的記憶體,否則模擬器的預設值是只會使用64MB而已的。
9191
9292**註記:**
9393
94941\. 在WinCE系統裡面,在結束程式後,程式還會繼續被留在記憶體裡面所以您不能把執行檔給覆蓋掉。因此您得從WinCE的控制台(開始-\>設定)把記憶體裡面執行中的程式個體給刪除,步驟如下 (以下步驟是在模擬器裡面點選的喔): 開始工作列-\>設定-\>系統(分頁)-\>記憶體-\>執行程式(分頁)-\>點選您的應用程式名稱-\>點選”停止”
9595
96962\. 每次您完成偵錯的步驟後,請勿直接結束程式,而要執行”Program Reset”,來把偵錯程式重置。請注意,這個程序執行過後,有時候您的執行程式個體還會留在模擬器的記憶體裡面,所以請您依照註記1的說明,把該程式執行個體給刪除掉。
9797
9898### 安裝與使用Pocket PC 模擬器
9999
1001001 – 您可以從微軟的[網站](http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=dd567053-f231-4a64-a648-fea5e7061303)下載Pocket PC的模擬器. 我所列出的模擬器跟英文版網頁所列的不同,這是微軟Device Emulator 2.0的中文版,大家可以放心下載,不用擔心有語文上的隔閡。
101101
102102如果您需要正體中文的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裝置即可。
103103
1041042 – 在英文版網頁裡面,提到建議大家下載微軟的虛擬機器網路驅動程式,好讓模擬器可以具備連線功能,但在中文網頁中提供給大家的是微軟的裝置管理員2.0版,已經內建NE2000驅動程式,可以直接讓模擬器分享電腦網路卡以獲得網路功能了,所以這些驅動程式就免了。
105105
1061063 – 下載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的版本決定要下載哪一個程式回來安裝。
107107
1081084 – 設定ActiveSync/Windows Mobile裝置中心6.1,在一般完全不設定的情形下,ActiveSync/ Windows Mobile裝置中心6.1只能辨識插入USB插槽的Windows Mobile裝置,模擬器是無法被辨識的。請您依照下列步驟進行設定: ActiveSync 4.5: 檔案-\>連線設定: 允許連線到下列其中一個裝置 : 請選擇 DMA
109109
110110Windows Mobile裝置中心6.1: “行動裝置設定”-\>”連線設定”: 勾選”允許連線到下列其中一個裝置”,選擇”DMA”後,按確定鍵。
111111
112112至此,您已經有了完整功能的PocketPC模擬器了,它已經可以用來跟Lazarus進行應用程式開發的工作了。
113113
114114要在模擬器上面對Lazarus開發的應用程式進行偵錯,您需要透過ActiveSync/Windows Mobile 裝置中心6.1來使用GDB,不然就只能直接執行了。
115115
116116#### 在模擬器上面執行應用程式
117117
1181181 – 點選Windows開始工作列-\>Windows Mobile 6 SDK-\>Standalone Emulator Images-\>Chinese (Traditional)中的Classic裝置,如果您需要具備電話功能的Pocket PC裝置,則請您點選其它的模擬裝置,裡頭有多種不同螢幕解析度的模擬裝置喔。
119119
1201202 – 如果您從來沒有為這個模擬裝置設定任何共用資料夾的話,請現在幫它設定好,設定的方法如下: 點選模擬裝置視窗上面: 檔案-\>設定-\>一般(分頁) 最底下有個共用資料夾,點選右邊的按鍵選擇一個系統中的資料夾即可。
121121
122122設定完畢後,您就有了可以跟Windows CE模擬裝置共用的資料夾,也就能把您用Lazarus作出來的Windows CE執行檔從這裡放到模擬裝置上面去執行了。
123123
1241243 – 在模擬裝置上面點選: 開始-\>程式集,然後在畫面中點選”檔案總管”,然後從下拉式選單中,您就可以選擇”Storage Card”。”Storage Card”這個資料夾就是您剛剛設定的共用資料夾了,如果您是把執行檔放在這個資料夾裡面,直接點它,就可以從模擬裝置上面執行它了。
125125
126126## 螢幕截圖
127127
128128以下我們用Free Pascal與Lazarus+WinCE的一個簡單範例來測試交叉編譯器: ![](/wiki-images/e/e5/Capture_2.jpg) ![](/wiki-images/d/d7/Wince.PNG)
129129
130130## 要怎麼新增一個視覺元件呢?
131131
132132範例: TButton.
133133
134134TButton是在lcl/buttons.pp這個檔案中定義的。它是一個跟作業系統無關的LCL元件,所以不管是開發哪一種平台應用程式的程式設計人員都能使用到它。
135135
136136它的視覺化類別(widgetset class)則是寫在lcl/widgetset/wsbuttons.pp這個檔案中,這是所有視覺化元件的基礎,與平台無關的(可以支援qt, carbon, gtk, win32等)。
137137
138138它的wince介面類別則在lcl/interfaces/wince/wincewsbuttons.pp這個檔案裡:
139139
140-` TWinCEWSButton = class(TWSButton)`\
141-` private`\
142-` protected`\
143-` public`\
144-`   class function  CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;`\
145-` end;`
140+``` pascal
141+ TWinCEWSButton = class(TWSButton)
142+ private
143+ protected
144+ public
145+ class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
146+ end;
147+```
146148
147149每個WS類別,實際上都做了一些需要進行註冊的動作,您可以在每個wincewsXXX.pp檔案結尾的initialization區段裡看到:
148150
149-` RegisterWSComponent(TButton, TWinCEWSButton);`
151+```text
152+ RegisterWSComponent(TButton, TWinCEWSButton);
153+```
150154
151155請注意,DestroyHandle也是需要被實現的,它會被用來把這些控制項所用到的記憶體空間釋放掉。
152156
153157## 請同時參照
154158
155159- [[Windows CE Development Notes/zh TW|Windows CE 介面開發注意事項]]
156160- 使用Win64+Lazarus開發Windows CE程式的補充教學
157161- [[Roadmap|Windows CE介面的未來發展計劃]]
158162- WindowsCE應用程式的迷你架構:[pkMiniGUI.pas](http://ccrdude.net/files/fpc/pkMiniGUI.pas) [說明文件](http://ccrdude.net/docs/pkCEStuff.htm)
159163- [[KOL-CE/zh TW|KOL GUI函式庫,將WinCE介面進行完整的移植]] – 讓Win32/WinCE的專案可以快速轉移。(我自己是還沒成功測試過這部分,但本頁的說明我已經成功的在Windows Vista + Windows Mobile 6 模擬器上面測試成功了-2008/1/5)
160164
161165## 下載
162166
163167- 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。
164168
165169## 本網頁的更新記錄
166170
167171- 初版正體中文翻譯,以及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
168172
169173---
170174*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).*
171175Category: WinCE/zh TW
172176Category: zh

Back to history