IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Datation précise en Delphi


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    senior scientist
    Inscrit en
    Mai 2003
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : senior scientist

    Informations forums :
    Inscription : Mai 2003
    Messages : 82
    Billets dans le blog
    1
    Par défaut Datation précise en Delphi
    Bonsoir,
    Existe-t-il un moyen, avec un PC sous Windows et par logiciel avec Delphi, de dater précisément (à la milliseconde ou mieux) l'affichage d'un motif à l'écran (le texte d'un label ou un graphique dans un canevas), c'est-à-dire de déterminer le moment exact où il devient visible après l'envoi des instructions d'écriture (VCL ou FMX) ? Je suppose un écran LED avec un temps de rafraichissement négligeable.
    Merci d'avance à qui aura une idée.
    Alx.

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 090
    Par défaut
    Pense que le dessin sous Windows, cela passe par WM_PAINT
    Modifier le texte ne provoque pas le dessin, cela provoque un Invalidate qui amènera à un Paint ultérieur via la file d'attente.

    QueryPerformanceCounter ou TStopwatch, une précision autour de la µs (voir 100 ns) mais l'affichage c'est complexe, fragmenté (seule une zone est dessiné, cela peut être juste le label comme tout un écran)
    la VCL gère le DoubleBuffered, donc cela dessine dans un tampon et c'est lui qui est dessiné à l'écran ensuite

    FMX, encore plus complexe, cela passe par DirectX, donc accélération graphique, double ou triple buffered.

    Si l'on active, la synchronisation verticale, Directx ou OpenGl vont se cadencer à la fréquence de l'écran
    Désactivé, on peut avoir plusieurs images qui se dessinent, la première n'est pas terminée que cela commence la seconde, cela peut faire quelques artefacts à la rupture (encore plus complexe avec les cartes graphiques qui divisent l'écran en plusieurs parties pour paralléliser des calculs, héritage de technologie de Naomi de SEGA)


    Quel est l'objectif réel ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre confirmé

    Profil pro
    senior scientist
    Inscrit en
    Mai 2003
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : senior scientist

    Informations forums :
    Inscription : Mai 2003
    Messages : 82
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message

    Quel est l'objectif réel ?
    Je suis en train de tester le logiciel d'acquisition d'une caméra CMOS qui est capable d'horodater les images successives d'une vidéo.
    Faute de matériel (ou d'astuce !), j'imaginais pouvoir avoir une idée des temps de latence en filmant l'écran du PC d'acquisition sur lequel j'écris l'heure qu'il est, en discontinu, avec un timer.
    Ca marche, mais j'obtiens des délais qui ne sont pas en accord avec la liaison rapide en USB3 et qui doivent en effet venir plutôt du logiciel de dessin.
    D'après vos remarques, cela n'a pas l'air facile d'en avoir une estimation.

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 090
    Par défaut
    Filmer un écran, généralement le résultat est pas terrible
    Avec un LED, je crois que maintenant, ça se film sans soucis
    Avec un LCD de 2010, tu verrais une taillade dans l'image
    Avec un Cathodique, tu verrais une zébrure
    Avec des LED de bricolage type Ardunio, tu le verrais clignoter.

    La caméra filme en 25 images / seconde ?


    Mais le décalage, tu l'observes à combien, pas plus de 1 / 25eme de seconde ?
    Et c'est peut-être le logiciel d'acquisition qui prend un peu de temps aussi

    Perso, je n'ai travaillé qu'avec des caméras en Coaxial sur des DVR Dahua ou des Caméras IP Axis.
    L'horodatage était intégré (c'est conçu pour la vidéo surveillance, fonctionnalité de base)
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre confirmé

    Profil pro
    senior scientist
    Inscrit en
    Mai 2003
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : senior scientist

    Informations forums :
    Inscription : Mai 2003
    Messages : 82
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Filmer un écran, généralement le résultat est pas terrible.
    C'est un écran moderne (portable DELL), de bonne qualité: il n'y a pas de souci de lisibilité.

    Citation Envoyé par ShaiLeTroll Voir le message
    La caméra filme en 25 images / seconde ?
    c'est une caméra de course (pour l'astro) qui tourne, dans ce test, à 200 Hz avec des poses de 1 milliseconde.

    Citation Envoyé par ShaiLeTroll Voir le message
    Mais le décalage, tu l'observes à combien, pas plus de 1 / 25eme de seconde ?
    c'est le problème: il est de 63 +/- 5 millisecondes, ce que je ne comprends pas.

    Citation Envoyé par ShaiLeTroll Voir le message
    Et c'est peut-être le logiciel d'acquisition qui prend un peu de temps aussi
    C'est un logiciel réputé (dans le milieu astro) et j'ai vérifié, par exemple, que son horodatage, après l'USB3, a la régularité qu'on attend du hardware de la caméra. Il y a juste ce décalage.

    Je me demande si le problème ne vient pas plutôt d'un délai dans l'affichage (Windows + Delphi): ce que je peux dater facilement (QueryPerformanceCounter, etc...) c'est l'instruction qui lance l'affichage graphique. Ce que je ne vois pas, et c'était ma question, c'est comment dater le moment où quelque chose va être visible à l'écran !
    Ou, du moins, comment l'estimer.

  6. #6
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    alors, déjà Windows n'est pas un OS temps réel...et il est dépendant du hardware...sur x86 tu ne descends pas sous 15ms.

    ensuite, je ne suis pas spécialiste, mais qu'appelles-tu visible à l'écran ?

    1) le soft envoie des ordres graphiques
    2) le hard alimente la mémoire vidéo avec les données calculées
    3) le moniteur récupère l'info pour actualiser l'écran
    4) les led réagissent électroniquement à la fréquence de rafraichissement de l'écran

    si tu as un écran à 60Hz, ça veux dire si je ne m'abuse 60 images seconde, soit 16.6ms/image...et tu arrives aux limites du timer

    donc je ne sais pas bien ce que tu veux horodaté (et où ?)
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. Delphi XE (2011) ça se précise
    Par ouiouioui dans le forum EDI
    Réponses: 12
    Dernier message: 19/08/2010, 13h14
  2. [C#] Acceder à une case précise d'un DataTable
    Par Johann7751 dans le forum C#
    Réponses: 2
    Dernier message: 15/06/2009, 18h28
  3. Différences entre Delphi et Visual Basic ?
    Par Anonymous dans le forum Débats sur le développement - Le Best Of
    Réponses: 75
    Dernier message: 30/03/2009, 20h09
  4. Réponses: 4
    Dernier message: 27/03/2002, 11h03
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo