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

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

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

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

總共有16路IO口,默認(rèn)配置為8路輸入和8路輸出。
(1)8路輸出
BOOL SetIO (byte level ,byte idNum);
參數(shù)說(shuō)明:
byte level: 0:低電平 1:高電平
byte idNum: 0-7 (分別代表要輸出的IO口號(hào):OUT0 ~ OUT7)
(2)8路輸入
BOOL SetIoMode(int ioNum,int ioMode ,int triggeredMode)
參數(shù)說(shuō)明:
int ioNum: 0-7 (分別代表要設(shè)置的IO口號(hào):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ù)說(shuō)明:
SetIoMode是設(shè)置8路輸入口的接收方式,分為查詢方式和中斷方式,可以對(duì)每一個(gè)口單獨(dú)配置為查詢或者中斷。
在配置為查詢模式后此函數(shù)的第三個(gè)參數(shù)不起作用,可以設(shè)置為任意的整數(shù)。
在配置為中斷模式后此函數(shù)的第三個(gè)參數(shù)來(lái)設(shè)置中斷觸發(fā)的模式,總共分為以上5種。
注意:系統(tǒng)中默認(rèn)使用的8路輸入IO口全是查詢模式,可以通過(guò)以上函數(shù)設(shè)置為中斷方式。
BOOL GetIO(byte& level, byte idNum);
參數(shù)說(shuō)明:
byte& level: 0:得到低電平 1:得到高電平
byte idNum: 0-7 (分別代表要得到的IO口號(hào):IN0 ~ IN7)
IO口模式使用介紹:
查詢模式:系統(tǒng)默認(rèn)8路輸入IO全是查詢模式,所以如果用戶不需要中斷模式,則可以直接通過(guò)GetIO函數(shù)來(lái)得到相應(yīng)輸入口的值為高電平還是低電平,不需要用到SetIoMode函數(shù)。
中斷模式:系統(tǒng)默認(rèn)8路輸入IO全是查詢模式,所以如果用戶需要中斷模式,則需要通過(guò)SetIoMode函數(shù)來(lái)設(shè)置相應(yīng)IO口為中斷模式,并且設(shè)置相應(yīng)的中斷觸發(fā)方式。設(shè)置完成后,如果系統(tǒng)收到中斷,則向應(yīng)用發(fā)送事件,來(lái)通知中斷觸發(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)用中需要建立對(duì)應(yīng)的同名事件,來(lái)收到系統(tǒng)的中斷事件。
Note:函數(shù)的具體詳細(xì)的用法,請(qǐng)看光盤(pán)中的示例源碼,目錄:光盤(pán)/測(cè)試?yán)? ParallelIo /
|