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

MFC Discussion :

impossible boucle acquisition à 10ms


Sujet :

MFC

  1. #1
    Membre confirmé

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2002
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 216
    Par défaut impossible boucle acquisition à 10ms
    Bonjour,

    Mon problème : j'ai crée un thread (avec priorité haute) pour faire des acquisitions sur une carte analogique.
    Dans ce thread j'ai une boucle d'acquisition (while) avec mes instructions d'acquisition ainsi que l'acquisition du temps (par clock()) pour récupérer mes infos concernant la fréquence d'acquisition.

    2 cas pour mes résultats :
    du style concernant le temps :
    0.001s
    0.001s
    0.001s
    0.001s
    0.001s
    0.001s
    0.001s
    0.001s
    0.001s
    0.017s
    0.017s
    0.017s
    0.017s
    0.017s
    0.017s
    0.017s
    etc...
    si j'introduit dans ma boucle d'acquisition un Sleep(2) ou sleep(3) j'obtiens:
    0.001s
    0.016s
    0.032s
    0.045s
    etc...
    Est il donc possible de diminuer cette limite de 15, 16ms d'écart de tps dans chaque boucle de façon à tomber à 10ms?

    Je n'ai peut être pas été très clair, mais j'espère avoir été compris.
    Merci

  2. #2
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Citation Envoyé par lucky Voir le message
    Je n'ai peut être pas été très clair, mais j'espère avoir été compris
    ...

    La fonction Sleep() n'est pas réellement précise. La preuve, tes différents appels ne provoquent pas 2 ou 3 ms d'attente, mais au moins 15!
    Il faut que tu te bases sur autre chose pour compter ton temps.
    Peut être les time_t?

  3. #3
    Membre confirmé

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2002
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 216
    Par défaut
    OK, mais pensez vous que j'arriverai à descendre à 10ms, ce minimum n'est il pas imputable à Windows qui reprend la main de temps en temps.
    Merci pour le "time_t".

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    de toute façon 10 ms ce n'est pas possible pour windows , il existe des solutions pour travailler en temps-réel sur windows: Rtx

  5. #5
    Membre confirmé

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2002
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 216
    Par défaut
    Ouaih !
    j'ai vu qu'il existait un systeme dans ce genre mais je ne sais pas ce que cela vaut (Hadcon's real time module (RTM)):
    http://www.codeproject.com/KB/system...imeModule.aspx
    http://www.hadcon.ru/
    qui est apriori libre...
    est ce que quelqu'un a testé... ?

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    libre mais sans les sources apparemment ...

  7. #7
    Membre confirmé

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2002
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 216
    Par défaut
    Cela peut être le sujet d'un nouveau post : qui a testé cette lib

  8. #8
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 21
    Par défaut
    Pour obtenir des informations temporel plus précises, tu peux tenter d'utiliser les fonctions gettickcount ou QueryPerformanceCounter.

    Par contre, il est certain que tu ne pourra pas obtenir de précision inférieurs à une dizaine de ms avec un Sleep.

    Bizarement, tu peux faire des attentes plus précises avec la fonction winsock 'select' ! En effet, cette fonction peux recevoir un paramètre d'attente très précis (paramètrage jusqu'a la ns), et Windows le traite au moins à la ms il me semble (à vérifier tout de même).
    A voir si le traitement de ce type d'attente 'courte' n'est pas très consomatrice de CPU...

Discussions similaires

  1. Activation XP impossible, en boucle
    Par fabrice91 dans le forum Windows XP
    Réponses: 3
    Dernier message: 04/11/2009, 14h58
  2. impossible d'incrémenter dans une boucle for
    Par slayer21 dans le forum MATLAB
    Réponses: 13
    Dernier message: 29/07/2009, 14h09
  3. [FPDF] boucle impossible
    Par schwarzy2 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 09/06/2008, 21h11
  4. Probleme Vista : CHKDSK en boucle + Impossible charger profil
    Par Bateau_Ivre dans le forum Windows Vista
    Réponses: 0
    Dernier message: 14/01/2008, 14h25
  5. [Smarty] boucles imbriquées avec requêtes SQL, impossible à comprendre
    Par dexxter dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 18/05/2007, 23h52

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