软件示波器 点击:919 | 回复:0



林海孤叶

    
  • 精华:2帖
  • 求助:0帖
  • 帖子:15帖 | 53回
  • 年度积分:0
  • 历史总积分:108
  • 注册:2004年2月19日
发表于:2004-04-20 11:32:00
楼主
我在VC环境下做了个软件示波器,现在要实现类似动态的显示波形,比如两通道显示,一次从缓冲区中取100点显示,然后将指针加10(称为sroll num),即从缓冲区第10位置开始再取100个数据显示,如此循环直到数据全部取出显示,从视觉角度感觉和真实的示波器差不多。但现在存在一个问题,如两通道采集显示,采集卡将分别采集1和2号通道的数据,将1号通道的数据放在缓冲区0、2、4等偶数位置,2号通道的数据放在缓冲区1、3、5等奇数位置,但如sroll num为奇数,则第二次显示时1号通道和2号通道的数据就交换了,我的想法是如sroll num为奇数,则将指针再加1成为偶数,但不知怎么的就是出问题,数据还是会交替。 下面是关键代码,望高手指教! if ( m_pbufStart!= NULL) { pbufTmp = m_pbufStart; if(bOdd) { if(bSecond) //是第二次显示波形了 pbufTmp++;//如果是奇数,就加1 } pDC->MoveTo(0, (m_origOffset-int(*pbufTmp * m_fGainY))); for (int i=1; i<=m_nFrmSize; i++) { pbufTmp++; pbufTmp++; if (pbufTmp < m_pbufEnd2) { pDC->LineTo(int(i*m_fGainX), (m_origOffset - int(*pbufTmp*m_fGainY))); } else { pDC->LineTo(int(i*m_fGainX), (m_origOffset - int(0*m_fGainY))); } } bSecond=TRUE; }


热门招聘
相关主题

官方公众号

智造工程师