dascardlib.h
#ifndef DASCARDLIB_H
#define DASCARDLIB_H
#ifdef __cplusplus
extern "C" {
#endif
int __declspec(dllexport) DasCardOpen(); //打开采集卡
void __declspec(dllexport) DasCardClose(); //关闭采集卡
int __declspec(dllexport) DasCardStart(); //开始采集
int __declspec(dllexport) DasCardStop(); //停止采集
int __declspec(dllexport) DasCardSetPulseNum(int num); //设置一次读取数据的脉冲数目
int __declspec(dllexport) DasCardSetPulseFrq(int frq); //设置脉冲触发频率,内部触发有效
int __declspec(dllexport) DasCardSetSampleNum(int num); //设置每次触发采样长度
int __declspec(dllexport) DasCardSetPulseWidth(int width); //设置脉冲宽度,ns
int __declspec(dllexport) DasCardSetDataSel(int sel); //设置上传数据类型,1:双通道原始数据,2:单通道幅度相位数据,3:双通道幅度相位数据
int __declspec(dllexport) DasCardSetTest(int type); //设置内部测试信号,与ADC信号切换
int __declspec(dllexport) DasCardSetDemodChannelNum(int num); //设置解调通道数
int __declspec(dllexport) DasCardWriteFifo(const char *data, int len); //写缓存数据
int __declspec(dllexport) DasCardReadFifo(char *data, int len); //都缓存数据
int __declspec(dllexport) DasCardQueryFifo(); //查询缓存空间
void __declspec(dllexport) DasCardCacheClear(); //清除缓存
int __declspec(dllexport) DasCardSetUnwrap(int flag); //设置是否解缠绕
int __declspec(dllexport) DasCardSetOffsetVoltage(int offset); //设置偏置电压 ADC值
int __declspec(dllexport) DasCardSetTrigerSoure(int trig); //设置触发源,0:内部触发,1:外部触发
int __declspec(dllexport) DasCardSetDelay(int num); //设置延迟采样点
#ifdef __cplusplus
}
#endif
#endif // DASCARDLIB_H
main.c
#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <dascardlib.h>
int run_flag = 1;
// control+C exit
void sigint_handler(int signum) {
printf("Received SIGINT signal. Exiting...\n");
run_flag = 0;
}
int main()
{
int ret = 0;
int pulseNum = 100;
int pulseWidth = 100;
int pulseFrq = 10000;
int samples = 16384;
int dataSel = 1;
if (signal(SIGINT, sigint_handler) == SIG_ERR) {
perror("signal");
return 1;
}
ret = DasCardOpen();
if(ret){
printf("open device failed!\n");
}
else
{
printf("open device successfull!\n");
}
ret = DasCardSetTest(0);
printf("ret:%d, DasCardSetTest\n",ret);
ret = DasCardSetDataSel(dataSel);
printf("ret:%d, DasCardSetDataSel\n",ret);
ret = DasCardSetPulseWidth(pulseWidth);
printf("ret:%d, DasCardSetPulseWidth\n",ret);
ret = DasCardSetPulseFrq(pulseFrq);
printf("ret:%d, DasCardSetPulseFrq\n",ret);
ret = DasCardSetPulseNum(pulseNum);
printf("ret:%d, DasCardSetPulseNum\n",ret);
ret = DasCardSetSampleNum(samples);
printf("ret:%d, DasCardSetSampleNum\n",ret);
ret = DasCardStart();
if(ret){
printf("start DAQ failed!\n");
}
else
{
printf("start DAQ successfull!\n");
}
int readSize = samples*pulseNum*sizeof (short)*2;
short *buf = (short *)malloc(readSize);
int size;
int timecount = 0;
int lasttime = 0;
while(run_flag){
size = DasCardQueryFifo();
if(size>=readSize){
ret = DasCardReadFifo(buf, readSize);
if(ret){
//process data
//statistics pulse frequency
timecount++;
if(timecount>=400){
int currenttime = GetTickCount();
printf( "pusle frequency read:%f\n" , 400.0*pulseNum/((currenttime -lasttime)/1000.0));
timecount = 0;
lasttime = currenttime;
}
}
}
else{
usleep(10);
}
}
ret = DasCardStop();
if(ret){
printf("stop DAQ failed!");
}
else
{
printf("stop DAQ successfull!");
}
DasCardClose();
free(buf);
printf("exit!\n");
return 0;
}