基于USB传输的数据采集及处理系统毕业设计_第1页
基于USB传输的数据采集及处理系统毕业设计_第2页
基于USB传输的数据采集及处理系统毕业设计_第3页
基于USB传输的数据采集及处理系统毕业设计_第4页
基于USB传输的数据采集及处理系统毕业设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

洛阴畀范学院LUOYANGNORMALUNIVERSITY2013届本科毕业论文

(一号黑体居中)基于USB传输的数据采集及处理系统毕业设计院(系)名称物理与电子信息学院(小三号黑体)专业名称物理学(小三号黑体)学生姓名张三丰(小三号黑体)学号090514111(小三号TimesNewRoman)指导教师何大壮教授(小三号黑体)完成时间2013年5月8日(小三号黑体)洛阳师范学院毕业设计洛阳师范学院毕业设计#4.3.2外部复位电路C8051F330外部/RST引脚提供了使用外部电路强制复位手段。在/RST引脚上加一个低电平有效信号将导致MCU进入复位状态。外部复位电路如图4-3所Z示O图4-3外部复位电路4.3.3电压基准电路C8051F330的电压基准MUX可以被配置为连接到外部电压基准。端口引脚P0.0用作外部VREF输入。电压基准电路如图4-4所示。P0.03.3P0.0R4I■1K图4-4电压基准电路4.3.4保护电路在设计具体的电路时应在C8051F330的前面加分压电阻,以保证C8051F330在工作电压范围内正常工作。考虑到实际中可能出现的情况,如果出现负电压或过载电压,可能会损坏C8051F330,所以应该在C8051F330前面加嵌位保护电路。保护电路如图4-5在设计具体的电路时应在C8051F330的前面加分压电阻,以保证C8051F330在工作电压范围内正常工作。考虑到实际中可能出现的情况,如果出现负电压或过载电压,可能会损坏C8051F330,所以应该在C8051F330前面加嵌位保护电路。保护电路如图4-5所示JDate:File:Number26-May-2007C:\DocumentsAIR二11kDI3.3V图4-5保护电路D24.3.5系统总原理图data整个数据采集系统设计方案的电路图如图4-6所示。电容C4用于CH375内部电源节点退耦,C4是容量为O.OlyF的独石或高频瓷片电容,如果对EMI没有要求那么可以省掉C4。电容C5和C6用于外部电源退耦,C5是容量为0.1吓的独石或高频瓷片电容。晶体XI、电容C1和C2用于CH375的时钟振荡电路。USB-HOST主机方式要求时钟频率比较准确,X1的频率是12MHz±0.4%oC1和C2是容量约为15pF的独石或高频瓷片电容。如果电源上电过程较慢并且电源断电后放电时间较长,那么CH375将不能可靠复位。可以在RSTI引脚与VCC之间跨接一个容量为0.47吓的电容C3,同时可以减少干扰。dataVCCC7100uR3C62k-1-100u1.01qF冶R11kACCD-D+GNDUSB4>2寻4C3£VCC0.47u7C1C212MHz15P15P30PC83(PC9X2mhzD1R21k3.3V厶rw1919WD#JLM17VVLJIICS#f1616/IA0C7100uR3C62k-1-100u1.01qF冶R11kACCD-D+GNDUSB4>2寻4C3£VCC0.47u7C1C212MHz15P15P30PC83(PC9X2mhzD1R21k3.3V厶rw1919WD#JLM17VVLJIICS#f1616/IA0—5——2U21VCCD0D1V3D2D3D4GNDD5GNDD6D7UD-UD+A0RD#RSTIWD#RSTCS#RST#INT#X0TXDRXDX1ACT#1413CH375——5—二■8—A0—-4—RD#■3—WD#■2^CS#—4—INT#225%VDD/RSTGNDP1.0P0.1P1.1P0.2P1.2P0.3P1.3P0.4P1.4P0.5P1.5P0.6P1.6'P0.7P1.7P2.0P0.01K10uFW-PBC108.2KR4斗4-C8051F3303予4++44R53.3V图4-6系统总电路图

