参考: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线程操作相关推荐

  1. LabWindows™/CVI中的多线程技术

    目录(?)[+] http://zone.ni.com/devzone/cda/tut/p/id/6943#toc3 LabWindows™/CVI中的多线程技术 2 ratings | 2.50 o ...

  2. LabWindows™/CVI中的多线程技术【转】

    http://zone.ni.com/devzone/cda/tut/p/id/6943#toc3 LabWindows™/CVI中的多线程技术 2 ratings | 2.50 out of 5 R ...

  3. LabWindows CVI 2017开发笔记--串口调试软件实例

    一.新建工程 打开LabWindows CVI软件,在桌面新建SerialDebug文件夹用来保存工程文件,在欢迎页点击New–>Project 或者在软件首页点击File–>New–&g ...

  4. iOS 线程操作库 PromiseKit

    iOS 线程操作库 PromiseKit 官网:http://promisekit.org/ github: https://github.com/mxcl/PromiseKit/tree/maste ...

  5. linux 线程操作问题undefined reference to ‘pthread_create‘的解决办法(cmake)

    linux 线程操作问题undefined reference to 'pthread_create'的解决办法(cmake) 参考文章: (1)linux 线程操作问题undefined refer ...

  6. Linux C编程--线程操作1--线程概述和简单的线程操作

    关于linux线程 在许多经典的操作系统教科书中, 总是把进程定义为程序的执行实例, 它并不执行什么, 只是维护应用程序所需的各种资源. 而线程则是真正的执行实体.  为了让进程完成一定的工作, 进程 ...

  7. iOS子线程操作总结

    子线程同步与异步: dispatch_sync(),同步添加操作.他是等待添加进队列里面的操作完成之后再继续执行. dispatch_queue_t concurrentQueue = dispatc ...

  8. 【Java 并发编程】线程操作原子性问题 ( 问题业务场景分析 | 使用 synchronized 解决线程原子性问题 )

    文章目录 总结 一.原子性问题示例 二.线程操作原子性问题分析 三.使用 synchronized 解决线程原子性问题 总结 原子操作问题 : 线程中 , 对变量副本 count 进行自增操作 , 不 ...

  9. 线程间定制化调用通信—— 1 高内聚低耦合的前提下,线程操作资源类 2 判断/干活/通知 3 多线程交互中,必须要防止多线程的虚假唤醒,也即(判断只用while,不能用if)

    生产者与消费者模式 一个生产者与一个消费者 题目:现在有两个线程,可以操作初始值为0的一个变量,实现一个线程对该变量加1,另一个线程对该变量减1,这两个线程的操作加一.减一交替,进行10轮,变量的初始 ...

最新文章

  1. 2019年上半年收集到的人工智能集成学习干货文章
  2. 北信源IPO,拟筹资开发企业级云安全管理平台
  3. 网络编程学习笔记(gethostbyname函数)
  4. LNMP基础架构介绍与安装
  5. git reset 怎么还原_git reset –hard后的恢复操作
  6. 阿里P8成长路线!我的头条面试经历分享,吊打面试官系列!
  7. Jupyter-Notebook插入公式
  8. 美团提出具有「位置编码」的Transformer,性能优于ViT和DeiT
  9. 深化美国分布式光伏领域合作 苏美达辉伦向美企供应7兆瓦组件
  10. Python 数据可视化利器 plus(plotly )
  11. 27_线程安全操作及其案例
  12. java实现二分查找
  13. 【Duet display】Mac分屏神器
  14. Typora下载、安装及使用
  15. 关于下载安装pycharm专业版的步骤
  16. 使用CORS解决跨域问题
  17. 微信公众号开发获取openID以及用户详细信息,超详细步骤,亲测开发
  18. 查看计算机内存过高,物理内存过高怎么办,教您电脑物理内存过高怎么办
  19. 【转】每个程序员应该阅读的10本经典书籍
  20. linux上使用openocd的问题

热门文章

  1. 【封面】云落地中国的“大运维”之路
  2. n9009+android+4.4.2,三星N9009 (Galaxy Note 3 电信版 Android 4.4)救砖教程 救砖包 刷回官方系统支持OTA升级...
  3. 网络游戏之帧同步物理模拟
  4. 2020 年终总结:出书、办签售会、发展社区、成为开源先锋、全网十万粉丝
  5. WordPress多站点发布文章同步,API实现一篇文章发布多个平台(同栏目)
  6. java添加水印文字模糊问题(Graphics2D文字和图形边缘线条平滑效果)
  7. 1300平办公室无线覆盖解决方案
  8. 中国十大“勾魂”美景-黄山云海
  9. Okhttp 之 okio
  10. 世界杯 叮当 机器人 树莓派_这个夏天,叮当很忙! 腾讯叮当世界杯大数据报告...