基于usb和多线程的实时数据采集系统

基于usb和多线程的实时数据采集系统

ID:26474804

大小:49.00 KB

页数:4页

时间:2018-11-27

基于usb和多线程的实时数据采集系统  _第1页
基于usb和多线程的实时数据采集系统  _第2页
基于usb和多线程的实时数据采集系统  _第3页
基于usb和多线程的实时数据采集系统  _第4页
资源描述:

《基于usb和多线程的实时数据采集系统 》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、基于usb和多线程的实时数据采集系统摘要:说明基于USB技术的实时数据采集系统的硬件、软件实现;重点介绍PDIUSBD12带并行总线的USB接口器件以及基于多线程思想设计应用程序的方法。关键词:USBPDIUSBD12多线程实时数据采集1问题的提出随着信息技术的飞速发展,各种数据的实时采集和处理在现代工业控制中已成为必不可少的。这就为我们的设计提出了两个方面的要求:一方面,要求接口简单灵活且有较高的数据传输率;另一方面,由于数据量通常都较大,要求主机能够对实时数据做出快速响应,并及时进行分析和处理。传统

2、的外设与主机的通信接口难以满足上述第一个方面的要求。这些接口一般采用PCI部线或RS-232串行总线。PCI总线虽然有很高的传输率(可达132Mbps),还能“即插即用”,但是它们的扩充槽相当有限,且插拔并不方便。RS-232串行总线虽然连接方便,可是它的带宽非常有限,传输速度太慢,而且1条RS-232串口通信电缆只能连接1个物理设备。USB技术正是顺序这一要求提出的,它集PCI和RS-232的优点于一身:具有较高的传输速率(USB协议1.1支持最高传输速度达12Mbps,USB协议2.0支持最高传输速

3、度可达148Mbps),实现了真正意义上的“即插即用”(PlugPlay),同时USB上最多可以连接127个外设。因此,将USB技术应用于数据的实时采集是非常适合的。实时系统对多任务的要求比较普遍。往往在后台采集数据、进行数据显示的同时,还要在前台界面对用户的操作做出响应。在实时系统中,对实时数据做出及时而准确的反应是十分重要的。由于受A/D采集速度等因素的限制,从硬件上采用USB接口技术的确可以提高速度,但毕竟潜力有限,因此在现有硬件设计基础上充分发挥软件的作用就能进一步提升速度。使用传统的单线程编程

4、技术效率较低,无法及时处理,必须充分利用Windoware)是储存在程序内存中的代码。它使得USB接口芯片与主机和外设中其它电路能够通信。固件由USB驱动程序(USBD)、主控制器驱动程序(HCD)两部分组成。USBD的功能可以概括为:配置管理、总线管理、数据传输管理、提供客户服务。USBD把IRP划分为USB和设备需要大小的块,确保每一个设备能分配到它所要求的USB资源,这样它就可以支持USB设备配置。USBD提供了一个编程接口USBDI(USB驱动程序接口),给客户驱动程序一种方式,用于传输请求,传

5、输的方向可以是或发往USB的功能单元。大量的客户服务是由USB的驱动程序提供的,它帮助USB的客户控制和访问它们的功能单元。HCD提供了对USB的低级支持,通过把IRP转换成为单独的事务处理后在USB上执行。基于usb和多线程的实时数据采集系统: 本系统固件设计的目标是使PDIUSBD12达到最高的传输速度。微处理器主要忙于多路数据的采集及处理,PDIUSBD12的固件设计成完全的中断驱动。USB的传输可在后台进行,这确保了最佳的传输速率和更好的软件结构,同时简化了编程和调试。它的基本思想是:后台ISR

6、(中断服务程序)和前台主程序循环之间的数据交换通过事件标志和数据缓冲区来实现。当PDIUSBD12从USB收到一个数据包时,就对单片机产生一个中断请求,单片机立即响应中断。在ISR中,固件将数据包从FDIUSBD12内部缓冲区移到循环数据缓冲区,并在随后请求清零PDIUSBD12的内部缓冲区,以使其能接收新的数据包。然后返回到主循环,检查循环缓冲区内是否有新的数据并开始其它的前台任务。基于这种结构,主循环不关心数据是USB、串口还是并口,只检查循环缓冲区内需要处理的新数据。这样,主循环程序专注于数据的处

7、理而ISR能够以尽可能高的可能高的速度进行数据的传输。这部分程序结构可包括:主循环程序——发送USB请求,处理USB总线事件和用户功能处理等;硬件提以层——对单片机的I/O口、数据总线等硬件接口进行操作;PDIUSBD12命令接口——对PDIUSBD12器件进行操作的模块子程序集;请求处理程序——对USB的标准设备请求进行处理和对用户添加的厂商请求进行处理;中断服务程序——当PDIUSBD12向单片机发出中断请求时,读取PDIUSBD12的中断传输来的数据,并设定事件标志和Setup包数据缓冲区,传输给

8、主循环。2.2.2USB设备驱动设计在);//线程函数对于用户界面线程(UIthread),不能够光由一个线程函数来代表,因为它要处理消息,它需要一个消息循环。应该先从CWinThread派生一个自己的类,再调用AfxBeginThread()产生一个CWinThread对象。具体程序见本刊网站。结语基于USB技术的实时数据采集系统,在编程上运用了多线程思想;从硬件和软件两方面录求较佳的解决途径,并将二者结合起来,在实际中取得了良好的运行效

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。