www.pudn.com > LabWindowsCVI.rar > sample11_ao.c
#include#include 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); }