LabWindows CVI 2017开发笔记--常用API

news/2025/1/15 19:37:28/

参考资料:https://download.csdn.net/download/Stark_/87424565?spm=1001.2014.3001.5501
转载注明出处:https://blog.csdn.net/Stark_/article/details/128929308

打印输出printf

printf("Hello,world!\n");
putchar();

参考:https://blog.csdn.net/sugarbliss/article/details/80230710

获取输入scanf

scanf();
getchar();
gets();

正弦波生成SinePattern

SinePattern函数产生一个正弦波型数组,该函数输出一个double型数组供使用。
SinePattern的原型:
AnalysisLibErrType SinePattern (ssize_t numberOfElements, double amplitude, double phaseDegrees, double numberOfCycles, double sinePattern[]);
输入参数:
在这里插入图片描述
输出参数
在这里插入图片描述

double sine[1000];
SinePattern(1000,1,0,2,sine);
//产生1000个数据点,幅值1,相位0,周期2,保存至数组sine

波形绘制YGraphPopup

绘图控件弹出菜单有四种图表显示格式:XGraphPopup 、 YGraphPopup、XYGraphPopup、WaveformGraphPopup

其中YGraphPopup画出以数组的索引为X轴坐标,数组元素作为Y轴坐标的一个曲线图

double sine[1000];
SinePattern(1000,1,0,2,sine);
YGraphPopup("sine wave",sine ,1000, VAL_DOUBLE);
//绘制窗口名称为sine wave,数据点为数据为sine ,数据点个数为1000,数据类型为VAL_DOUBLE

以上代码运行结果:
在这里插入图片描述

GUI界面主函数框架main

static int panelMain; //面板的全局句柄
//argc记录用户在运行程序的命令行的参数个数,在VS中默认为1,argv[0] 程序的全名。
//*argv[]是个指针数组,存放输入在命令行上的命令(字符串)
int main (int argc, char *argv[])
{if (InitCVIRTE (0, argv, 0) == 0)   //CVI运行引擎初始化return -1;	/* out of memory */if ((panelMain = LoadPanel (0, "Calculate.uir", PANEL_Main)) < 0)	 //加载主面板return -1;															 DisplayPanel (panelMain);   //显示主面板RunUserInterface ();	   //开始消息队列循环,正常情况下死循环,直到用户主动关闭界面DiscardPanel (panelMain);return 0;
}

main 函数实现的功能分别是
CVI 运行引擎初始化(InitCVIRTE 函数)、
加载面板(LoadPanel 函数)、
显示面板(DisplayPanel 函数)、
开始消息队列循环(RunUserInterface 函数)。
其中,
RunUserInterface 会不断的检查面板的消息或者操作系统发送的消息,永远不会返回,除非用户主动调用 QuitUserInterface 函数中止消息循环。
所以,正常运行状态下,main 函数中的 DiscardPanel 永远不会被执行,main 函数永远不会退出,直到程序被关闭。

关闭程序QuitUserInterface

//主面板回调函数
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);//关闭面板0(主面板)break;}return 0;
}

获取控件参数值GetCtrlVal

int GetCtrlVal (int panelHandle, int controlID, void *value);
//其中value为控件的当前值变量的指针。panelHandle参数为函数面板的句柄,controlID为目标控件句柄

控件的句柄即[控件所在的面板的 Constant Name]_[控件
的 Constant Name]。
若控件所在面板的 Constant Name 为 PANEL,控件的 Constant Name 为 NAME,那么控件的句柄即为 PANEL_NAME。

double a;
GetCtrlVal(panelMain,PANEL_Main_PARA_A,&a);
//获取panelMain面板上,控件句柄为PANEL_Main_PARA_A的值,并存放至a的地址中

设置控件参数值SetCtrlVal

int SetCtrlVal (int panelHandle, int controlID, ...);

同 GetCtrlVal 一样,调用 SetCtrlVal 并填入面板、控件句柄之后即可设置控件的值

char ss[100];   
sprintf(ss,"%f",a);	//将double类型a的值转为字符串,存入char型数组ss
SetCtrlVal(panelMain,PANEL_Main_RESULT,ss);
//设置panelMain面板上,控件句柄为PANEL_Main_RESULT的值,设定值为ss地址中的数据

获取控件属性值GetCtrlAttribute

 int GetCtrlAttribute (int panelHandle, int controlID, int controlAttribute,  void *attributeValue);

输入参数:
controlID,控件 ID 号。
controlAttribute,控件属性标识符(参考 LabWindows/CVI 帮助)。
输出参数:
attributeValue,获取的控件属性值。

int ctrlAttr;/* 定义存储控件属性的变量*/
GetCtrlAttribute (mainpanel, MAINPANEL_QUIT, 
ATTR_CMD_BUTTON_COLOR, &ctrlAttr);/*获得“Quit”控件的颜色*/

设置控件属性值SetCtrlAttribute

int SetCtrlAttribute (int panelHandle, int controlID, int controlAttribute, ...);

