新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > WindowsCE.Net下基于流驅(qū)動的AD驅(qū)動設(shè)計與實現(xiàn)

        WindowsCE.Net下基于流驅(qū)動的AD驅(qū)動設(shè)計與實現(xiàn)

        作者: 時間:2012-03-24 來源:網(wǎng)絡(luò) 收藏

        當(dāng)應(yīng)用程序不再使用該設(shè)備時,它可調(diào)用CloseHandle()將設(shè)備關(guān)閉。當(dāng)系統(tǒng)不再使用設(shè)備時,應(yīng)用程序可調(diào)用DeactivateDevice()函數(shù)把該驅(qū)動程序卸載。

        圖2 流驅(qū)動工作原理順序圖

        3 AD驅(qū)動的實現(xiàn)

        AD驅(qū)動程序以動態(tài)鏈接庫方式編寫,采用的標準形式。在ADC_ Init函數(shù)中,主要進行初始化。函數(shù)ADC_Open 只需要返回一個不為0的值來判斷打開設(shè)備成功。在函數(shù) ADC_Write 中通過寫入要選擇的通道號和預(yù)分頻值,它控制通道的動作。函數(shù) ADC_Read 中的代碼最為關(guān)鍵,它完成讀取模擬量向數(shù)字量的轉(zhuǎn)換結(jié)果,其部分主要代碼如下:

        pADCIOreg->rADCCON = (114)|(ADCPRS6)|(ch3); //建立通道號

        pADCIOreg->rADCCON |= 0x1; // 開始轉(zhuǎn)換

        while(pADCIOreg->rADCCON 0x1); //檢測開始位是否為低電平

        while(!(pADCIOreg->rADCCON 0x8000)); //檢測轉(zhuǎn)換是否完畢標志位

        return ( (double)(pADCIOreg->rADCDAT0 0x3ff) ); //返回轉(zhuǎn)換完的數(shù)值

        其中 ch 表示采樣通道號, ADCPRS為預(yù)分頻值。其它函數(shù)均為空。

        4 ADC驅(qū)動封裝及其在Windows CE.Net中的添加www.51kaifa.com

        通過以上的工作,編譯出一個 DLL 函數(shù),接著建立一個自己的 def 文件,導(dǎo)出所需要的流接口函數(shù)。新建一個記事本文件,命名為 AdcDriver.Def :

        LIBRARY AdcDriver

        EXPORTS

        ADC_Init

        ADC_Open

        ADC_Readwww.51kaifa.com

        ADC_Write

        ADC_Close

        ADC_Deinit

        然后編寫一個注冊表文件, 命名為AdcDriver.reg :

        [HKEY_LOCAL_MACHINE Drivers BuiltIn ADC]

        "Index" = dword :1

        "Prefix" = "ADC"

        "Dll" = "AdcDriver.dll"

        "Order" = dword :0

        最后在 Platform Builder中新建一個 CEC 文件,首先添加一個BuildMethod ,它的任務(wù)是復(fù)制注冊表到 Windows CE.Net 的系統(tǒng)目錄下面。然后再添加一個 Bib File,其主要任務(wù)是把編譯的 AdcDriver.dll 文件添加到 Windows CE.Net 內(nèi)核中去。保存寫好的CEC文件。在Platform Builder 中 , 打開“File”菜單,添加已經(jīng)編寫好的 CEC 特征到系統(tǒng)選項中去。生成系統(tǒng)的時候, 添加 CEC 特性,這樣驅(qū)動就加入到操作系統(tǒng)里了。

        5 結(jié)速語

        文中作者分析了 Windows CE.Net 的的工作原理順序,設(shè)計實現(xiàn)了Windows CE.Net下的AD驅(qū)動,并通過Platform builder將其編譯到操作系統(tǒng)。而本系統(tǒng)再配上 EVC 開發(fā)的圖形界面軟件,可以開發(fā)出各種使用的設(shè)備,如移動數(shù)據(jù)采集器等,在現(xiàn)代化檢測領(lǐng)域有很強的實用性。本文作者創(chuàng)新點:分析了Windows CE.Net下流驅(qū)動的執(zhí)行順序以及上層文件API如何調(diào)用流驅(qū)動,并給出將編寫的驅(qū)動加入到操作系統(tǒng)的詳細步驟,該驅(qū)動設(shè)計簡單,應(yīng)用程序可以靈活調(diào)用。

        參考文獻

        [1] 李蒙,舒云星.Windows CE驅(qū)動程序開發(fā)[J].計算機工程與設(shè)計.2004, Vol.25, No.6 .

        [2]何宗鍵. Windows CE嵌入式系統(tǒng)[M]. 北京航空航天大學(xué)出版社. 2006,9.www.51kaifa.com

        [3] 楊軍波, 須文波. 基于WinCE環(huán)境的CAN適配卡驅(qū)動程序的設(shè)計與實現(xiàn)[J]. 微計算機信息. 2005,21-12,2.

        [4]那洪洋, 李楊, 楊文通. WinCE.Net系統(tǒng)下USB總線驅(qū)動程序?qū)崿F(xiàn)的研究[J]. 微計機應(yīng)用. 2006, Vol.27, No.2.


        上一頁 1 2 下一頁

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 鲁甸县| 永和县| 金寨县| 宜良县| 三门峡市| 任丘市| 聂拉木县| 阳高县| 宿州市| 沙坪坝区| 濉溪县| 龙井市| 连城县| 资兴市| 德化县| 嫩江县| 普兰店市| 福安市| 高雄市| 革吉县| 淅川县| 东宁县| 墨竹工卡县| 定边县| 什邡市| 牡丹江市| 柞水县| 无锡市| 永善县| 闻喜县| 灵宝市| 威远县| 翼城县| 蚌埠市| 长沙县| 米易县| 修文县| 理塘县| 湟源县| 大关县| 绥德县|