PCI9118数据采集问题 点击:740 | 回复:2



gongkongedit

    
  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-04-29 20:04:00
楼主
我用PCI9118DG的卡,采样频率100KHz,doublebuffer设为10000,用DAQbench的chart控件进行实时图形显示,采集卡的控制用了NuDAQ-PCI9118控件,例程套用的9112的程序,光显示没有问题,但在边显示边存储时出现了掉点,图形发生闪烁.减小采样频率调试也无效,请各位老师指教. //开始采样 void CDemo2Dlg::OnStart() { // TODO: Add your control notification handler code here VARIANT Filename; if(m_to_file==0) { VariantClear(&Filename); } else { Filename.vt=VT_BSTR; Filename.bstrVal=m_Filename.AllocSysString(); } m_Chart.ClearPlots(); m_pci9118.StartContAI(Filename); } //buffer半满则显示图象 void CDemo2Dlg::OnAiHalfReadyPci9118ctrl1(VARIANT FAR* ScaledData, VARIANT FAR* BinaryCodes) { // TODO: Add your control notification handler code here m_Chart.PlotCharts(ScaledData, 1, BoolToVar(false)); } 先怀疑是缓冲小了,中断过于频繁,加大缓冲,也没有用.怎么半?



zab76

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 24回
  • 年度积分:0
  • 历史总积分:24
  • 注册:2001年6月11日
发表于:2003-04-29 13:02:00
1楼
这种情况的出现是由于OCX内部每一项操作均有其优先权,其中以数据采集和存盘最为优先,而刷新UI的数据则优先级较低,这样在同一线程中同时操作时UI部分就会比较容易出现类似丢点的现象(你可以看一下保存的文件,肯定没有丢点的情况出现)。 我建议采用多线程的方法来解决,用一个线程来采集并画图(或存盘),另一个线程执行存盘(或画图)操作;再者,因为采集时OCX的效率毕竟还是不如DLL,建议采集部分用PCIS-DASK来实现。 我作过试验,在采样率100K、Buffer Size为1000时,也不会出现画图时丢点的情况。

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-04-29 20:04:00
2楼
谢谢张老师,请帮我看看我这样做对不对.我把他们放到一个线程中好象也行. http://www.gongkong.com/tech/detail.asp?id=94106

热门招聘
相关主题

官方公众号

智造工程师