Comment créer un timer de moins d'une milliseconde?
matthias66
Messages postés2Date d'inscriptionmercredi 13 octobre 2010StatutMembreDernière intervention18 octobre 2010
-
13 oct. 2010 à 11:09
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024
-
18 oct. 2010 à 19:30
Bonjours à tous,
Voici mon problème : je dois créer un programme en VB.net qui implique l'acquisition de positions, Sachant que le mouvement dure environ 1 ms et qu'il faut que je mesure des positions intermédiaires. Comment puis-je faire pour régler un timer dont l'intervalle entre 2 boucle sera plus court qu'une ms ?
J'ai lu qu'il était possible d'utiliser des API Windows pour améliorer la précision du timer, peut-on les utiliser pour diminuer l'intervalle entre 2 boucles ? Comment peut-on utiliser ces fonctions?
Je sais qu'il m'est possible de le faire, car j'utilise une carte d'acquisition et j'ai réussi à obtenir des positions intermédiaires grâce à LabView Express. Serait-il possible de lancer l'acquisition de données par Labview en utilisant VB.Net ?
Merci beaucoup de votre aide, je suis prenneur de toute les pistes!
A voir également:
Comment créer un timer de moins d'une milliseconde?
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 13 oct. 2010 à 12:40
Bonjour,
Avec .NET, tu n'ira pas très vite, si tu veux vraiment de la précision, je te conseil plutôt d'aller plus près de la machine, C/C++.
Car un fait simple, le temps de changement entre 2 passage sur le même programme (ben oui, multitâche), est d'environ 15 à 31ms.
Je ne sais pas comment LabViewExpress, mais je ne pense pas que ça tourne sous .NET.
Peut être que d'autres répondront, mais d'après ce que je connais, VB.NET n'est pas le plus conseillé pour cela.
cs_Baboon2000
Messages postés4Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention14 octobre 2010 14 oct. 2010 à 22:28
Pour faire simple et court, il est possible d'utiliser la fonction de l'API GetTickCount qui, si je me souviens bien car je l'ai utilisé il y a bien longtemps, peut te donner des intervalles de qques microsecondes. Par contre cette fonction monopolise ta tâche, donc il reste toujours cette possibilité que je ne maitrise pas et que l'ont appelle le multi-thread je crois.
matthias66
Messages postés2Date d'inscriptionmercredi 13 octobre 2010StatutMembreDernière intervention18 octobre 2010 18 oct. 2010 à 17:50
Bonjour
Merci beaucoup pour vos réponses NHenry et Baboon 2000! Mais en fait j'ai pas le choix je ne sais pas codé en C++... Mais en fait je crois avoir trouvé une solution, je vais passé directement par la carte d'acquisition qui as une fréquence d'échantillonnage max de 625 kéch./s (donc qui peut faire une mesure toute les 16 micro-sec...),j'ai les dll de la carte qui permettent de l'utiliser. Mais après ça ne sera pas du temps réel...
Par contre je n'ai pas très bien compris les inconvénients de GetTickCount?
Merci encore,
Matthias
Vous n’avez pas trouvé la réponse que vous recherchez ?
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 18 oct. 2010 à 19:30
Bonjour,
GetTickCount est en Millisecondes, pas en Microsecondes.
Pour ça, je crois que c'est les API QueryPerformanceCounter et QueryPerformanceFrequency, à vérifier.