USB总线数据采集设备驱动程序的设计
2数据采集设备驱动程序的开发
Windows为USB设备提供了底层驱动程序,与底层驱动程序接口的是I/O请求包(IRP),Windows为应用程序提供的接口则是API函数。因此必须在它们之间建立一个驱动程序,在底层驱动与Win32应用程序之间传递消息,即设备驱动程序。VC++、VB等软件开发的应用程序,在设备驱动程序的支持下,都可以调用ReadFile()、WriteFile()、DeviceIoControl()等API函数向设备传递主机请求。Windows系统自动将API调用转化为IRP,设备驱动程序把它向下层驱动传递。直到完成其所指定的功能再沿驱动程序栈返回主机。
设备驱动程序的开发
开发设备驱动程序一般采用以下几种方法:1)直接使用Windows DDK,这种方法开发难度较大,设计者必须对整个体系结构有很好的理解和把握。2)使用Driver Studio,该工具软件可为设计者提供驱动程序的整体框架,设计者只需要专心于功能代码设计。3)使用win Driver,这种方法开发驱动程序很容易,但工作效率不是很高。这里采用第二种方法。
Driver Studio生成驱动程序框架主要由两个类组成,一个是Driver类,另一个是Device类Driver类。
1)Driver类用于初始化驱动程序,它包括:入口函数Driver Entry和Add Device函数。当设备驱动程序被加载时,操作系统调用Driver Entry函数;当创建设备对象并把它连接到设备堆栈时调用Add Device函数。函数代码如下:本文引用地址://m.amcfsurvey.com/article/195484.htm
2)Device类是设备类KDvice的派生类,这个类包含了电源管理、设备读写、设备控制等具有特定功能的例程。限于篇幅只介绍批量读写端点函数。
INF文件的编写
INF文件是一个文本文件,它含有安装一个设备驱动程序需要的所有必需的安装信息。包括要复制的文件列表,要创建的注册表项等。用以告诉系统安装哪一个驱动程序,INF文件由若干区段组成,下面列出几个区段及其功用:
1)Version区段是INF文件的开始,其Class和ClassGuid指出了驱动程序所属的设备类别及设备的GUID。GUID(Global Unique Identi-fier)用以标识不同的驱动程序,它是全局且唯一的,系统就是通过GUID把应用程序的I/O请求传达给相应的驱动程序的。
2)Mantifacturer区段指明供应商及其对应Models字节的名称。
3)Install.AddReg/Install.Services指明注册表添加内容及安装驱动的详细信息。
该驱动程序应用于数据采集模块采集电站的电压信号,部分采集数据如表1所示:
测量误差主要来源于模块的A/D,与驱动无关系,数据传输结果表明:数据可以在该驱动下及时正确的传输,模块工作正常。
3 结束语
该设备驱动程序用于电站检测仪中USB数据采集模块的效果良好,用这种方法提高了开发效率,缩短了开发周期,使开发者可将主要精力集中于实现设备功能上,为非软件专业开发者开发基于USB总线的检测仪驱动提供了很好的借鉴。也为USB总线在测控领域的应用开创了光明的前景。相信以计算机为数据处理核心,以USB总线为数据通信方法的测控仪器将成为测控业发展主流。
评论