⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sample11_ao.c

📁 此源码事基于CVI的
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -