现在位置:范文先生网>理工论文>电子通信论文>基于USB和多线程的实时数据采集系统

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

时间:2022-08-09 05:09:12 电子通信论文 我要投稿
  • 相关推荐

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

  对于广大用户而言,与系统的交互是通过应用程序实现,而且整个实时采集系统的主要数据处理都是在这里完成的。因此,运行效率高、界面友好、具有强大数据分析和处理的应用程序的设计,也是系统设计上一个不容忽视的关键因素。应用程序的主要功能有:启动/关闭USB设备,检测USB设备,设置USB数据传输管道/端口,设置A/D,采集数据,显示/分析数据。这里,我们采用VisualC++6.0作为程序的开发环境,并且充分运用了多线程的编程思想。
  在这个设备中,设置4个线程:首先是1个主线程,负责用户界面,并保持中枢地位。它的生存周期也就是整个用户程序的主存期,用户的动作(例如鼠标事件、键盘事件)都会触发主线程的消息机制,从而完成对用户的响应;而3个分离的辅助线程分别负责数据的采集、数据的分析处理以及数据的显示这3个不同的任务。辅助线程是在主线程运行过程中产生的,它的生命就是线程函数本身,函数一旦return,线程就结束了。因此,辅助线程的生存周期只是整个程序生存期的一部分。
  MFC程序只会有一个CwinApp对象,而CwinApp派生自CwinThread,即产生了应用程序的主线程。每当需要一个额外的线程时,应先产生一个CwinThread对象,再调用全局函数AfxBeginThread(),将线程产生出来。
  对于辅助线程(workerthread),要为它准备一个线程函数,然后调用AfxBeginThread()。例如:CWinThread*pThread=AfxBeginThread(ThreadFunc,¶m);
  UINTThreadFunc(LPVOIDpParam);//线程函数
  对于用户界面线程(UIthread),不能够光由一个线程函数来代表,因为它要处理消息,它需要一个消息循环。应该先从CWinThread派生一个自己的类,再调用AfxBeginThread()产生一个CWinThread对象。网站www.fwsir.com
  结语
  基于USB技术的实时数据采集系统,在编程上运用了多线程思想;从硬件和软件两方面录求较佳的解决途径,并将二者结合起来,在实际中取得了良好的运行效果。

【基于USB和多线程的实时数据采集系统】相关文章:

基于Verilog HDL设计的自动数据采集系统04-12

基于Small RTOS51的数据采集器设计04-12

提高实时操作系统的实时性能和可靠性策略08-19

基于Vxworks实时操作系统的串口通信程序设计与实现08-19

利用Delphi 3.0开发微机数据采集与处理软件系统04-12

基于数据库技术的实验室管理系统的研究08-18

基于校园一卡通数据系统的学生行为分析研究08-19

基于试题库的试卷管理和自动排版系统的设计和实现08-20

嵌入式实时系统开发的正确选择08-19

基于Client/Server 的课件系统的设计与实现04-12