研华采集卡问题 点击:730 | 回复:1



ljywz76

    
发表于:2012-03-09 21:30:00
楼主

各位大侠,在下初次使用研华采集卡,碰到一个难题,请各位帮忙。

我的系统使用了一块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;

 

初来乍到,没有分数,请各位指点,谢谢



楼主最近还看过



ljywz76

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 2回
  • 年度积分:0
  • 历史总积分:20
  • 注册:2012年3月09日
发表于:2012-03-09 21:47:13
1楼

在例程中使用的结构为PT_FAIDmaExStart

实际应用中,则要求使用PT_FAIDmaExStart32结构,否则编译通不过,不知这个是否有关

PT_FAIDmaExStart32的结构中多了typeID,不知道是什么用

SSI ļʱ