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

Langage Delphi Discussion :

Précision temporelle d'une éxécution


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut Précision temporelle d'une éxécution
    Bonjour à tous
    Dans une application Delphi, je cherche à exécuter une action répétitive sur un port série avec une précision de l'ordre de la milliseconde.
    Je pensais pouvoir cadencer cette action avec un timer très précis (ZylTimer).
    Malheureusement, la précision est complètement perturbée par la prise en compte par Windows des taches qui tournent en parallèle de mon application.
    Je ne sais pas comment Windows répartit l'exécution de toutes ses tâches, mais je vois sur un oscilloscope que mon action est retardée régulièrement de 50 à 100 millisecondes. Celà est manifestement dû au fait que mon application reçoit l'évènement Timer en retard car cet évènement est arrivé pendant qu'une autre tâche se déroulait dans la CPU.
    J'ai essayé d'affecter une priorité TIMECRITICAL sur mon application avec la fonction SETPRIORITYCLASS. Celà améliore un tout petit peu le cadencement mais ne résoud pas le problème car, de toutes façons, il faut bien que Windows passe la main à ses tâches annexes à un moment donné ou à un autre.
    Créer un thread pour exécuter mon action répétitive ne change rien puisque le thread s'exécute comme une nouvelle application.
    Bref, je ne vois pas du tout comment je peux faire pour éxécuter cette action répétitive avec la précision voulue.
    J'imagine qu'il faudrait que l'action s'éxécute à un niveau système très très bas, ou que, lorsque l'évènement Timer arrive, le système repasse immédiatement la main à l'application qui l'attend. Celà est-il possible ?
    Si vous avez une idée, je suis preneur.
    A vous lire
    Gabriel
    78 - Noisy le Roi

  2. #2
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut!



    http://haypo.developpez.com/article/...u/#chronometre
    http://www.developpez.net/forums/vie...004505#2004505
    http://www.developpez.net/forums/vie...310464#2310464
    http://delphi.developpez.com/faq/?page=portseriepc
    http://delphipage.free.fr/portserie.html

    Sinon, une autre solution pour l'échantillonnage précis et à haute fréquence est d'utiliser le port // en mode ECP.
    Fais donc une petite recherche, tu trouveras forcément ton bonheur, à+


    Lien tout en bas à gauche de cette fenêtre
    De retour parmis vous après 10 ans!!

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 84
    Points : 42
    Points
    42
    Par défaut
    Bonjour et merci pour la réponse.
    J'ai trouvé sur le net un composant MMTimer, timer très précis, qui, après essais, résoud mon problème de façon satisfaisante.
    A+
    Gabriel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Problème avec Find lors d'une éxécution automatique
    Par gentyjp dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/10/2010, 10h05
  2. Abscisse temporelle sur une image 3D
    Par SyphaxIlies dans le forum MATLAB
    Réponses: 0
    Dernier message: 09/08/2010, 17h50
  3. modification de précision numérique pour une matrice
    Par oliv27400 dans le forum MATLAB
    Réponses: 5
    Dernier message: 03/06/2010, 18h09
  4. Réponses: 3
    Dernier message: 25/11/2008, 15h52
  5. [MCT] Condition de sortie temporelle d'une opération
    Par touronster dans le forum Merise
    Réponses: 2
    Dernier message: 07/02/2008, 20h35

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