sample11_ao.c

来自「此源码事基于CVI的」· C语言 代码 · 共 71 行

C
71
字号
#include <ansi_c.h>
#include <Dataacq.h>
void main(void)
{
    //定义变量
    int i;

    double pdBuffer[100] = {0};                    //输出数据

    short iStatus = 0;                             //函数返回值
    short iDevice = 1;                             //设备ID号    
    short iNumChans = 1;                         //WFM组中包含的通道数   
    short piChanVect[1] = {0};                     // WFM组的通道向量
    short iGroup = 1;                              //WFM组号

    short iChan = 0;                               //通道号
    unsigned long ulCount = 100;                    //输出数据长度
    short piBuffer[100] = {0};                       //输出的short型数据
    
    unsigned long ulIterations = 1;                   //循环模拟输出次数
    short iFIFOMode = 0;                          //模拟输出FIFO模式
     
    double dUpdateRate = 1000.0;                   //输出速率
    short iUnits = 0;                               //输出速率单位
    short iUpdateTB = 0;                           //时间单位
    unsigned long ulUpdateInt = 0;                   //时间间隔   

    short iWhichClock = 0;                          //时钟选择     
    short iDelayMode = 0;                           //延迟模式

    short iWFMstopped = 0;                         //模拟输出状态
    unsigned long ulItersDone = 0;                    //已完成的模拟输出循环数
    unsigned long ulPtsDone = 0;                     // 当前循环输出数据长度 
  
    //产生数据
    for(i=0;i<5000;i++)
       pdBuffer[i]=15*sin(i*3.1415926/500);
      
    //指定一个或多个模拟输出通道为波形产生组
    iStatus = WFM_Group_Setup(iDevice, iNumChans, piChanVect,iGroup);

    //将采集结果从double型转换成short型
    iStatus = WFM_Scale(iDevice, iChan, ulCount, 1.0, pdBuffer, piBuffer);

    //为模拟输出通道指定输出的整形数组
    iStatus = WFM_Load(iDevice, iNumChans, piChanVect, piBuffer,
         ulCount, ulIterations, iFIFOMode);

    //由更新频率获得更新间隔时间及其单位
    iStatus = WFM_Rate(dUpdateRate, iUnits, &iUpdateTB,&ulUpdateInt);

    //为模拟输出通道指定更新频率或者延迟始终频率
    iStatus = WFM_ClockRate(iDevice, iGroup, iWhichClock, 
                 iUpdateTB, ulUpdateInt, iDelayMode);

    //向波形产生组中的模拟输出通道传输数据
    iStatus = WFM_Group_Control(iDevice, iGroup, 1);

    while ((iWFMstopped == 0) && (iStatus == 0)) {
         //检查模拟输出是否完毕
          iStatus = WFM_Check(iDevice, iChan, &iWFMstopped,
                    &ulItersDone, &ulPtsDone);
       }

    //终止向波形产生组中的模拟输出通道传输数据
    iStatus = WFM_Group_Control(iDevice, iGroup, 0);

    //向模拟输出通道输出0电压
    iStatus = AO_VWrite(iDevice, iChan, 0.0);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?