LabWindows/CVI线程操作
参考:http://www.ni.com/white-paper/3663/zhs/
结果:
#include <utility.h>
#include <ansi_c.h>
#include <cvirte.h>
#include <userint.h>
#include "test2.h"static int panelHandle;
int startFlag=0;// 线程标识 1开始;同时也是OK控件奇偶数次按下的标识
int CVICALLBACK DataAcqThreadFunction (void *functionData); //线程int main (int argc, char *argv[])
{if (InitCVIRTE (0, argv, 0) == 0)return -1; /* out of memory */if ((panelHandle = LoadPanel (0, "test2.uir", PANEL)) < 0)return -1;DisplayPanel (panelHandle);RunUserInterface ();DiscardPanel (panelHandle);return 0;
}int CVICALLBACK MainCallBack (int panel, int event, void *callbackData,int eventData1, int eventData2)
{switch (event){case EVENT_GOT_FOCUS:break;case EVENT_LOST_FOCUS:break;case EVENT_CLOSE:QuitUserInterface(0); //关闭程序break;}return 0;
}int CVICALLBACK Calculate (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)
{double a,b;char ss[100];switch (event){case EVENT_COMMIT:GetCtrlVal(panelHandle,PANEL_PARA_A,&a);GetCtrlVal(panelHandle,PANEL_PARA_B,&b); sprintf(ss,"=%f",a+b);SetCtrlVal(panelHandle,PANEL_RESULT,ss);break;}return 0;
}int CVICALLBACK Start (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)
{int functionId;switch (event){case EVENT_COMMIT:if(startFlag==0){startFlag=1;SetCtrlAttribute (panelHandle, PANEL_START, ATTR_LABEL_TEXT, "CANCEL");CmtScheduleThreadPoolFunction (DEFAULT_THREAD_POOL_HANDLE, DataAcqThreadFunction, NULL, &functionId);
// CmtWaitForThreadPoolFunctionCompletion (DEFAULT_THREAD_POOL_HANDLE, functionId, 0); //辅助线程完成后才回归主线程}else{startFlag=0;SetCtrlAttribute (panelHandle, PANEL_START, ATTR_LABEL_TEXT, "START");}break;}return 0;
}int CVICALLBACK DataAcqThreadFunction (void *functionData)
{int i=0;char ss[100];char output_file[]="data_xxx.csv";sprintf(output_file,"data_%3d.csv",1); //设置文件名FILE* fd=fopen(output_file,"w"); //“写”打开文件if(!fd){perror("fopen failed!");return 1;}SetCtrlVal(panelHandle, PANEL_COUNT, "0");//这里确实跟MFC不太一样,可以直接访问主线程的控件while(1){i++;sprintf(ss,"%d",i);SetCtrlVal(panelHandle, PANEL_COUNT, ss); Delay(1); //延迟1sfprintf(fd,"%ld, ",i); //输出数据+换格fprintf(fd,"\n"); //换行if(i>1000 || !startFlag){break;}}fclose(fd); //关闭文件return 0;
}
LabWindows/CVI线程操作相关推荐
- LabWindows™/CVI中的多线程技术
目录(?)[+] http://zone.ni.com/devzone/cda/tut/p/id/6943#toc3 LabWindows™/CVI中的多线程技术 2 ratings | 2.50 o ...
- LabWindows™/CVI中的多线程技术【转】
http://zone.ni.com/devzone/cda/tut/p/id/6943#toc3 LabWindows™/CVI中的多线程技术 2 ratings | 2.50 out of 5 R ...
- LabWindows CVI 2017开发笔记--串口调试软件实例
一.新建工程 打开LabWindows CVI软件,在桌面新建SerialDebug文件夹用来保存工程文件,在欢迎页点击New–>Project 或者在软件首页点击File–>New–&g ...
- iOS 线程操作库 PromiseKit
iOS 线程操作库 PromiseKit 官网:http://promisekit.org/ github: https://github.com/mxcl/PromiseKit/tree/maste ...
- linux 线程操作问题undefined reference to ‘pthread_create‘的解决办法(cmake)
linux 线程操作问题undefined reference to 'pthread_create'的解决办法(cmake) 参考文章: (1)linux 线程操作问题undefined refer ...
- Linux C编程--线程操作1--线程概述和简单的线程操作
关于linux线程 在许多经典的操作系统教科书中, 总是把进程定义为程序的执行实例, 它并不执行什么, 只是维护应用程序所需的各种资源. 而线程则是真正的执行实体. 为了让进程完成一定的工作, 进程 ...
- iOS子线程操作总结
子线程同步与异步: dispatch_sync(),同步添加操作.他是等待添加进队列里面的操作完成之后再继续执行. dispatch_queue_t concurrentQueue = dispatc ...
- 【Java 并发编程】线程操作原子性问题 ( 问题业务场景分析 | 使用 synchronized 解决线程原子性问题 )
文章目录 总结 一.原子性问题示例 二.线程操作原子性问题分析 三.使用 synchronized 解决线程原子性问题 总结 原子操作问题 : 线程中 , 对变量副本 count 进行自增操作 , 不 ...
- 线程间定制化调用通信—— 1 高内聚低耦合的前提下,线程操作资源类 2 判断/干活/通知 3 多线程交互中,必须要防止多线程的虚假唤醒,也即(判断只用while,不能用if)
生产者与消费者模式 一个生产者与一个消费者 题目:现在有两个线程,可以操作初始值为0的一个变量,实现一个线程对该变量加1,另一个线程对该变量减1,这两个线程的操作加一.减一交替,进行10轮,变量的初始 ...
最新文章
- 2019年上半年收集到的人工智能集成学习干货文章
- 北信源IPO,拟筹资开发企业级云安全管理平台
- 网络编程学习笔记(gethostbyname函数)
- LNMP基础架构介绍与安装
- git reset 怎么还原_git reset –hard后的恢复操作
- 阿里P8成长路线!我的头条面试经历分享,吊打面试官系列!
- Jupyter-Notebook插入公式
- 美团提出具有「位置编码」的Transformer,性能优于ViT和DeiT
- 深化美国分布式光伏领域合作 苏美达辉伦向美企供应7兆瓦组件
- Python 数据可视化利器 plus(plotly )
- 27_线程安全操作及其案例
- java实现二分查找
- 【Duet display】Mac分屏神器
- Typora下载、安装及使用
- 关于下载安装pycharm专业版的步骤
- 使用CORS解决跨域问题
- 微信公众号开发获取openID以及用户详细信息,超详细步骤,亲测开发
- 查看计算机内存过高,物理内存过高怎么办,教您电脑物理内存过高怎么办
- 【转】每个程序员应该阅读的10本经典书籍
- linux上使用openocd的问题
热门文章
- 【封面】云落地中国的“大运维”之路
- n9009+android+4.4.2,三星N9009 (Galaxy Note 3 电信版 Android 4.4)救砖教程 救砖包 刷回官方系统支持OTA升级...
- 网络游戏之帧同步物理模拟
- 2020 年终总结:出书、办签售会、发展社区、成为开源先锋、全网十万粉丝
- WordPress多站点发布文章同步,API实现一篇文章发布多个平台(同栏目)
- java添加水印文字模糊问题(Graphics2D文字和图形边缘线条平滑效果)
- 1300平办公室无线覆盖解决方案
- 中国十大“勾魂”美景-黄山云海
- Okhttp 之 okio
- 世界杯 叮当 机器人 树莓派_这个夏天,叮当很忙! 腾讯叮当世界杯大数据报告...