WindowsCE.Net下基于流驱动的AD驱动设计与实现
中,XXX_Read() / XXX_Write() 函数可与硬件交互,从硬件中读取必要的信息或向硬件写必要的信息。然后返回给设备管理器,再返回给应用程序。
当应用程序不再使用该设备时,它可调用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.
WindowsCE Net 流接口驱动 设备驱动 相关文章:
- 嵌入式操作系统特点分析(06-06)
- 一种基于嵌入式WindowsCE的GPS数据导航系统设计(06-10)
- 基于ARM处理器的GPS移动设备设计(01-07)
- Windows CE 嵌入式网络监控系统的设计(08-06)
- WindowsCE环境下无线网卡的自动安装(04-12)
- Windows CE.NET下ADC驱动开发设计(11-26)