使用异步定时器编写一个数据采集的多线程程序.doc_第1页
使用异步定时器编写一个数据采集的多线程程序.doc_第2页
使用异步定时器编写一个数据采集的多线程程序.doc_第3页
使用异步定时器编写一个数据采集的多线程程序.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

实验七任务使用异步定时器编写一个数据采集的多线程程序,和普通定时器比较二者运行时的差异。实验步骤步骤1:设计程序界面,生成程序框架。根据实验要求,我们在面板上放置两个带状图控件,分别用于显示异步定时器和普通定时器的采样结果;放置一双态按钮来控制数据采集的开始和关闭。最终界面如图9-1所示,其主要控件的基本属性列表见表9-1。图9-1 最终用户界面表9-1 主要控件基本属性列表控件类型constant name 属性设置面板panelpanel命令按钮command buttonquitbuttoncallback functionquitcallbacklable_quit双态按钮toggle buttontogglebuttoncallback functiondaqcontrolcbinitial stateofflable数据定时器控件timertimercallback functiondataaquirtimercbinterval (seconds)1.0带状图控件strip chartstripchartlable普通定时器stripchart_2lable异步定时器步骤2:添加异步定时器。把异步定时器的仪器驱动程序添加到当前工程,在工程窗口选择editadd file to projectinstrument(*.fp),路径为cvitoolslibtoolboxasynctmr.fp。步骤3:获得异步定时器句柄,在main函数添加如下语句:static int asynctimerid;/*先声明句柄变量*/int main (int argc, char *argv)if (initcvirte (0, argv, 0) = 0)return -1;/* out of memory */if (panelhandle = loadpanel (0, lesson9.uir, panel) 0)return -1;displaypanel (panelhandle); /*获得异步定时器句柄*/asynctimerid=newasynctimer (1.0, -1, 0, asynctimercb, 0);runuserinterface ();discardpanel (panelhandle);return 0;步骤4:声明异步定时器回调函数。在main函数之前声明。/*声明asynctimercb*/int cvicallback asynctimercb (int reserved, int timerid, int event, void *callbackdata, int eventdata1, int eventdata2);步骤5:编写回调函数。/*双态按钮回调函数daqcontrolcb*/int cvicallback daqcontrolcb (int panel, int control, int event,void *callbackdata, int eventdata1, int eventdata2)int i;switch (event)case event_commit:getctrlval (panelhandle, panel_togglebutton, &i);setctrlattribute (panelhandle, panel_timer, attr_enabled, i);setasynctimerattribute (asynctimerid, async_attr_enabled, i);break;return 0;/*普通定时器回调函数dataaquirtimercb*/int cvicallback dataaquirtimercb (int panel, int control, int event,void *callbackdata, int eventdata1, int eventdata2)double data;switch (event)case event_timer_tick:data=(double)rand ()/rand_max*100.0;plotstripchartpoint (panelhandle, panel_stripchart_2, data);break;return 0;/*异步定时器回调函数asynctimercb */int cvicallback asynctimercb (int reserved, int timerid, int event, void *callbackdata, int eventdata1, int eventdata2)double data;switch (event)case event_timer_tick:data=(double)rand ()/rand_max*100.0;plotstr

温馨提示

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

评论

0/150

提交评论