WinCE系統(tǒng)是微軟操作系統(tǒng)在嵌入式領(lǐng)域的一朵奇葩。自打WinCE出來,就占領(lǐng)了消費量電子,PDA,手機,更在工業(yè)自動化行業(yè)占有很大的一片市場。與XP,WIN7乃至WIN8系統(tǒng),同是微軟家族成員,所以,對于WinCE應(yīng)用開發(fā),跟普通的PC機應(yīng)用開發(fā),區(qū)別不大,所以支持很多開發(fā)工具和語言開發(fā)。最常用的莫過于 VS2005或者VS2008,里面集成了VC++,C#.net,VB.net等主流語言開發(fā),方便應(yīng)用編程人員輕松的開發(fā)程序。至此,誕生了國內(nèi)一些做WinCE工業(yè)設(shè)備的廠家,并提供相應(yīng)的開發(fā)包,例如SDK,函數(shù)庫文件等。國內(nèi)做的比較大的,莫過于深圳揚創(chuàng)科技,軟硬件定制都非常方便,并提供一系列的技術(shù)支持,方便工程師快速開發(fā)應(yīng)用程序。
下面介紹深圳揚創(chuàng)科技WinCE系統(tǒng)工業(yè)平板電腦,基于VC++編程開發(fā),如何調(diào)用CPU的GPIO,輕松實現(xiàn)智能控制工業(yè)報警燈,繼電器,智能采集計算器數(shù)據(jù)等設(shè)備。
首先介紹硬件
 
DB25擴展口(此功能選配)
擴展了8路24V IO輸入,8路24V IO輸出(12V也可以);


管腳13的EXT_24V是外部電源24V;管腳21是外部地
輸入輸出電壓為24V
隔離電壓: 輸入端 2500Vrms(Min)
輸出端 2500Vrms(Min)
輸入輸出原理及連接方法
a) 輸入原理及接線
EXT_IN0—EXT-IN7 的輸入原理相同 ,下圖以 EXT_IN0的原理進(jìn)行說明

圖中 EXT_IN0 為外部輸入,EXT_VDD為外部參考電壓, IN0通過光電隔離轉(zhuǎn)換后CPU的輸入信號。工作原理為:當(dāng)EXT_IN0 輸入為高電平時,光耦內(nèi)部發(fā)光二極管兩側(cè)無壓差,內(nèi)部無電流,發(fā)光二級管不發(fā)光,無法使內(nèi)部的三極管導(dǎo)通,則輸出信號IN0為高電平,CPU采集到輸入為高;當(dāng)EXT_IN0 輸入為低電平時,光耦內(nèi)部發(fā)光二極管兩側(cè)有壓差,內(nèi)部有電流,發(fā)光二級管發(fā)光,使內(nèi)部的三極管導(dǎo)通,則輸出信號IN0為低電平;CPU采集到輸入為低 。
EXT_IN0—EXT-IN7為8路開關(guān)量輸入信號,EXT_VDD為其公共外接電源,開關(guān)量地端與外部公共外接電源地端相連。電源可以采用5V-24V,當(dāng)輸入開關(guān)量信號為5V時,可以采用5V供電;當(dāng)輸入開關(guān)量信號為12V時,可以采用12V供電;當(dāng)輸入開關(guān)量信號為24V時,可以采用24V供電。隨之光電隔離內(nèi)部發(fā)光二級管的外接分壓電阻Rin做調(diào)整 根據(jù)不同的電壓作調(diào)整 ,以滿足光電隔離器工作要求,ePC系列工業(yè)平板電腦默認(rèn)的分壓電阻式按照24V調(diào)節(jié)的。
開關(guān)量輸入的接線圖如下:

b) 輸出原理及接線
EXT_OUT0-EXT_OUT7的輸出原理相同,下圖以EXT_OUT0的原理圖進(jìn)行說明:

