deusyss
Messages postés11Date d'inscriptionvendredi 9 février 2007StatutMembreDernière intervention 5 mars 2007
-
4 mars 2007 à 18:36
deusyss
Messages postés11Date d'inscriptionvendredi 9 février 2007StatutMembreDernière intervention 5 mars 2007
-
5 mars 2007 à 19:45
Bonjour, à tous (et à toutes...).
Voilà, je suis à la recherche d'une <layer id="google-toolbar-hilite-1" style="background-color: Fuchsia; color: black;">DLL</layer> possédant un <layer id="google-toolbar-hilite-0" style="background-color: Yellow; color: black;">timer</layer> ultra précis (d'environ 1µs). Je dois en effet gérer des signaux à des fréquences élevés, et j'aurais besoin de précision. Quelqu'un (ou quelqu'une) aurait-il une idée à ce sujet?
deusyss
Messages postés11Date d'inscriptionvendredi 9 février 2007StatutMembreDernière intervention 5 mars 2007 4 mars 2007 à 18:51
Bonjour,
Merci d'avoir repondu si vite. Cette solution me semble parfaite à un détail près: Voilà, il faut que le signal soit identique d'une machine à une autre, autrement dit, que ce soit independant de la machine. De plus, il me faut pouvoir gérer ce timer à la µs près
Bien entendu, on sous entend, que le logiciel ne tournera pas sous des machines agées. Donc, environ 1,1.5GHZ minimum
Cela étant, cette solution conviendrait-il ou non?
deusyss
Messages postés11Date d'inscriptionvendredi 9 février 2007StatutMembreDernière intervention 5 mars 2007 4 mars 2007 à 19:00
En fait il s'agit de générer des trames numérique via la carte son. J'utilise port.dll pour envoyer des données sur la carte son. Le problème c'est le cadencement du signal, plus que l'affichage, car ce dernier ne sera mis à jour que toutes les seconde dans le mode automatique (il y a un mode pas à pas). Donc, pas de problème d'affichage, mais plutot de cadencement du signal.
Je sais que ça peut paraitre exigeant comme système, mais je n'ai pas trop le choix. Au départ, je suis parti sur les oscilloscope par carte son, qui doivent relevé la tension sur la carte son à interval régulier, mais de mon côté, je n'ai pas trouvé d'info.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 4 mars 2007 à 19:11
salut,
QueryPerformanceFrequency renvoie une valeur, on ne peut QUE l'utiliser pour mesurer un temps entre chacun appel, en aucun cas tu ne pourras retourner d'évènement.
pour un timer "ultraprécis" (millième de seconde), il faut utiliser les api midi de WinMM, voir 6e commentaire de cette source
++
PCPT [AFCK]
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 4 mars 2007 à 19:15
Je crains fort que le "motif et la punition" ne soient là les mêmes ...
Le temps de la seule exécution de la commande de cadencement sera très probablement supérieur à la µs...
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 4 mars 2007 à 20:14
lis le commentaire indiqué, regarde dans les sources de l'auteur du commentaire, et après on chipotera sur micro nano
(çà me semblait plus judicieux de te montrer où sont les limites du millième plutôt que d'épiloguer sur des puissances trop lointaines.....)
bonne lecture
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 4 mars 2007 à 23:25
A la limite en augmentant la priorité du processus... Après il faut bien gérer son application, pour pas qu'elle se gèle et gèle avec elle tout Windows, mais si tu compte dédier ton pc à cette tache le fait d'augmenter la priorité PEUT aider.
C'est sur qu'en VB tu n'auras pas la plus grande rapidité possible
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 5 mars 2007 à 12:10
Normalement tu ne peux pas esperer une grande precision avec Windows. Déjà pour plus de precision laisse tomber VB et passe en C.
Ensuite, généralement les temps utiliser avec Windows sont de l'ordre de la ms. Certaines api descende bien entendu en dessous, mais les temps ne sont pas garantis, de part le fonctionnement même de Windows.
S'il te faut absolument des temps garantis tant sur la précision que sur le déclenchement precis, il va te falloir te tourner vers des solutions "Noyau Temps réel". La seule que je connaisse (et utliser pendant plusieurs années) sous Windows est la solution proposée pas Ardence (ex VenturCom).
Sinon faut oublier windows et se tourner vers des os temps réels tel que Pharlaps et autres UNIX RTX, .....
---- Sevyc64 (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 5 mars 2007 à 15:24
Salut,
VB est effectivement pas idéal pour ça.
C ou ASM (Ou Delphi )
En ASM, y a l'instruction RDTSC qui renvoie la valeur d'un compteur
64bits qui s'incrémente à chaque front d'horloge du processeur. Sur un
1GHz, il s'incrémente donc toutes les nano secondes... encore que le
lire coûte des fronts. (La plupart des compilos C permette de faire de
l'ASM au milieux du C, et Delphi aussi). Ca permet d'executer du code à
une fréquence très élevée... tant que c'est notre thread qui est dans
le proce ! (cf le multi plus haut).
Mais pour ce qui est de la micro secondes, y a éventuellement ma dll.
Les fonctions qui t'intéresserait dedans sont en
QueryPerformanceFrequency, donc pas aussi précise que le registre
TSC... Mais toutes les convertions sont gérés par la dll : donc ça ne
te prendrait pas trop de temps pour la tester je pense.