第5章器件介绍5.1C8051F330芯片C8051F330器件是完全集成的混合信号片上系统型MCU。下面列出了它的一些主要特性:*高速、流水线结构的8051兼容的CIP-51内核(可达25MIPS)*全速、非侵入式的在系统调试接口(片内)*真正10位200ksps的16通道单端/差分ADC,带模拟多路*10位电流输出DAC*高精度可编程的25MHz内部振荡器*8KB可在系统编程的FLASH存储器*768字节片内RAM*硬件实现的SMBus/I增强型UART和增强型SPI串行接口*4个通用的16位定时器*具有3个捕捉/比较模块和可编程计数器/定时器阵列*片内上电复位、VDD监视器和温度传感器*片内电压比较器*17个端口I/O(容许5V输入)具有片内上电复位、VDD监视器、看门狗定时器和时钟振荡器的C8051F330是真正能独立工作的片上系统。FLASH存储器还具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更新8051固件。用户软件对所有外设具有完全的控制,可以关断任何一个或所有外设以节省功耗。片内SiliconLabs二线(C2)开发接口允许使用安装在最终应用系统上的产品

MCU进行非侵入式(不占用片内资源)、全速、在系统调试。调试逻辑支持观察

和修改存储器和寄存器,支持断点、单步、运行和停机命令。在使用C2进行调试VDD/RSTGNDP1.0P0.1P1.1P0.2P1.2P0.3P1.3P0.4P1.4P0.5P1.5P0.6P1.6P0.7P1.7P2.0P0.0320HH17320HH17叵14TU1斗1211Id987~r~C2占的号每种器件都可在工业温度范围内用2.7V—3.6V电压工作。端口I/O和/RST引脚都容许5V的输入信电压。C8051F330芯片管脚图如图5-1所示。C8051F330图5-1C8051F330芯片管脚图5.2CH375芯片CH375是一个USB总线的通用接口芯片,支持USB-HOST主机方式和USB-DEVICE/SLAVE设备方式。在本地端,CH375具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上。在USB主机方式下,CH375还提供了串行通讯方式,通过串行输入、串行输出和中断输出与单片机/DSP/MCU/MPU等相连接。CH375的USB设备方式与CH372芯片完全兼容,CH375包含了CH372的全部功能。CH375的USB主机方式支持常用的USB全速设备,外部单片机可以通过CH375按照相应的USB协议与USB设备通讯oCH375还内置了处理Mass-Storage海量存储设备的专用通讯协议的固件,外部单片机可以直接以扇区为基本单位读写常用的USB存储设备(包括USB硬盘/USB闪存盘/U盘)。CH375的特点•低速和全速USB-HOST主机接口,兼容USBV2.0,外围元器件只需要晶体和电容。•低速和全速USB设备接口,完全兼容CH372芯片,支持动态切换主机与设备方式。•主机端点输入和输出缓冲区各64字节,支持12Mbps全速USB设备和1.5Mbps低速设备。•支持USB设备的控制传输、批量传输、中断传输。•自动检测USB设备的连接和断开,提供设备连接和断开的事件通知。•内置控制传输的协议处理器,简化常用的控制传输。•内置固件处理海量存储设备的专用通讯协议,支持Bulk-Only传输协议和SCSI、UFI、RBC或等效命令集的USB存储设备(包括USB硬盘/USB闪存盘/U盘/USB读卡器)。•通过U盘文件级子程序库实现单片机读写USB存储设备中的文件。•并行接口包含8位数据总线,4线控制:读选通、写选通、片选输入、中断输出。•串行接口包含串行输入、串行输出、中断输出,支持通讯波特率动态调整。•支持5V电源电压和3.3V电源电压,支持低功耗模式。•采用SOP-28无铅封装,兼容Rohs,提供SOP28到DIP28的转换板,引脚基本兼容CH374芯片。CH375芯片的RD#和WR#可以分别连接到单片机的读选通输出引脚和写选通输出引脚。CS#由地址译码电路驱动,用于当单片机具有多个外围器件时进行设备选择。INT#输出的中断请求是低电平有效,可以连接到单片机的中断输入引脚或者普通I/O引脚,单片机可以使用中断方式或者查询方式获知中断请求。当WR#为高电平并且CS#和RD#及A0都为低电平时,CH375中的数据通过D7〜DO输出;当RD#为高电平并且CS#和WR#及A0都为低电平时,D7〜DO上的数据被写入CH375芯片中;当RD#为高电平并且CS#和WR#都为低电平而A0为高电平时,D7〜DO上的数据被作为命令码写入CH375芯片中。CH375芯片具有通用的被动并行接口,可以直接连接多种单片机、DSP、MCU等。CH375的TXD引脚通过1KQ左右的下拉电阻接地或者直接接地,从而使CH375工作于并口方式。第6章系统软件设计系统软件包括USB设备驱动程序、设备固件、应用程序。其中设备固件是整个系统的核心,它控制着芯片CH375采集数据,接受并处理USB驱动的请求和应用程序的控制指令。6.1数据采集模块的设计模拟输入信号经过A/D转换器变为数字信号,A/D转换器经串行输出到移位寄存器,移位寄存器将此结果转为8位并行数据,微处理系统通过8位的并行接口传送A/D转换器采集的数据,存储在FIFO存储器中;CH375提供的FIFO为64字节,一旦FIFO存满,SIE立刻对数据进行处理,然后微处理系统将数据从FIFO存储器中读出,由收发器通过数据线(D+、D-)送至主机。在整个数据采集过程中重复上述过程。USB数据采集系统的数据采集模块的设计流程图如图6-1所示。图6-1数据采集流程图6.2USB设备驱动程序开发设备驱动程序是一个软件组件,介于硬件与用户应用软件之间,为它们之间的通信提供桥梁。设备驱动程序主要是提供操作系统与硬件设备的接口,支持用户及其应用程序要求的信息流。对于该设备驱动程序的编写,我们采用WDM(Windows32DriverMode)驱动程序模型,该模型主要有以下特点:1、支持即插即用(PnP)和电源管理。2、提供系统总线驱动程序。3、支持WMI(WindowsManagementInstrumentation),WDM驱动程序必须支持WMI,一般这种请求是通过IRP_MJ_SYSTEM_CONTROL请求传给PDO的。4、支持类驱动程序/微驱动程序分层结构。WDM驱动程序采用分层结构,可和其它驱动程序相联系,接收建立在其上的驱动程序提供的服务,也可向其它驱动程序发送IRP请求。USB系统驱动程序采用分层结构模型:较高级的USB设备驱动程序和较低级的USB函数层。其中USB函数层由两部分组成:较高级的通用串行总线驱动程序模块(USBD)和较低级的主控制器驱动程序模块(HCD)。它们的层次关系如图6-2所示。图6-2USB系统驱动程序层次关系USB设备驱动程序在本设计中由四个模块实现:初始化模块、即插即用管理模块、电源管理模块以及I/O功能实现模块。初始化模块提供一个入口函数DriverEntry(),所有对各种IRP(I/ORequestPacket,IRP请求包)的处理例程都在此入口函数中做出定义。即插即用管理模块实现USB设备的热拔插及动态配置。当硬件检测到USB设备接入时,WindowsXP查找响应的驱动程序,并调用它的DriverEntry例程,PnP管理器调用驱动程序的AddDevice例程,告诉它添加了一个设备;在此处理过程中,驱动程序收到一个设备启动请求(IRP_MN_START_DEVICE)的IRP。同理,当要拔除时,PnP管理器会发出一个设备删除请求(IRP_MN_REMOVE_DEVICE)的IRP,由驱动程序进行处理。通过对这些PnP请求的处理,可支持设备的热插拔和即插即用功能。电源管理模块负责设备的挂起与唤醒。I/O功能实现模块完成I/O请求的大部分工作。若应用程序想对设备进行I/O操作,它便使用WindowsAPI函数,对WIN32子系统进行WIN32调用。此调用由I/O系统服务接收并通知I/O管理器,I/O管理器将此请求构造成一个合适的I/O请求包(IRP)并把它传递给USB设备驱动程序,USB设备驱动程序接收到这个IRP以后,根据IRP中包含的具体操作代码,构造相应的USB请求块并把此URB放到一个新的IRP中,然后把此IRP传递到USB总线驱动程序,USB总线驱动程序根据IRP中所含的URB执行相应的操作(如从USB设备读取数据等),并把操作结果通过IRP返还给USB设备驱动程序。USB设备驱动程序接收到此IRP后,将操作结果通过IRP返还给I/O管理器,最后I/O管理器将此IRP中操作结果返还给应用程序,至此应用程序对USB设备的一次I/O操作完成。6.2.1数据传输控制本数据采集系统有八个数据采集通道,所以需要对数据采集通道进行控制,以便于选取合适通道和进行通道的切换,这些任务就由IOCTL_ChannelControl_Handler(KIrpI)函数完成。采集后的数据通过USB总线传送的计算机的指定缓冲区中,以便于调用和进行处理,所以用IOCTL_GetData_Handler(KIrpI)函数从USB设备获取数据,并将所得数据传递给应用程序。IOCTL_GetData_Handler(KIrpI)和IOCTL_GetData_Handler(KIrpI)函数代码如下:NTSTATUSDataCollectDevice::IOCTL_ChannelControl_Handler(KIrpI){T.Trace(TraceInfo,_FUNCTION__"++.IRP%p\n",I);NTSTATUSstatus=STATUS_SUCCESS;ULONGinputSize=I.IoctlInputBufferSize();ULONGoutputSize=I.IoctlOutputBufferSize();PVOIDinputBuffer=I.IoctlBuffer();PVOIDoutputBuffer=I.IoctlBuffer();//TODO:ValidatetheparametersoftheIRP.if(FALSE){status=STATUS_INVALID_PARAMETER;I.Information()=0;}else{//TODO:copydataI.Information()=0;}T.Trace(NT_SUCCESS(status)?TraceInfo:TraceWarning,__FUNCTION__"--.IRP%p,STATUS%x\n",I,status);returnstatus;}NTSTATUSDataCollectDevice::IOCTL_GetData_Handler(KIrpI){T.Trace(TraceInfo,__FUNCTION__"++.IRP%p\n",I);NTSTATUSstatus=STATUS_SUCCESS;ULONGinputSize=I.IoctlInputBufferSize();ULONGoutputSize=I.IoctlOutputBufferSize();PVOIDinputBuffer=I.IoctlBuffer();PVOIDoutputBuffer=I.IoctlBuffer();//TODO:ValidatetheparametersoftheIRP.if(FALSE){status=STATUS_INVALID_PARAMETER;I.Information()=0;}else{//TODO:copydataI.Information()=0;}T.Trace(NT_SUCCESS(status)?TraceInfo:TraceWarning,__FUNCTION__"--.IRP%p,STATUS%x\n",I,status);returnstatus;}6.3设备固件设计固件是FIREWARE的对应中文词,它实际上是单片机的程序文件,其编写语言可以采用C语言或是汇编语言•它的操作方式与硬件联系紧密,包括USB设备的连接USB协议、中断处理等,它不是单纯的软件,而是软件和硬件的结合,开发者需要对端口、中断和硬件结构非常熟悉。固件程序一般放入MCU中,当把设备连接到主机上时,上位机可以发现新设备,然后建立连接。因此,编写固件程序的一个最主要的目的就时让Windows可以检测和识别设备。USB固件程序程序由三部分组成:初始化单片机和所有的外围电路;主循环部分,其任务是可以中断的;中断服务程序,其任务是对时间敏感的,必须马上执行。设备固件是设备运行的核心,采用汇编语言设计。其主要功能是控制芯片CH375接受并处理USB驱动程序的请求(如请求设备描述符、请求或设置设备状态、请求设备设置、请求或设置设备接口等U标准请求);控制芯片CH375接受应用程序的控制指令;控制A/D模块的数据采集;通过CH375存储数据并上传PC。设备固件程序设计框图如图6-3所示。USB传输方式分为4种:控制传输,块传输,同步传输和中断传输。在实际开发中使用了控制传输和块传输。控制传输主要用来完成主机对设备的各种控制操作,也就是用来实现位于主机上的USB总线驱动程序(USBD.SYS)以及编写的功能驱动程序对设备的各种控制操作。块传输主要用来完成主机和设备间的大批量数据传输以及对传输数据进行错误检测(若发生错误,它支持重传功能)。C8051F330系统控制USB控制器的工作过程可以简单地概括为:当USB控制器从USB总线检测到主机启动的某一传输请求后,通过中断方式将此请求通知C8051F330系统,C8051F330系统通过访问USB控制器的状态寄存器和数据寄存器获得与此次传输有关的各种参数,并根据具体的传输参数,对USB控制器的控制寄存器和数据寄存器进行相应的操作,以完成主机的传输请求。6.4设备应用程序设计USB设备应用程序是实现PC机对USB接口芯片CH375的接口控制和读写操作,提供友好的人机界面。由于应用程序中涉及到与硬件打交道的底层函数,会大量的引用Win32API函数,在VisualC++环境下开发是比较直观和顺乎逻辑的。要编写USB设备的驱动程序,必须要有能够编译WDM驱动程序的软件环境,建议使用VisualC++来编制该驱动程序。应用程序主要通过对驱动程序中函数的利用来实现对USB设备的操作控制。因此在编写设备应用程序时,可以使用可读性和移植性很好的VisualC++,VisualBasic,Delphi等开发环境来生成控制所需的交互界面,大大方便用户使用。6.4.1Win32API简介WindowsAPI(ApplicationProgrammingInterface)即基于Windows的应用程序编程接口,由Windows下基本的系统函数调用组成,专门为Windows下的编程提供支持。就高级编程语言来说,WindowsAPI是Windows环境下底层函数的调用,所有在Win32平台上运行的应用程序都可以调用这些函数。Microsoft的所有32位平台都支持统一的API,包括函数、结构、消息、宏和接口。既然位于底层,完全使用API编程便显得十分繁琐,事倍功半。但是利用底层的函数可以使程序员了解Windows的内部,知道Windows程序的来龙去脉。使用Win32API,应用程序能充

