“零基礎(chǔ)”學(xué)習(xí)WinCE開發(fā)
在接觸WinCE時候的基礎(chǔ):
軟件語言基礎(chǔ):C/C++/C#。我不是計算機專業(yè)的,所以這些語言基礎(chǔ)也是比較業(yè)余的。經(jīng)驗不豐富,遇到問題就是查MSDN或者到網(wǎng)上查找相關(guān)解決方案即可,程序就有這點好處,很多東西都是成熟的技術(shù),到網(wǎng)上甚至連源碼都能找到的。
硬件平臺基礎(chǔ):用的是廣州致遠的開發(fā)板EPCS-6960I-W,這種小型工控板自帶WinCE系統(tǒng),而且有比較多的硬件接口可以用來進行數(shù)據(jù)采集和數(shù)據(jù)通訊。
學(xué)習(xí)資源:廣州致遠公司會提供一張學(xué)習(xí)光盤,里面有相應(yīng)的開發(fā)示例和工控板的電路結(jié)構(gòu)及一些硬件驅(qū)動。在安裝了廠家提供的EPCS-6960I-W工控板對應(yīng)的SDK開發(fā)包后,會在相應(yīng)的目錄下找到WinCE的幫助文檔,里面對WinCE系統(tǒng)的相關(guān)API的詳細介紹。還有就是到遇到問題可以到網(wǎng)上找解決方法,或者直接打電話到廠家的技術(shù)部進行咨詢。
1. 認(rèn)識WinCE
Windows CE 是微軟公司開發(fā)的一個針對小型設(shè)備(它是典型的擁有有限內(nèi)存的無磁盤系統(tǒng))的通用操作系統(tǒng)。主要用于嵌入式系統(tǒng)和移動終端設(shè)備上,操作界面和PC機上的 WinXp系統(tǒng)比較類似,例如也是窗口化的操作界面,也具有磁盤資源管理器,文件系統(tǒng)和網(wǎng)絡(luò)通訊協(xié)議和WinXp一樣,程序開發(fā)也和WinXp環(huán)境下的程序開發(fā)。具體關(guān)于WinCE的介紹可以到網(wǎng)上搜索相關(guān)資料。個人的理解就是,WinCE可以看作一個精簡后的WinXp系統(tǒng),“麻雀雖小,五臟俱全”,在一些小型工控系統(tǒng)中可以發(fā)揮巨大的作用。
2. 開發(fā)環(huán)境
2.1 連接設(shè)備
先安裝ActiveSync4.2同步軟件。安裝完畢后,你的PC機上的資源管理器中會多一個“移動設(shè)備”的圖標(biāo)(如下圖),這個就是和移動設(shè)備進行文件交互的接口。通過這個接口,用戶可以在PC機上對移動設(shè)備的文件進行讀取的相關(guān)簡單操作。
將工控機主板用USB連接到PC機上,給主板接上電源并啟動WinCE系統(tǒng)。然后在PC端Micrsoft ActiveSync同步軟件會自動進行檢測,并連接到移動設(shè)備。連接成功后,會有如下圖的提示出現(xiàn)。
當(dāng)PC機和移動設(shè)備成功建立連接后,用戶就能以PC機上的資源管理器中的“移動設(shè)備”作為入口對移動設(shè)備進行文件訪問和其它相關(guān)操作了,比如,假如你是利用PC側(cè)的WinCE模擬器開發(fā)的程序,那么生成的執(zhí)行文件也在PC上,你可以通過“移動設(shè)備”接口,將你的程序文件“下載”到移動設(shè)備中。
注意:只有連接設(shè)備成功了,才能進行后面的程序開發(fā)和調(diào)試。
小建議:最開始的時候,都以為WinCE開發(fā)只需要一塊安裝了WinCE系統(tǒng)的工控板即可,不需要LCD,然后就直接黑燈瞎火地弄了一個月,最后實在忍受不了,然后花了800RMB買了一塊配套液晶板,才突然感覺好起來。開發(fā)Windows程序的時候,液晶板是必需的,否則你在開發(fā)的時候?qū)茈y受的,就像給了你一臺沒有顯示器的電腦,雖然你可以通過鼠標(biāo)進行盲操作,但那種感覺應(yīng)該是比較糟糕的吧。
2.2 開發(fā)環(huán)境中需要進行的設(shè)置。
本次開發(fā)選用的環(huán)境是VS2005,雖然網(wǎng)上很多例程都是用Microsoft eMbedded C++ 4.0(以下簡稱eVC4.0)進行開發(fā)的,但是個人感覺VS2005的功能更強大一些,體驗也更好一些。eVC4.0和開發(fā)界面和VC6.0一樣(如下圖),是一款比較經(jīng)典的開發(fā)環(huán)境,喜歡VC6.0風(fēng)格的用戶可以選用eVC4.0進行開發(fā)。
2.3 開發(fā)語言選擇
WinCE5.0的版本,支持C/C++/C#。因為支持C#,也就是說在WinCE5.0集成了.NET框架,但是因為WinCE系統(tǒng)在工控板上的應(yīng)用,屬于比較底層的應(yīng)用,會涉及較多的硬件接口的開發(fā),所以一般建議用C++進行開發(fā),但是因為C#在高層應(yīng)用上的開發(fā)具有難度低、周期短的特點,所以可以進行兩種語言的混合編程的(在今后的“DLL應(yīng)用”中將會講到這種技術(shù)的應(yīng)用)。
2.4 開發(fā)環(huán)境的設(shè)置
2.4.1 C#項目的建立和設(shè)置
用VS2005建立智能設(shè)備Windows CE 5.0的C#項目,開發(fā)環(huán)境就會自動建立一個模板,用戶可以在此代碼模板中寫自己的程序了。
但是此時如果點擊調(diào)試,將彈出一個移動設(shè)備模擬器,不能和實際的工控板硬件進行連接調(diào)試,所以需要進行相關(guān)設(shè)置。在解決方案資源管理器中,選中項目,右擊-屬性,然后會彈出屬性設(shè)置頁面。
在“設(shè)備”選項卡中的部署選項的目標(biāo)設(shè)備選擇為“Windows CE 設(shè)備”,這個時候就可以連接工控機設(shè)備了。輸出文件文件夾中
“%CSIDL_PROGRAM_FILES%WinCeCsUseDll”
表示的是在WinCE設(shè)備中的根目錄下的Program Files文件夾中的WinCeCsUseDll目錄下生成此項目的相關(guān)文件。點擊右邊的“瀏覽”按鈕可以進行相關(guān)的設(shè)置。因為工控機上的除了放在 FlashDisk里面的東西在斷電后不會丟失外,其余的都會丟失,所以,你可以通過對此路徑的設(shè)置,將你的程序生成的目錄放在FlashDisk中,這樣斷電了也不會丟失了。
2.4.2 C++項目的建立和設(shè)置
選擇項目類型:
選擇SDK開發(fā)包(工控機廠家會提供相應(yīng)的開發(fā)軟件包的):
選擇相應(yīng)的開發(fā)環(huán)境:窗口程序,控制臺程序,DLL和表態(tài)庫,等等。例如,選擇建立“控制臺應(yīng)用程序”并添加MFC支持:
然后點擊完成,VS2005就自動為你創(chuàng)建了程序模板了。
在項目屬性中有一些設(shè)置需要注意一下。在項目解決方案瀏覽器中,右擊項目并選擇屬性,會彈出一個屬性對話框。“部署”選項卡中的“遠程目錄”是指你的項目在WinCE工控機上生成的對應(yīng)目錄。“調(diào)試”選項卡中的“遠程可執(zhí)行文件”是指你程序調(diào)試要調(diào)用的執(zhí)行文件(注意:如果你建立的是DLL項目,那么,這個地方要修改一下,修改成調(diào)用了此DLL文件的EXE執(zhí)行程序,只有這樣DLL項目才能夠進行調(diào)試)。
例如:部署遠程目錄為
%CSIDL_PROGRAM_FILES%WinCeCsUseDll
表示,你在PC機上對項目進行部署后,你可以在你的WinCE工控機的根目錄下的Program Files文件夾下的WinCeCsUseDll文件夾下找到此項目的相關(guān)生成文件。
例如:調(diào)試選項卡下的遠程可執(zhí)行文件目錄為:
%CSIDL_PROGRAM_FILES%WinCeCsUseDllWinCeCsUseDll.exe
表示,當(dāng)你在PC機上調(diào)試此項目的時候,會調(diào)用的EXE文件目錄。在你選擇調(diào)試的時候,VS2005會先執(zhí)行“部署”也就是會在WinCE設(shè)備的相應(yīng)目錄下生成相關(guān)的文件,然后再進行調(diào)用和調(diào)試。如果開發(fā)的是DLL程序,那么,就更好理解了,就是直接啟動一個對此DLL進行了調(diào)用的EXE文件,然后對引DLL的源碼進行調(diào)試。
小技巧:如果是編寫DLL程序,那么就要同時編寫一個調(diào)用此DLL的EXE程序,因為你調(diào)試DLL程序或者調(diào)用DLL文件的時候,都需要保證EXE程序和DLL文件在同一目錄下,所以,可以在項目屬性將對兩項目的部署路徑進行設(shè)置,放在同一目錄下面,并將 DLL的調(diào)試所需要調(diào)用的程序的路徑設(shè)置成你編寫的EXE文件路徑。
3. 開發(fā)過程中的學(xué)習(xí)資源
如果對上面的基本知識了解了,那么后面的基本就是你的編程水平的體現(xiàn)了。遇到問題后的解決方法和你進行XP桌面程序開發(fā)一樣了,因為WinCE可以理解成一個小型化的WinXp系統(tǒng),所以,如果你有Xp系統(tǒng)的開發(fā)經(jīng)驗,那么你就能夠比較快速入門。主要的學(xué)習(xí)參考資料如下:
3.1微軟幫助文檔MSDN
一般本地的MSDN是面向XP平臺的桌面應(yīng)用程序的,但是因為WinCE有很多的類似,所以,一些基本的API方法也是可以移植到WinCE上的。不過,建議直接用在線的MSDN,里面有專門針對WinCE開發(fā)的幫助。
http://msdn.microsoft.com/en-US/library/ms899235.aspx
在線幫助文檔的目錄如上所示。注意是一層一層往下展開的。
3.2 工控板生產(chǎn)廠家提供的幫助文檔
當(dāng)你安裝了工控板生產(chǎn)廠家提供的SDK開發(fā)包后,就會在相應(yīng)的目錄下找到幫助文檔了。例如安裝了EPCS6960的SDK后,會在目錄
C:Program FilesWindows CE Toolswce500EPCS_6960Help
里面找到相應(yīng)的本地WinCE開發(fā)幫助文檔。
3.2 網(wǎng)絡(luò)論壇
到網(wǎng)上多搜索相關(guān)帖子,即使解決不了你的問題,但總會給你一些啟發(fā)的。即使專門針對WinCE的帖子不多,但是你可以找WinXp的,一般都是可以移植的(C++的移植性要好一些,但是C#可能移植性差一點,因為WinCE下安裝的只是一個精簡的.NET框架)
總述:做了上述的準(zhǔn)備工作后,后面的就是“體力活”了。任何所謂的腦力勞動都是這樣的,當(dāng)你掌握了基本技能后,腦力活動也就變成了體力活動了。好,有了這些基本的技能后,就開始解決問題吧。
注:購買硬件平臺的價格比較高,比如EPCS6960的工控板一套就要接近兩千,一個液晶屏又要將近800,所以對于初學(xué)者,可以自己到網(wǎng)上下載WinCE模擬器,軟件仿真WinCE操作系統(tǒng),熟悉WinCE下的程序設(shè)計。用硬件工控板的主要好處就是,有硬件接口及相應(yīng)的驅(qū)動程序提供給開發(fā)人員,可以進行現(xiàn)場數(shù)據(jù)采集和控制。