发表于: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;
}