分挖掘Windows系统的潜力,不但可以开发出在各种平台上都能运行的应用程序,而且可以充分利用每个平台特有的功能和属性。标准的Win32API函数可以分为以下几类:窗口管理、图形设备接口、系统服务、窗口通用控件、Shel1特性、国际特性和网络服务。1•窗口管理函数:窗口管理函数提供了建立和管理用户界面的方法。用窗口管理函数可以建立窗口、通过窗口来显示输出、提示用户输入以及完成其他一些与用户进行交互所需要的操作。2•图形设备接口:图形设备接口提供了一系列函数的相关结构,可用来在显示器、打印机或其他设备上生成图形化的输出结果。用GDI函数可以绘制直线、曲线、闭合图形、文本以及位图图像。所绘制的图形颜色和风格依赖于所建立的绘图对象,即画笔、刷子和字体。可以用画笔绘制直线和曲线,用刷子来填充闭合图形的内部,用字体来书写文本。3•系统服务:系统服务函数提供了访问计算机资源以及底层操作系统特性的手段,例如访问内存、文件系统、设备、进程和线程。使用系统服务函数,应用程序可以管理和监视所需要的资源。例如,可以用内存管理函数来分配和释放内存,用进程管理和同步函数来启动和调整多个应用程序或在一个应用程序中运行的多个线程的操作。4,其他函数:Win32API中有一些接口和函数,可用来增强系统Shel1的功能。Shell用一个单层结构的名字空间来组织用户关心的所有对象,包括文件、存储设备、打印机及网络资源;通用控件是由通用控件库COMCTL32.DLL支持的一个控件窗口集,作为ActiveX控件直接使用通用控件:国际特性函数有助于编写国际化的应用程序;网络服务函数主要用于网络的操作,包括网络上不同计算机应用程序之间的通信,在网络上各计算机建立和管理共享资源的链接等。6.4.2MFC的应用程序开发友好的可视化用户界面非常便于用户操作使用,但是却增加了设计人员的负担。几乎所有的开发平台都可以设计可视化的程序,可是如果其操作系统没有提供基本的应用程序开发接口,那么设计可视化程序的工作就很繁琐了,在面向对象兴起后,应用程序框架也应运而生。MFC只是其中之一,他不但是个很大的类库,还将类之间的关系很密切的结合起来。MFC把WindowsAPI包装起来,建立了一些很容易使用和理解的函数,还将其中的一部分隐藏起来,只在链接时加入以降低工程的规模。另外,微软基础类库还介绍了Document和View的机制,让数据处理与显示的部分区分的很清楚。6.4.3设备应用程序与WDM的通信设备应用程序与WDM是双向通信的,下面分别介绍,以便更好的理解设备应用程序对USB设备的控制操作。Win32应用程序对WDM的通信Win32应用程序在Windows中调用WDM的Win32函数共有五个:CreateFile(),ReadFile(),WriteFile(),DeviceloControl()和CloseHandle()。这些函数的执行都对应着驱动程序的一些例程。下面就其中的一些编程问题作一些说明:打开一个WDM设备。应用程序打开一个WDM设备驱动程序,用的是CreateFile()函数。它的第一个参数是一个符号链接名。一旦应用程序获得设备的有效句柄,它就能够调用Win32函数,这将产生对应于此设备对象的相应IRP。关闭一个WDM设备。WDM允许多个应用程序打开同一个设备,它为每个应用程序创建一个设备对象。当其中的一个应用程序调用Clos田andle()函数,驱动程序首先收到清除IRP,驱动程序应当在清除例程中清除和此设备对象有关的待处理的IRP。然后收到关闭IRP,关闭设备对象。ReadFile()和WriteFile()函数的调用。特征标志位DO_BUFFERED_10决定着WDM驱动程序该如何访问应用程序调用ReadFileo和WriteFile()函数的数据缓冲区。I/O管理器根据设备对象的此特征标志位,决定着ReadFile()和WriteFileo函数的缓冲器参数在一个IRP中的表示法。DeviceloControl()函数的调用。对于DeviceIoControl()函数的调用,驱动程序根据I/O控制命令来决定该如何获取应用程序的缓冲器地址。I/O控制命令中的数据访问方式的定义有METHODBUFFERED,METHODINDIRECT,METHODOUTDIRECT或METHODNEITHER。如果控制命令定义为METHODBUFFERED,系统分配一个缓冲区用于输入和输出,该缓冲区的字节数为应用程序的输入和输出缓冲区的大者的字节数。驱动程序必须先拷贝输入数据,然后再复制输出数据。驱动程序通过KIrp::IoctIBufer获得缓冲区的地址。对于输出,驱动程序将必须把存储字节数赋给IRP.Information(),完成后,I/O管理器将数据从系统缓冲区复制到应用程序的数据缓冲区。WDM对Win32应用程序的通信应用程序创建一个事件后,可直接将事件句柄传递给WDM,然后等待WDM发送事件消息。WDM驱动程序获取这个事件的一个对象指针后,只能在DISPATCHLEVEL级别的例程中设置事件信号状态。此外,WDM还提供了其他两种对Win32应用程序通信的方式。一种方式是创建一个命名的事件;另一种方式是当应用程序调用DeviceloControl()函数时,WDM返回STATUS_ENDING。当一个事件发生后,WDM完成这个IRP调用DeviceloControl()函数的线程接着往下执行,处理发生的事件。6.4.6USB设备应用程序的实现用户应用程序是系统与用户的接口,它通过通用驱动程序完成对外设的控制和通信。在编程时,首先要建立与外设的连接,然后才能实施数据的传输。用户程序首先必须查找设备,打开设备的句柄,然后进行读写和控制操作,最后是关闭设备句柄。用户应用程序的流程如图6-4所示。用户应用程序的主要功能为:开启或关闭USB设备、检测USB设备、设置USB数据传输管道、设置A/D状态和数据采集端口、实时从USB接口采集数据、显示并分析数据。另外,当系统启动A/D模块后,便会创建两个线程:采样线程和显示存盘线程。采样线程负责将采集数据写到应用程序提交的内存;而显示存盘线程负责给应用程序发送显示和存盘消息。当应用程序接收到此消息后,便从它提交的内存中读取数据并显示和存盘。此处需要注意的是采样线程和显示存盘线程在读写应用程序提交的内存时要保持同步。数据的显示及数据采集的控制都需要由应用程序的人机交互界面来完成,本设计的应用程序界面如图6-5所示,包括对USB设备的打开与关闭、数据采集的开始与停止及采集端口的控制,具体功能由程序内部代码实现。数据采集应用设计中用于数据采集端口选择以及采集数据获取的部分函数片段如下:VOIDDataCollectIOCTL_ChannelControlCompleteCallback(PVOIDContext){PDATACOLLECT_LIST_ITEMioItem=(PDATACOLLECT_LIST_ITEM)Context;DataCollectOutputText(_T("ExecutedIOCTL_ChannelControlrequest:inbuffersize(%d),outbuffersize(%d),returnlength(%d)error(%d)"),ioItem->InSize,ioItem->OutSize,ioItem->ReturnLength,ioItem->Error);//DumptheoutputbufferDataCollectOutputBuffer(ioItem->OutBuffer,ioItem->ReturnLength);//Freeourbuffermemoryfree(ioItem->InBuffer);free(ioItem->OutBuffer);//CloseouroverlappedeventhandleCloseHandle(ioItem->IoOverlapped.hEvent);//FreeourioItemmemoryfree(ioItem);return;}VOIDDataCollectIOCTL_GetDataCompleteCallback(PVOIDContext){PDATACOLLECT_LIST_ITEMioItem=(PDATACOLLECT_LIST_ITEM)Context;DataCollectOutputText(_T("ExecutedIOCTL_GetDatarequest:inbuffersize(%d),outbuffersize(%d),returnlength(%d)error(%d)"),ioItem->InSize,ioItem->OutSize,ioItem->ReturnLength,ioItem->Error);//DumptheoutputbufferDataCollectOutputBuffer(ioItem->OutBuffer,ioItem->ReturnLength);//Freeourbuffermemoryfree(ioItem->InBuffer);free(ioItem->OutBuffer);//CloseouroverlappedeventhandleCloseHandle(ioItem->IoOverlapped.hEvent);//FreeourioItemmemoryfree(ioItem);return;}结论及展望随着电子计算机的广泛应用,社会的数字化程度越来越高,数据采集也越来越重要,本系统是一种通用的高速数据采集系统,可用于生物电波、电子学频谱、声波分析等瞬态信号的实时采集和观察等场合。其中基于USB总线的高速数据采集系统具有可靠性高、数据不丢失、抗干扰性强、便于数据传输和处理等优点,因而具有良好的应用前景和很大的实用价值。在图像处理、瞬态信号测量等一些高速、高精度的应用中,也需要进行高速数据采集°USB2.0接口以其高速率等优点渐有取代传统ISA及PCI数据总线的趋势,热插拔特性也使其成为各

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论