WindowsCE.Net下基于流驅動的AD驅動設計與實現
當應用程序不再使用該設備時,它可調用CloseHandle()將設備關閉。當系統不再使用設備時,應用程序可調用DeactivateDevice()函數把該驅動程序卸載。

圖2 流驅動工作原理順序圖
3 AD驅動的實現
AD驅動程序以動態鏈接庫方式編寫,采用流接口驅動的標準形式。在ADC_ Init函數中,主要進行初始化。函數ADC_Open 只需要返回一個不為0的值來判斷打開設備成功。在函數 ADC_Write 中通過寫入要選擇的通道號和預分頻值,它控制通道的動作。函數 ADC_Read 中的代碼最為關鍵,它完成讀取模擬量向數字量的轉換結果,其部分主要代碼如下:
pADCIOreg->rADCCON = (114)|(ADCPRS6)|(ch3); //建立通道號
pADCIOreg->rADCCON |= 0x1; // 開始轉換
while(pADCIOreg->rADCCON 0x1); //檢測開始位是否為低電平
while(!(pADCIOreg->rADCCON 0x8000)); //檢測轉換是否完畢標志位
return ( (double)(pADCIOreg->rADCDAT0 0x3ff) ); //返回轉換完的數值
其中 ch 表示采樣通道號, ADCPRS為預分頻值。其它函數均為空。
4 ADC驅動封裝及其在Windows CE.Net中的添加www.51kaifa.com
通過以上的工作,編譯出一個 DLL 函數,接著建立一個自己的 def 文件,導出所需要的流接口函數。新建一個記事本文件,命名為 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 ,它的任務是復制注冊表到 Windows CE.Net 的系統目錄下面。然后再添加一個 Bib File,其主要任務是把編譯的 AdcDriver.dll 文件添加到 Windows CE.Net 內核中去。保存寫好的CEC文件。在Platform Builder 中 , 打開“File”菜單,添加已經編寫好的 CEC 特征到系統選項中去。生成系統的時候, 添加 CEC 特性,這樣驅動就加入到操作系統里了。
5 結速語
文中作者分析了 Windows CE.Net 的流接口驅動的工作原理順序,設計實現了Windows CE.Net下的AD驅動,并通過Platform builder將其編譯到操作系統。而本系統再配上 EVC 開發的圖形界面軟件,可以開發出各種使用的設備,如移動數據采集器等,在現代化檢測領域有很強的實用性。本文作者創新點:分析了Windows CE.Net下流驅動的執行順序以及上層文件API如何調用流驅動,并給出將編寫的驅動加入到操作系統的詳細步驟,該驅動設計簡單,應用程序可以靈活調用。
參考文獻
[1] 李蒙,舒云星.Windows CE驅動程序開發[J].計算機工程與設計.2004, Vol.25, No.6 .
[2]何宗鍵. Windows CE嵌入式系統[M]. 北京航空航天大學出版社. 2006,9.www.51kaifa.com
[3] 楊軍波, 須文波. 基于WinCE環境的CAN適配卡驅動程序的設計與實現[J]. 微計算機信息. 2005,21-12,2.
[4]那洪洋, 李楊, 楊文通. WinCE.Net系統下USB總線驅動程序實現的研究[J]. 微計機應用. 2006, Vol.27, No.2.








評論