我编一个波形显示,现在每一秒钟我接受到1000个数据,这1000个数据和下一个1000个数据在时间上是连续的,我如何把波形动态的显示出来。我的采集频率是1000赫兹。

解决方案 »

  1.   

    1000各通道采集的数据,不太可能统统都实时地显示在界面上。
    你可以只显示一个通道,并且用户可以切换通道。============================================================================
    提问题时标题要简明扼要地说明问题内容                给我发信息请附带原帖地址
    http://www.betajin.com/alphasun/index.htm          
    http://alphasun.18en.com/                    http://shakingtoolkit.9126.com/
    DocWizard C++程序文档自动生成工具 | Wave OpenGL | HttpProxy | AjaxParser词法分析
      

  2.   

    采集频率是1000赫兹,意思是说每一秒钟采集到1000个数据,不是1000个通道吧。
    绘制波形数据跟你的显示的时间精度和坐标轴映射有关,比如一个点表示1毫秒,那就是1秒钟的数据需要1000个点表示;1个点表示10毫秒,1秒钟的数据需要100个点显示。关键在于处理数据的显示精度需要,绘制么很简单,波形数据一般不需要拟合,直接把各个点连成线段就可以了:LineTo(hdc, x, y);要对第一个点用MoveTo(hdc, x, y);新来的数据肯定要把旧的数据移除掉或者加到后面,以使波形连续显示,根据你的需要和显示空间的大小来决定了。也许还要考虑历史数据的显示,那关键就在数据的保存和查询方法上了。
      

  3.   

    数据太多了,每一秒钟就差不多一屏幕了,所以你可能需要考虑缩放,为了能在屏幕上显示更多的数据。另外CDC太慢了,你可以考虑使用OpenGL。
      

  4.   

    好像没有必要用openGL,用了它速度会更慢的,在内存中绘图,在copy到屏幕就行了
    最好专门开辟一个线程来对付采集数据!
      

  5.   

    不太会呀,CDC还凑伙,OpenGL重来没接触过,大家能不能讲详细点
      

  6.   

    能说详细点吗?Directdraw我不知怎么用?还有其他方法吗?