参考资料: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
白噪声生成WhiteNoise
AnalysisLibErrType WhiteNoise (int Number_of_Elements,
double Amplitude,
int Seed,
double Noise[]);
高斯噪声生成GaussNoise
AnalysisLibErrType GaussNoise (int Number_of_Elements,
double Standard_Deviation, //Standard_Deviation为标准偏差
int Seed, //Seed为随机种子值
//当Seed≥0时,函数依据该种子值生成一个新的随机序列,
//当Seed<0时,多次调用函数生成的随机序列前后连续
double Gaussian_Noise[]);//输出的噪声信号波形数组
弹窗波形绘制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
以上代码运行结果:
StripChart控件波形绘制PlotStripChartPoint
double point = 0;
point = 50;
PlotStripChartPoint(panelmain,PANELMAIN_CURVE,point);
//在句柄为panelmain的面板上,控件ID为PANELMAIN_CURVE的控件上,绘制一个点,这个点的值为point
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);
TextBox控件清空ResetTextBox
ResetTextBox(panelmain,PANELMAIN_RECEIVETEXT,"\0");//清除接收框