📄 3.c
字号:
#include <analysis.h>
#include <ansi_c.h>
#include <cvirte.h>
#include <userint.h>
#include "3.h"
static int panelHandle;
static double *wave;
int samples;
double *Mag;
int __stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpszCmdLine, int nCmdShow)
{
if (InitCVIRTE (hInstance, 0, 0) == 0)
return -1; /* out of memory */
if ((panelHandle = LoadPanel (0, "3.uir", PANEL)) < 0)
return -1;
DisplayPanel (panelHandle);
RunUserInterface ();
DiscardPanel (panelHandle);
return 0;
}
int CVICALLBACK CalFFT (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
double *Phase;
double *Img;
int i;
switch (event)
{
case EVENT_COMMIT:
Img=malloc(samples *sizeof(double));
for(i=0;i<samples;i++)
Img[i]=0;
Mag=malloc( samples *sizeof(double));
Phase=malloc(samples *sizeof(double));
FFT(wave,Img,samples);
ToPolar1D (wave, Img, samples, Mag, Phase);
DeleteGraphPlot (panelHandle, PANEL_GRAPH, -1, VAL_IMMEDIATE_DRAW);
PlotY (panelHandle, PANEL_GRAPH, Mag, samples, VAL_DOUBLE, VAL_THIN_LINE, VAL_EMPTY_SQUARE,
VAL_SOLID, 1, VAL_RED);
free(wave);
free(Img);
free(Phase);
break;
}
return 0;
}
int CVICALLBACK GenerateWave (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
double amp;
int sampcyc;
double f,p=0 ;
double phase;
double cycnum;
switch (event)
{
case EVENT_COMMIT:
GetCtrlVal (panelHandle, PANEL_AMP, &);
GetCtrlVal (panelHandle, PANEL_SAMPCYC, &sampcyc);
f=1.0/sampcyc;
GetCtrlVal (panelHandle, PANEL_CYCNUM, &cycnum);
GetCtrlVal (panelHandle, PANEL_PHASE, &phase);
samples=cycnum*sampcyc;
wave=malloc(samples *sizeof(double));
SineWave (samples, amp, f, &phase, wave);
DeleteGraphPlot (panelHandle, PANEL_GRAPH, -1, VAL_IMMEDIATE_DRAW);
PlotY (panelHandle, PANEL_GRAPH, wave, samples, VAL_DOUBLE, VAL_THIN_LINE, VAL_EMPTY_SQUARE,
VAL_SOLID, 1, VAL_RED);
break;
}
return 0;
}
int CVICALLBACK WatchSpm (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int k;
switch (event)
{
case EVENT_COMMIT:
GetCtrlVal (panelHandle, PANEL_SELESPM, &k) ;
if(k<1|k>samples-2)
{
MessagePopup("Warning","the value of k is unacceptable");
break;
}
SetCtrlVal (panelHandle, PANEL_K_1SPM,Mag[k-1]);
SetCtrlVal (panelHandle, PANEL_KSPM, Mag[k]);
SetCtrlVal (panelHandle, PANEL_K1SPM, Mag[k+1]);
break;
}
return 0;
}
int CVICALLBACK close (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
free(Mag);
QuitUserInterface (0);
break;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -