各位大侠,在下初次使用研华采集卡,碰到一个难题,请各位帮忙。
我的系统使用了一块PCI1716和一块PCI1716L, 采集模式使用DMA方式,在使用DRV_FAIDmaExStart函数时,总是提示“Illegal input parameters”错误,不知道是哪个参数发生错误,相关代码如下:
if ( !m_hIOCARD【0】 || !m_hIOCARD【1】 ) //检查两块板卡是否正确打开
{
return false;
}
PT_EnableEvent ptEnable;
//使能事件类型
ptEnable.EventType = ADS_EVT_INTERRUPT; //采样计数中断,中断方式采样一次计数加1,DMA方式半满状态计数加1
ptEnable.Count = 1;
ptEnable.Enabled = 1;
DRV_EnableEvent( m_hIOCARD【0】, &ptEnable );
DRV_EnableEvent( m_hIOCARD【1】, &ptEnable );
ptEnable.EventType = ADS_EVT_BUFCHANGE; //缓冲区中断,DMA方式半满状态该事件有效
DRV_EnableEvent( m_hIOCARD【0】, &ptEnable );
DRV_EnableEvent( m_hIOCARD【1】, &ptEnable );
PT_FAIDmaExStart32 pCfg;
memset( &pCfg, 0, sizeof(pCfg) );
pCfg.TrigSrc = 0; //内部触发
pCfg.TrigMode = 0; //立即触发模式
pCfg.TrigEdge = 0;
pCfg.ClockSrc = 0;
pCfg.StartChan = 0; //起始通道为0
pCfg.CyclicMode = 1; //循环采集模式
pCfg.NumChans = 16; //采样通道数量
pCfg.count = 16000; //采样个数
pCfg.SampleRate = 250000; //采样速率
pCfg.buffer0 = gnADBUF1; //缓冲区,定义为static USHORT gnADBUF1【16000】;
pCfg.SRCType = 0;
pCfg.TrigVol = 0;
//增益,定义为ReorderGainCode0【MAX_CHANNELS1】 ={ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4};
pCfg.GainList = ReorderGainCode0;
LRESULT hr = DRV_FAIDmaExStart( m_hIOCARD【0】, &pCfg );
char ErrMsg【80】;
if ( SUCCESS != hr )
{
DRV_GetErrorMessage(hr,ErrMsg );
// return false;
}
pCfg.buffer0 = gnADBUF2; //缓冲区,定义为static USHORT gnADBUF2【16000】;
//定义为ReorderGainCode1【MAX_CHANNELS1】 ={ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4};
pCfg.GainList = ReorderGainCode1;
hr = DRV_FAIDmaExStart( m_hIOCARD【1】, &pCfg );
if ( SUCCESS != hr )
{
DRV_GetErrorMessage(hr,ErrMsg );
return false;
}
return true;
初来乍到,没有分数,请各位指点,谢谢
楼主最近还看过