• 大小: 7KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-12
  • 语言: 其他
  • 标签: CVI  

资源简介

基于labCVI的波形发生器源码,此代码运行在labCVI 2013版本中,通过前面板的选择可以产生不同波形的数据,波形数据具有保存为文本文件和回放功能

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include “Wave.h“
static int SamplingRate=1;
static int panelHandle;
double data[1024];  

int main (int argc char *argv[])
{
if (InitCVIRTE (0 argv 0) == 0)
return -1; /* out of memory */
if ((panelHandle = LoadPanel (0 “Wave.uir“ PANEL)) < 0)
return -1;
DisplayPanel (panelHandle);
RunUserInterface ();
DiscardPanel (panelHandle);
return 0;
}
int CVICALLBACK SamplingRateCB (int panel int control int event
void *callbackData int eventData1 int eventData2)
{

switch (event)
{
case EVENT_VAL_CHANGED:

GetCtrlVal (panelHandle PANEL_NUMERICDIAL &SamplingRate);
break;
}
return 0;
}

int CVICALLBACK QuitCB (int panel int control int event
void *callbackData int eventData1 int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
QuitUserInterface (0);
break;
}
return 0;
}

int CVICALLBACK WaveFunCB (int panel int control int event
void *callbackData int eventData1 int eventData2)
{
double phase;
    int wave;
    int period;
    double value;
switch (event)
{
case EVENT_COMMIT:
 
//读取波形参数
             GetCtrlVal (panelHandle PANEL_NUMERICKNOB_V &value);
             GetCtrlVal (panelHandle PANEL_NUMERICKNOB_T &period);
            //读取波形
             GetCtrlVal (panelHandle PANEL_RINGSLIDE &wave);  
            //产生波形
             phase=1.0;
             switch (wave)
          {
                 case 0:                 //产生正弦波 
                     SineWave (1024 value 1.0/period &phase data);  
              break;
                 case 1:             //产生方波 
                     SquareWave (1024 value 1.0/period &phase 50.0 data); 
              break;
                 case 2:                 //产生三角波  
                      TriangleWave (1024 value 1.0/period &phase data); 
              break;
                 case 3:                  //产生锯齿波
                      SawtoothWave (1024 value 1.0/period &phase data);
          
              break;
                 case 4:                 //无
          
Clear1D (data 1024);
              break;
                 default:
          
              break;
          }
    
            //显示波形
            DeleteGraphPlot (panelHandle PANEL_GRAPH -1 VAL_IMMEDIATE_DRAW);
PlotWaveform (panelHandle PANEL_GRAPH data 1024 VAL_DOUBLE 1.0 0.0 0.0 1.0/SamplingRate VAL_THIN_LINE VAL_EMPTY_SQUARE VAL_SOLID 1 VAL_RED);

break;
}
return 0;
}

int CVICALLBACK WaveSaveCB (int panel int control int event
void *callbackData int eventData1 int eventData2)
{
FILE *fp;


switch (event)
{
case EVENT_COMMIT:
//创建并打开文件
  fp = fopen (“data.txt“ “wb“);   

//保存波形数据
  
  fwrite (data sizeof(double) 1024 fp);

//关闭文件
  

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3938  2014-11-28 15:04  LWCVI波形发生器\作业一\Wave.c

     文件       2552  2014-11-28 15:04  LWCVI波形发生器\作业一\Wave.h

     文件      11041  2014-11-25 16:50  LWCVI波形发生器\作业一\Wave.prj

     文件       9352  2014-11-28 15:07  LWCVI波形发生器\作业一\Wave.uir

     目录          0  2014-11-28 15:08  LWCVI波形发生器\作业一

     目录          0  2015-05-15 14:35  LWCVI波形发生器

----------- ---------  ---------- -----  ----

                26883                    6


评论

共有 条评论