[Qt-interest] real time strip chart

DiogoLR diogolr at gmail.com
Fri May 20 20:17:20 CEST 2011


Did you have already seen the qwt library (qwt.sourceforge.net)?

Regards,

Diogo.


2011/5/20 Atlant Schmidt <aschmidt at dekaresearch.com>

>  Giovanni:
>
>
>
> > I'm developing a QT application which includes a real time chart (with
> several (8 or more)
> > traces), similar to an ECG monitor. Traces should move on the monitor
> with a speed of
> > about 5cm/sec. The active window is, in principle almost the whole
> screen.
>
>
>
>   If you think about it, this is really quite a data-intensive operation.
>
>   If you’re animating sixty frames per second, the window occupies
>   nearly the entire screen, and the animation is moving “side-to-side”
>   (right-to-left or left-to-right), you need to be able to paint almost the
>   entire frame buffer during the vertical refresh interval or your screen
>   will show “tearing”. In this situation, you (or Qt) will almost certainly
>   need to employ “double buffering. And depending upon the order with
>   which you’re accessing the pixels to do the scrolling, you may also
>   find that the CPU caches are working against you.
>
>
>   If the animation is moving upwards, you might be able to avoid
>   double-buffering by burying the frame buffer update time inside
>   the vertical scan interval; keep the update “wavefront” running
>   ahead of the vertical scan line and you win. It’s also easier to
>   effectively use the cache.
>
>   Either way, I can’t remember whether Qt has any mechanism to
>   allow you to run in synchronism with the vertical scanning rate;
>   last I knew, I don’t think it does.
>
>   A GPU can, of course, make all of this much faster if you (or
>   your graphics framework) can make effective use of it.
>
>   It’s not for nothing that Nokia was struggling to even get to 25 FPS
>
>   graphical interfaces while Apple have the entire iPhone interface
>   running at 60 FPS (including scrolling/panning); Apple have invested
>   very heavily from the bottom of their graphical stack to the top to allow
>   this to happen.
>
>
>
>                                            Atlant
>
>
>  ------------------------------
>
> *From:* qt-interest-bounces+aschmidt=dekaresearch.com at qt.nokia.com[mailto:
> qt-interest-bounces+aschmidt=dekaresearch.com at qt.nokia.com] *On Behalf Of
> *giovanni drogo
> *Sent:* Friday, May 20, 2011 12:06
> *To:* qt-interest at qt.nokia.com
> *Subject:* [Qt-interest] real time strip chart
>
>
>
> Hi All,
>
> I'm developing a QT application which includes a real time chart (with
> several (8 or more) traces), similar to an ECG monitor. Traces should move
> on the monitor with a speed of about 5cm/sec. The active window is, in
> principle almost the whole screen. Target operating system is Linux.
>
>
>
>  Do somebody has some suggestion about the best approach?
>
> I try to look in the archive, but all the messages I found are now too old.
>
>
>
>  The approach I'm taking now is the following:
>
> I have a timer, clocking at about 50Hz. When the timer expires I compute
> the scrolling amount using the effective elapsed time, and I scroll the
> widget using the QWidget::scroll() function. Then I paint the traces in the
> empty space.
>
>
>
>  The algorithm is fine, but visual aspect is very bad. Traces run very
> unsmooth, unless the widget is made very small.
>
> After some profiling I found that the QT program run quite fast: it takes
> only few milliseconds to scroll the widget and to paint the traces, however
> the X server is *really* busy. My impression is that, at the end of my
> PaintEvent, Qt simply tell X to repaint the whole widget, and this is
> clearly too much.
>
>
>
>  Before that I tried the classical canvas approach, scrolling and painting
> a QImage or a Qpixmaps, and drawing them to the widget. Results are even
> worst: computer and X server are so busy that timer event are lost!
>
>
>
>  Any suggestion?
>
>
>
>  Thanks in advance,
>
> G. Drogo
>
>
>
> Click here<https://www.mailcontrol.com/sr/k176eUzkbzzTndxI!oX7Ul+sZxelw3DR1nSFzZgD9K95kuR7lTYCSqi1AXQvfVKPiCxqbwqmt0xUlvAsdlYHAg==>to report this email as spam.
>
> ------------------------------
> This e-mail and the information, including any attachments, it contains are
> intended to be a confidential communication only to the person or entity to
> whom it is addressed and may contain information that is privileged. If the
> reader of this message is not the intended recipient, you are hereby
> notified that any dissemination, distribution or copying of this
> communication is strictly prohibited. If you have received this
> communication in error, please immediately notify the sender and destroy the
> original message.
>
> Thank you.
>
> Please consider the environment before printing this email.
>
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at qt.nokia.com
> http://lists.qt.nokia.com/mailman/listinfo/qt-interest
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20110520/678f7d71/attachment.html 


More information about the Qt-interest-old mailing list