会员登录 -- 会员注册 -- 会员中心
 | 网站首页 | 公共论文 | 经济论文 | 教育教学 | 法律论文 | 商务管理 | 行政管理 | 医学论文 | 艺术论文 | 理工论文 | 
 | 文史论文 | 学英语 | 范文 | 


◇◇◇ 您现在的位置: 论文先生网 >> 理工论文 >> 电子通信论文 >> 正文

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

作者:佚名 2007-5-21 16:46:25


  • 对于广大用户而言,与系统的交互是通过应用程序实现,而且整个实时采集系统的主要数据处理都是在这里完成的。因此,运行效率高、界面友好、具有强大数据分析和处理的应用程序的设计,也是系统设计上一个不容忽视的关键因素。应用程序的主要功能有:启动/关闭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,&param);
        UINTThreadFunc(LPVOIDpParam);//线程函数
        对于用户界面线程(UIthread),不能够光由一个线程函数来代表,因为它要处理消息,它需要一个消息循环。应该先从CWinThread派生一个自己的类,再调用AfxBeginThread()产生一个CWinThread对象。网站www.lwsir.com
        结语
        基于USB技术的实时数据采集系统,在编程上运用了多线程思想;从硬件和软件两方面录求较佳的解决途径,并将二者结合起来,在实际中取得了良好的运行效果。
  • 上一篇论文:
  • 下一篇论文:
  • 广告位招商 0713-8567819
    最新理工论文
     接口课程设计论文:数… (07-14)
     基于USB和多线程的实时… (05-21)
     VHDL在高速图像采集系… (01-20)
     用CPLD实现单片机读写… (01-20)
     实现PCB高效自动布线的… (01-20)
     智能全数字锁相环的设… (01-20)
     利用DVI实现双屏幕超宽… (01-20)
     可视化编程串行控制中… (01-20)
     高分辨率视频数字记录… (01-20)
     液晶显示器在嵌入式系… (01-20)
     工业设备中LED显示和键… (01-20)
     μPD3575D CCD图像传感… (01-20)
     低功耗模拟前端电路设… (01-20)
     ADC信噪比的分析及高速… (01-20)
     高性能数据采集系统芯… (01-20)
     用PowerPC860实现FPGA… (01-20)
     基于单片机的 复杂可编… (01-20)
     开关电源的PCB设计规范 (01-20)
    商机无限 尽收眼底
    设为首页 | 加入收藏 | 版权申明 | |
    CopyRight 2008-2010 论文先生网