📄 sample11_ao.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 + -