新闻中心

EEPW首页 > 模拟技术 > 设计应用 > 基于USB接口的虚拟示波器的开发实现

基于USB接口的虚拟示波器的开发实现

作者: 时间:2012-04-18 来源:网络 收藏
12px/18px 宋体, arial; TEXT-TRANSFORM: none; COLOR: rgb(95,95,95); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BACKGROUND-COLOR: rgb(255,255,255); orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">  (1)DriverUnload指向驱动程序的清除例程。I/O管理器会在卸载驱动程序前调用该例程。
  (2)DriverExtension→AddDevice指向驱动程序的AddDevice函数。PnP管理器将为每个硬件实例调用一次AddDevice例程。
  (3)DriverStartIo驱动程序使用标准的IRP(interrupt request package,中断请求包)排队。
  (4)MajorFunction驱动程序可能需要处理几种类型的IRP,所以,应该设置与那几种IRP类型相对应的指针元素,使它们指向相应的派遣函数。根据虚拟仪器系统的实际要求,本驱动程序所要处理的主功能IRP有:
IRP-MJ-CREATE;IRP-MJ-CLOSE;
IRP-MJ-DEVICE-CONTR;IRP-MJ-WRITE;
IRP-MJ-READ;IRP-MJ-SYSTEM-CONTROL;
IRP-MJ-PNP;IRP-MJ-POWER。
  在主入口例程中,必须设置和这些IRP类型相对应的指针元素,使它们指向相应的派遣函数。
4 客户服务软件设计
  整个客户服务软件使用VC++编写,分以下几个主要模块设计。
4.1 驱动层与应用层通信模块
  如果通信功能块直接放在应用程序主线程中实现,那么,当应用程序与驱动程序进行数据通信时,主界面就会冻结。为了解决这个问题,我们直接创建一个子线程来单独完成与驱动程序的通信任务,让主界面专心于响应视窗界面的讯息。在子线程中通过调用Windows API函数来实现对USB设备进行IO操作。其中,DeviceIoControl()函数用于传送设备配置信息;CreateFile()用于创建设备对象;WriteFile()和ReadFile()用于对USB设备读写数据。


关键词: USB接口 虚拟示波器

评论


相关推荐

技术专区

关闭