圖中右側(cè)為對外的輸出信號(EXT_OUT0)及外接電源(EXT_VDD)。其工作原理:當(dāng)用戶在軟件里面置位OUT0為低電平時,光耦內(nèi)部發(fā)光二級管發(fā)光工作,使內(nèi)部三極管導(dǎo)通,通過光隔后的輸出信號變低電平信號,,反之,OUT0置位為高電平時,光耦內(nèi)部發(fā)光二極管不工作,內(nèi)部三極管無法導(dǎo)通,通過光隔后的輸出信號EXT_OUT0(被Rout上拉到EXT_VDD)拉成高電平。
EXT_OUT0-EXT_OUT7 為8路開關(guān)量輸出信號, EXT_GND為公共地,EXT_VDD為外部外接電源正,Rout 為上拉電阻,工業(yè)平板電腦內(nèi)部集成焊接的阻值是4.7k,開關(guān)量輸出可以為5V-24V,當(dāng)輸入開關(guān)量信號為5V時,可以采用5V供電;當(dāng)輸入開關(guān)量信號為12V時,可以采用12V供電;當(dāng)輸入開關(guān)量信號為24V時,可以采用24V供電。
開關(guān)量輸出 低電平有效,小型繼電器、警示燈等現(xiàn)場開關(guān)設(shè)備接法:
接小型繼電器等設(shè)備的時候,輸入端請一端接外部電源EXT_VDD,另一端接EXT_OUT,默認(rèn)上電啟動是EXT_OUT輸入口為高電平,設(shè)備兩端沒有壓差,不工作;
進(jìn)入系統(tǒng)以后可以通過控制EXT_OUT輸出為高低電平來控制設(shè)備工作:
- 設(shè)置EXT_OUT為低電平時,設(shè)備兩端有壓差,電流通過,設(shè)備工作;
- 設(shè)置EXT_OUT為高電平時,設(shè)備兩端沒有壓差,沒有電流通過,設(shè)備不工作。

總共有16路IO口,默認(rèn)配置為8路輸入和8路輸出。
(1)8路輸出
BOOL SetIO (byte level ,byte idNum);
參數(shù)說明:
byte level: 0:低電平 1:高電平
byte idNum: 0-7 (分別代表要輸出的IO口號:OUT0 ~ OUT7)
(2)8路輸入
BOOL SetIoMode(int ioNum,int ioMode ,int triggeredMode)
參數(shù)說明:
int ioNum: 0-7 (分別代表要設(shè)置的IO口號:IN0 ~ IN7)
int ioMode: IO_POLLING_MODE(查詢模式)
IO_INTR_MODE (中斷模式)
int triggeredMode: IO_INTR_LOW_LEVEL_TRIGGERED 低電平觸發(fā)
IO_INTR_HIGH_LEVEL_TRIGGERED 高電平觸發(fā)
IO_INTR_FALLING_EDGE_TRIGGERED 下降沿觸發(fā)
IO_INTR_RISING_EDGE_TRIGGERED 上升沿觸發(fā)
IO_INTR_BOTH_EDGE_TRIGGERED 雙沿觸發(fā)
函數(shù)說明:
SetIoMode是設(shè)置8路輸入口的接收方式,分為查詢方式和中斷方式,可以對每一個口單獨配置為查詢或者中斷。
在配置為查詢模式后此函數(shù)的第三個參數(shù)不起作用,可以設(shè)置為任意的整數(shù)。
在配置為中斷模式后此函數(shù)的第三個參數(shù)來設(shè)置中斷觸發(fā)的模式,總共分為以上5種。
注意:系統(tǒng)中默認(rèn)使用的8路輸入IO口全是查詢模式,可以通過以上函數(shù)設(shè)置為中斷方式。
BOOL GetIO(byte& level, byte idNum);
參數(shù)說明:
byte& level: 0:得到低電平 1:得到高電平
byte idNum: 0-7 (分別代表要得到的IO口號:IN0 ~ IN7)
IO口模式使用介紹:
查詢模式:系統(tǒng)默認(rèn)8路輸入IO全是查詢模式,所以如果用戶不需要中斷模式,則可以直接通過GetIO函數(shù)來得到相應(yīng)輸入口的值為高電平還是低電平,不需要用到SetIoMode函數(shù)。
中斷模式:系統(tǒng)默認(rèn)8路輸入IO全是查詢模式,所以如果用戶需要中斷模式,則需要通過SetIoMode函數(shù)來設(shè)置相應(yīng)IO口為中斷模式,并且設(shè)置相應(yīng)的中斷觸發(fā)方式。設(shè)置完成后,如果系統(tǒng)收到中斷,則向應(yīng)用發(fā)送事件,來通知中斷觸發(fā),用戶應(yīng)用再做相應(yīng)的處理。事件名稱如下:
IO0事件名稱:io number 0 Intr Event
IO1事件名稱:io number 1 Intr Event
IO2事件名稱:io number 2 Intr Event
IO3事件名稱:io number 3 Intr Event
IO4事件名稱:io number 4 Intr Event
IO5事件名稱:io number 5 Intr Event
IO6事件名稱:io number 6 Intr Event
IO7事件名稱:io number 7 Intr Event
用戶應(yīng)用中需要建立對應(yīng)的同名事件,來收到系統(tǒng)的中斷事件。
Note:函數(shù)的具體詳細(xì)的用法,請看光盤中的示例源碼,目錄:光盤/測試?yán)? ParallelIo /
|