博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LabWindows/CVI线程操作
阅读量:4030 次
发布时间:2019-05-24

本文共 2369 字,大约阅读时间需要 7 分钟。

参考:http://www.ni.com/white-paper/3663/zhs/

结果:

#include 
#include
#include
#include
#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); //延迟1s fprintf(fd,"%ld, ",i); //输出数据+换格 fprintf(fd,"\n"); //换行 if(i>1000 || !startFlag){ break; } } fclose(fd); //关闭文件 return 0;}

你可能感兴趣的文章
pandas时间序列频率处理
查看>>
绘图和可视化(matplotlib)
查看>>
绘图和可视化(pandas)
查看>>
绘图和可视化(seaborn)
查看>>
Vim日常使用
查看>>
计算机网络第一记:网络核心
查看>>
信息检索:基于知识图谱和深度学习的文本表示和搜索(Explicit and distributed semantics for text representation and retrieval)
查看>>
计算机网络第二记:协议层次
查看>>
计算机网络第三记:网络安全
查看>>
深度学习训练中如何处理NaNs
查看>>
机器学习与其他相似概念
查看>>
深度学习库提供了什么?
查看>>
Theano中如何只更新一部分权重,用法及理由。
查看>>
深度学习实践
查看>>
机器学习探索性数据分析的数据类型
查看>>
机器学习探索性数据分析的数据类型(补充)
查看>>
机器学习中典型工作流程
查看>>
数据挖掘十大算法 and 算法概述
查看>>
机器学习中样本数据预处理
查看>>
机器学习中样本缺失值的处理方法
查看>>