LabWindowsCVI 异步定时器的使用

我用软件版本是LabWindows CVI 8.5版本,我也是去年才开始摸索,因为有点 C语言的底子(我是学电子的,可大学除了数字电路和C语言课程每次都是高分外,其他几门课程完全靠老师的心情),学起来觉得不是很难,毕竟我不是编程科班出生,所以后的代码可能不是很规范,希望各位专业人士教教我,有什么错的或者不好的习惯跟我说说,小弟先在这多谢了,不说废话正题来了!

LabWindows CVI控件添加里面有个Timer如下图,是一个同步定时器,可是要当你用到多个定时器同事工作,这个定时中断就很让人蛋疼,特别是通讯过程中,会让主界面功能反应无法满意,所以就需要建立异步定时器来处理一些东西。下面是建立的步骤:

  

 

首先向主程序的源文件添加必要的头文件,以及向工程里添加异步定时器的.C文件,它的原始文件放在CVI安装目录里面,地址一般是C:\Program Files\National Instruments\CVI85\toolslib\toolbox,里面有三种文件,扩展名分别是.h / .c /.fp,其中.fp是控件的资源文件,异步定时器的名字是asynctmr,把这三个文件分别加入工程相应的目录中,然后再在工程文件中载入头文件,入下图

导入头文件:#include “asynctmr.h”

接下来就要开始建立异步定时器了,现在main()前面申请回调函数名,就是当中断发生时运行的函数。这个一定要按照以下格式命名,int CVICALLBACK NAV_Timer (int reserved, int timerId, int event, void *callbackData, int eventData1, int eventData2);//定义处理CNI上传数据异步定时器回调函数。

其中CNI_Timer是回调函数名字,其他不能变动,

接着就是建立一个异步定时器

有三个语句

       plNAV_TEMER = NewAsyncTimer (1.0, -1, 0, NAV_Timer,""); //建立一个异步定时器

       SetAsyncTimerAttribute (plNAV_TEMER, ASYNC_ATTR_ENABLED, 0);

SetAsyncTimerAttribute (plNAV_TEMER, ASYNC_ATTR_INTERVAL, 0.05);

plNAV_TEMER是一个static int类型的参数,用于保存异步定时器的句柄,设置属性或者要释放资源的时候会用到它。

SetAsyncTimerAttribute (plNAV_TEMER, ASYNC_ATTR_ENABLED, 0);这调语句是给异步定时器使能用的,最后个参数为0的时候不运行中断程序,当为1的时候运行中断程序,我们可以通过这条语句控制定时器的工作状态。参数plNAV_TEMER就是说我要调用哪一个控件,或者界面。

SetAsyncTimerAttribute (plNAV_TEMER, ASYNC_ATTR_INTERVAL, 0.05);这条语句定义的是定时器中断时间,0.05表示50ms中断一次。

最后释放异步定时器资源,语句是

DiscardAsyncTimer(plNAV_TEMER); //释放异步定时器

这个最好是程序结束时在释放,中间如果需要的话可以通过SetAsyncTimerAttribute (plNAV_TEMER, ASYNC_ATTR_ENABLED, 0);这条语句来暂停定时器。

最后还有就是编写中断回调程序,编写的格式是

int CVICALLBACK NAV_Timer (int reserved, int timerId, int event,

void *callbackData, int eventData1, int eventData2)//定义处理CNI上传数据

{

         switch (event)

       {

              case EVENT_COMMIT:

       在这里面写你的处理程序

                    

                     break;

       }

       return 0;

 

}

小弟我第一次写个专业的学习文档,希望各位能多给出指点。

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值