输入参数:
attributeValue,控件属性值

/*如果控件颜色不是红色,将其设置成红色*/ 
if(ctrlAttr!=VAL_RED) 
SetCtrlAttribute (mainpanel, MAINPANEL_QUIT, 
ATTR_CMD_BUTTON_COLOR, VAL_RED);

创建(打开)文件OpenFile

OpenFile 打开一个文件用以读或者写,函数返回文件句柄

int fileHandle;//文件句柄
fileHandle = OpenFile("FlieWriteRead.txt",VAL_READ_WRITE,VAL_TRUNCATE,VAL_ASCII);
//新建(如果有就打开)FlieWriteRead.txt文件 

写文件WriteFile

WriteFile 将字符串缓冲区中指定字节数的内容写到文件中;

const char s2[] = "Flie Test";   
WriteFile(fileHandle,s2,strlen(s2)); 

写文件WriteLine

WriteLine 将缓冲区中指定的字节数写入文件中,同时换行

const char s1[] = "Hello,Word!";  
WriteLine(fileHandle,s1,strlen(s1));

写文件ArrayToFile

ArrayToFile 将数组内容保存到文件中;

读文件ReadFile

ReadFile 从文件中读取指定字节数的内容到字符串缓冲区;

char ss[200]; 
ReadFile(fileHandle,ss+strlen(ss),100);

读文件ReadLine

ReadLine 从文件读取字节直到换行。

char ss[200]; 
ReadLine(fileHandle,ss,100);

读文件FileToArray

FileToArray 从文件中读取数据存储到数组中

关闭文件CloseFile

CloseFile 关闭指定的文件;

CloseFile(fileHandle);    

删除文件DeleteFile

DeleteFile 删除文件

重命名文件RenameFile

RenameFile 重命名文件

复制文件CopyFile

CopyFile 复制文件

设置文件操作位置SetFilePtr

SetFilePtr(fileHandle,0,0); //将文件内部指针指向文件开头

另外,ANSI C 中对
文件的操作的函数如 fopen、fread、fputs 等函数在 CVI 中仍然可以使用


http://www.ppmy.cn/news/23232.html

相关文章

2023.2.8每日一题

每日一题题目描述解题核心解法一&#xff1a;模拟题目描述 题目链接&#xff1a;804.唯一摩尔斯密码词 国际摩尔斯密码定义一种标准编码方式&#xff0c;将每个字母对应于一个由一系列点和短线组成的字符串&#xff0c; 比如: a对应".-"b对应"-..."c对应…

RK3399+PCIe+FPGA 在高速AD无线通信中的应用

一、需求 要实现高速AD/DA的数据采集&#xff0c;并发送到高性能arm核进行数据处理&#xff1b; 方案RK3399pcieFPGAAD/DA。 二、器件介绍 一、RK3399 RK3399是一款低功耗、高性能处理器&#xff0c;用于计算、个人移动互联网设备和其他智能设备应用。基于Big.Little架构&…

Java面试——多线程并发篇

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

SpringCloud-学习笔记(四)nacos基本使用

什么是nacos Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称&#xff0c;一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台&#xff0c;使用java语言进行开发。Nacos是阿里巴巴的产品&#xff0c;现在是SpringCloud中的一个组件…

为什么写计算机SCI论文一定要看文献? - 易智编译EaseEditing

阅读文献的目的有两个主要目的&#xff1a;一是了解世界上本专业领域的内容和发展情况&#xff1b; 二是在了解过程中&#xff0c;产生自己的idea&#xff0c;进入这个领域。 什么是idea?怎么样产生?idea一般是在阅读文章的过程中产生的&#xff0c;给出三种比较简单产生ide…

9. GridView控件的简单介绍

1. 使用说明&#xff1a; 在某种界面设计中&#xff0c;如果需要很多个类似的控件整齐的排列&#xff0c;类似方阵的一种数据展示&#xff0c;可以使用GridView控件来实现。 2. 常用属性介绍&#xff1a; width&#xff1a;宽度 height&#xff1a;高度 clip&#xff1a;超过…

Spring Boot 中文参考指南

Spring Boot 版本 2.7.8 原文&#xff1a;https://docs.spring.io/spring-boot/docs/2.7.8/reference/htmlsingle/ — 笔者注&#xff1a;Spring Boot 3.x 第一个 GA 版本已于22年底发布&#xff0c;2.7.8 是2.x 的最后一个 GA版本&#xff0c;我觉得一段时间内依然会以2.x为主…

ESP8266 + STC15基于AT指令通过TCP通讯协议控制IO状态

ESP8266 + STC15基于AT指令通过TCP通讯协议控制IO状态 📌ESP8266 AT固件基于安信可AT固件,相关刷AT固件可以参考《NodeMCU-刷写AT固件》当然WIFI模块也可以是esp01. STC15 单片机采用的是:STC15F2K60S2 晶振频率采用内部:22.1184MHz🌼功能介绍 通过电脑端的网络调试助手…