GetDC()、Polyline()、LineTo()有时耗费近50毫秒时间,如何解决?

时间:2021-06-14 07:55:20
    做采样、显示波形的程序中用到GetDC()、Polyline()、LineTo(),但实测发现GetDC()有时候(不可预测的)竟然占用近50毫秒时间,导致波形显示偏差大,Polyline()、LineTo()也同样存在这个问题,如何避免GetDC()、Polyline()、LineTo()占用如此多的时间?请高手指点,万分感激!
     我的具体做法是每次进入定时器响应函数内部都GetDC()、Polyline()一次(进行波形的重绘),绝大多数都只耗费不到2毫秒,但就是偶尔会有20毫秒、50毫秒左右等的消耗,使采样、波形显示时间精度不稳定,大家是否也遇到过,请不吝赐教!

11 个解决方案

#1


没做过精度要求这么高的。。。。。。

#2


引用楼主 huangyinghua 的回复:
做采样、显示波形的程序中用到GetDC()、Polyline()、LineTo(),但实测发现GetDC()有时候(不可预测的)竟然占用近50毫秒时间,导致波形显示偏差大,Polyline()、LineTo()也同样存在这个问题,如何避免GetDC()、Polyline()、LineTo()占用如此多的时间?请高手指点,万分感激!
  我的具体做法是每次进入定时器响应函数内部都GetDC()、P……


你的定时器时间间隔是多少毫秒?

#3


定时器时间间隔为2毫秒。

#4


多媒体定时器timeSetEvent。

#5


GetDC()  这个可不可以不放在定时器里啊?、、、、、

不了解你的采样数据是怎么实现的,是不是你采样时间导致了这个问题的出现啊?而且还是偶尔会出现?不是一直?

#6


GetDC()可以在定时器外面获取保存起来在定时器里面使用

#7


这好像不是GetDC的问题吧,应该是定时器的问题,用SetTimer最小只能精确到55ms,还是用高精度始终吧

#8


定时器的精度达不到2毫秒,大概最小50毫秒

#9


引用 6 楼 stonewater 的回复:
GetDC()可以在定时器外面获取保存起来在定时器里面使用

我试过了,在定时器外面GetDC()获取到的DC,进到定时器里面就无效了,运行时抛出异常。
多媒体定时器timeSetEvent精度可以达到1毫秒的啊,属高精度定时器。

#10


GetDC()获得的指针是临时的,不能被保存以供将来使用。
这种情况有可能是定时器的优先级别不高,系统没及时响应,你最好放到一个独立的线程里去弄

#11


系统不可能达到1毫秒刷新一次波形显示的

#1


没做过精度要求这么高的。。。。。。

#2


引用楼主 huangyinghua 的回复:
做采样、显示波形的程序中用到GetDC()、Polyline()、LineTo(),但实测发现GetDC()有时候(不可预测的)竟然占用近50毫秒时间,导致波形显示偏差大,Polyline()、LineTo()也同样存在这个问题,如何避免GetDC()、Polyline()、LineTo()占用如此多的时间?请高手指点,万分感激!
  我的具体做法是每次进入定时器响应函数内部都GetDC()、P……


你的定时器时间间隔是多少毫秒?

#3


定时器时间间隔为2毫秒。

#4


多媒体定时器timeSetEvent。

#5


GetDC()  这个可不可以不放在定时器里啊?、、、、、

不了解你的采样数据是怎么实现的,是不是你采样时间导致了这个问题的出现啊?而且还是偶尔会出现?不是一直?

#6


GetDC()可以在定时器外面获取保存起来在定时器里面使用

#7


这好像不是GetDC的问题吧,应该是定时器的问题,用SetTimer最小只能精确到55ms,还是用高精度始终吧

#8


定时器的精度达不到2毫秒,大概最小50毫秒

#9


引用 6 楼 stonewater 的回复:
GetDC()可以在定时器外面获取保存起来在定时器里面使用

我试过了,在定时器外面GetDC()获取到的DC,进到定时器里面就无效了,运行时抛出异常。
多媒体定时器timeSetEvent精度可以达到1毫秒的啊,属高精度定时器。

#10


GetDC()获得的指针是临时的,不能被保存以供将来使用。
这种情况有可能是定时器的优先级别不高,系统没及时响应,你最好放到一个独立的线程里去弄

#11


系统不可能达到1毫秒刷新一次波形显示的