问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

labwindows 异步定时器能开多个吗

发布网友 发布时间:2022-05-16 08:06

我来回答

1个回答

热心网友 时间:2023-10-16 04:21

//*********************************************************
// Labwindows/cvi8.5 同步/异步定时器的使用2
// szlihongtao
// 2010-06-16
// 参照 王建新的<Labwindows/cvi测试技术及工程应用> page312
// 稍有改写
//*********************************************************
#include <utility.h>
#include <cvirte.h>
#include <userint.h>
#include "toolbox.h"
#include "asynctmr.h"
#include "asy.h"
//*********************************************************
#define TB 0.02 // 定时器的间隔周期
//设置异步定时器的callbackData参数
static void *asyncCBData = "这是一个异步定时器示例!5555555555";
//设置同步定时器的callbackData参数
static void *syncCBData = "这是一个同步定时器示例!4444444444";

static int timerid; //异步定时器句柄
static int panelHandle;
int CVICALLBACK asynCB (int reserved, int timerId, int event, void *callbackData, int eventData1, int eventData2);
//*********************************************************
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
if ((panelHandle = LoadPanel (0, "asy.uir", PANEL)) < 0)
return -1;

timerid = NewAsyncTimer (TB, -1, 0, asynCB, asyncCBData); //创建一个异步定时器
DisplayPanel (panelHandle);
RunUserInterface ();

DiscardAsyncTimer (timerid); //释放异步定时器
DiscardPanel (panelHandle);
return 0;
}
//*********************************************************
int CVICALLBACK start (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int mode;
double ddd;

switch (event)
{
case EVENT_COMMIT:
{
GetCtrlVal (panelHandle, PANEL_BINARYSWITCH, &mode);
if (mode) //设置异步定时器的ENABLED属性
{
SetAsyncTimerAttribute (timerid, ASYNC_ATTR_ENABLED, 1);
SetAsyncTimerAttribute (timerid, ASYNC_ATTR_INTERVAL, TB);
SetCtrlAttribute (panelHandle, PANEL_TIMER, ATTR_ENABLED, 0);
}
else //传递同步定时器的callbackData参数
{
SetAsyncTimerAttribute (timerid, ASYNC_ATTR_ENABLED, 0);
SetCtrlAttribute (panelHandle, PANEL_TIMER, ATTR_ENABLED, 1);
SetCtrlAttribute (panelHandle, PANEL_TIMER, ATTR_INTERVAL, TB);
}

//设置输入模式,与设置控件的dimmed属性类似
SetInputMode (panelHandle, PANEL_CMD_START, 0);
break;
}
}
return 0;
}
//*********************************************************
int CVICALLBACK QuitCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
QuitUserInterface (0);
break;
}
return 0;
}
//*********************************************************
int CVICALLBACK stop (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
{
SetCtrlAttribute (panelHandle, PANEL_CMD_START, ATTR_DIMMED, 0);// 允许再次启动
SetAsyncTimerAttribute (timerid, ASYNC_ATTR_ENABLED, 0);
SetCtrlAttribute (panelHandle, PANEL_TIMER, ATTR_ENABLED, 0);
break;
}
}
return 0;
}
//*********************************************************
int CVICALLBACK timer (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
double yarray[2];

switch (event)
{
case EVENT_TIMER_TICK:
{
yarray[0] = Random (0, 100); //产生0-100之间的随机数 ;
PlotStripChart (panelHandle, PANEL_STRIPCHART, yarray, 1, 0, 0, VAL_DOUBLE);

SetCtrlVal (panelHandle, PANEL_TEXTMSG,syncCBData);
break;
}
}
return 0;
}
//*********************************************************
int CVICALLBACK asynCB (int reserved, int timerId, int event,
void *callbackData, int eventData1, int eventData2)
{
double yarray[2];
switch (event)
{
case EVENT_TIMER_TICK:
{
yarray[0] = Random (0, 100);
PlotStripChart (panelHandle, PANEL_STRIPCHART, yarray, 1, 0, 0, VAL_DOUBLE);

SetCtrlVal (panelHandle, PANEL_TEXTMSG, (char *)callbackData);
break;
}
}
return 0;
}
//*********************************************************
//*********************************************************
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 setinterval是异步还是同步 plc采用定时中断定时和普通定时器定时有什么区别 我追的女孩带我去见她妈妈,这表示什么呢!我下一步要怎么办 我即将带我女友去见我妈妈 手机是借同学的,我妈不知道,但她在她手机上可以看到我这个苹果手机的使用记录,请问是怎么看到的? 我可以带他去见我妈妈吗 带你去见我妈卢珊是哪里人 麻烦哪位帮下忙。edit with vim是什么,需要下载吗,还是Notepad++自带的,我右键点击为什么不显示,谢谢 无法完成您的itunes store的请求。发生未知错误(-1202)。 带你去见我妈东莞怎么没上映? win7 右键键盘快捷键设置 Notepad++ 下载解压后有两个文件夹 一个是ansi 一个是 unicode 带你去见我妈为什么要叫老小婶 edit with notepad++ 能下载吗 有点话下载地址给我下 《带你去见我妈》卢珊是哪里人? 带你去见我妈电影票在外卖怪19元起? Python怎样打开edit with idle和edit with notepad++ notepad++不管什么类型的文件打开右键都有Edit With Notepad++ 带你去年我妈电影什么时候下架 Edit With Noteped++是什么意思 关于java定时器 区别 cvi的异步定时器可以设置优先级吗 单片机中定时器一二有区别吗 怎么怎么制作软件?制作需要模板吗? QQ怎么在显示器侧边隐藏 制作软件是要编程吗?(步骤是怎样的) 怎样把QQ侧面的面版去掉 North Face是什么意思 the north face 什么意思 QQ聊天的侧边栏可以关掉吗? 怎么让QQ页面缩在电脑桌面的侧面? 梦到只有头和两只手的怪物追自己周公解梦 怎么把qq界面隐藏到侧面 紫岳贺兰蛇龙珠干红怎么辩真假 市面上开发商破产重整时间一般是多长? 红米笔记本 硬盘不兼容 宽带电视怎样安装的 怎么退订电信的流量包月包? 硬盘和电脑不兼容 我的硬盘坏了换了别人的硬盘,但是我的显卡与电脑不兼容…怎么办