libvkdaq
VKINGING 数据采集库 API 文档
 
载入中...
搜索中...
未找到
连续输出固定波形
注解
步骤:
1.创建任务 VkDaqCreateTask
2.创建模拟输出通道 VkDaqCreateAIAccelChan
3.设置采样时钟 VkDaqCfgSampClkTiming
4.开始任务 VkDaqStartTask
5.设置固定波形的任务数据 VkDaqSetTaskData
6.停止任务 VkDaqStopTask
7.清理任务 VkDaqClearTask

连续输出固定波形流程图示例

C语言参考

#include <iostream>
#include <stdio.h>
#include "libvkdaq.h"
#define CH_NAME "dev1/AOUT1"
#define PI 3.14159265358979323846
#define SAMPLING_FREQUENCY 10000 //1~32768
#define WAVE_AMPLITUDE 5 //0~9
#define WAVE_FREQUENCY 10
#define WAVE_PHASE 0 //0~360
#define WAVE_OFFSET 0
#define DAQmxFailed(error) ((error)<0)
#define VkDaqErrChk(functionCall) if( DAQmxFailed(error=(functionCall)) ) goto Error; else
int main(int argc, char* argv[])
{
int i = 0;
int32_t error = 0;
const char* taskHandle = "VkDaqTaskHandledac";
double* data = new double[SAMPLING_FREQUENCY];
// Sin Wave
for (i = 0; i < SAMPLING_FREQUENCY; i++)
data[i] = WAVE_AMPLITUDE * sin((double)i / (SAMPLING_FREQUENCY / WAVE_FREQUENCY + (WAVE_PHASE / 360)) * 2.0 * PI) + WAVE_OFFSET;
// VkDaq Configure Code
VkDaqErrChk(VkDaqCreateTask(taskHandle));
VkDaqErrChk(VkDaqCreateAOVoltageChan(taskHandle, CH_NAME, "", -9, 9, VkDaq_Val_Volts, ""));
VkDaqErrChk(VkDaqCfgSampClkTiming(taskHandle, VkDaq_Val_ClkSrc_OnBoardClk, SAMPLING_FREQUENCY, 0, VkDaq_Val_ContSamps, SAMPLING_FREQUENCY));
// VkDaq Start Code
VkDaqErrChk(VkDaqStartTask(taskHandle));
// VkDaq Write Code
VkDaqErrChk(VkDaqSetTaskData(taskHandle, data, SAMPLING_FREQUENCY, 0, 1, 1));
printf("Generate success\n");
Error:
if (DAQmxFailed(error))
printf("VkDaq Error: %s\n", VkDaqGetLastErrorInfo());
if (taskHandle != 0) {
VkDaqStopTask(taskHandle);
VkDaqClearTask(taskHandle);
}
delete[] data;
printf("End of program, press Enter key to quit\n");
getchar();
return 0;
}
int32_t VkDaqClearTask(const char *task)
清除任务
int32_t VkDaqCreateAOVoltageChan(const char *task, const char *chans, const char *reserved1, double minVal, double maxVal, int32_t units, const char *reserved2)
创建DAC通道
int32_t VkDaqCreateTask(const char *task)
创建任务
int32_t VkDaqStartTask(const char *task)
开始任务
int32_t VkDaqStopTask(const char *task)
停止任务
const char * VkDaqGetLastErrorInfo(void)
获取最后一次执行的错误信息
int32_t VkDaqSetTaskData(const char *task, const double dat[], int32_t sampsPerChan, int32_t fillmode, int32_t autoStart, double timeout)
设置任务数据
int32_t VkDaqCfgSampClkTiming(const char *task, int32_t source, double samplingFrequency, int32_t reserved, int32_t sampleMode, int32_t sampsPerChanToAcquire)
设置采样时钟的来源、采样时钟的速率以及要采集或生成的采样数