UNE PETITE PAUSE, EN MICROSECONDE.

cs_nr Messages postés 164 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 11 juillet 2005 - 22 avril 2005 à 08:28
cs_LOFLO Messages postés 1 Date d'inscription vendredi 12 août 2005 Statut Membre Dernière intervention 25 septembre 2006 - 25 sept. 2006 à 16:13
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/30903-une-petite-pause-en-microseconde

cs_LOFLO Messages postés 1 Date d'inscription vendredi 12 août 2005 Statut Membre Dernière intervention 25 septembre 2006
25 sept. 2006 à 16:13
Je ne suis vraiment pas sur qu'en utilisant les QueryPerformanceCounter et QueryPerformanceFrequence on puisse obtenir des tempos à la micro-seconde (voir 1000 µS) .

Je suis en train de développé une application en VB qui doit récupérer des données depuis une carte analogique sur PC , J'ai essayé vos fonctions car j'ai besoin de récuperer des données à 1000 µS (1 mS) , mon problème est que le délais de 1000 µS n'est pas toujours respecté. il arrive qu'il y ai des crêtes de 2000µS ou 3000 µS. Je pense que c'est Windows qui gère cela.

Y a t il un autre moyen pour palier à cela ? (peut être en faisant un morceau d'assembleur)
ou un programme dans une session DOS sous Windows ?

Salutations
Long
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
28 avril 2006 à 18:15
Bonjour Mekid_6,

Tu utilise du C ce n'est pas le bon forum ici c'est du VB...
Regarde dans ce code il y a la même routine:
http://www.cppfrance.com/codes/PORT-PARALLELE-CONTROLEZ-MEDIAPLAYER-AVEC-TELECOMMANDE-TV-VCR_37224.aspx

Voili...
A+
ryl...
mekid_6 Messages postés 1 Date d'inscription vendredi 21 avril 2006 Statut Membre Dernière intervention 28 avril 2006
28 avril 2006 à 16:03
salut je suis nouveau dans le tas. Le probleme est que meme avec for et sleep on arrive pas a avoir une bonne vitesse, précisement avec for(i=0;i<3;i++) j'ai une vitesse visible a la sortie du port. je sais pas si quelqu'un a deja rencontré se probleme et peut m'apportert une solution
d'avance merci!
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
23 avril 2005 à 18:01
Alors Jack que donnent tes tests exactement ?
bon pas bon ?

a+
ryl...
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
23 avril 2005 à 11:41
Bonjour draluorg,
Le fait de faire une boucle "for next" c'est bien zoli mais tu n'auras pas les mêmes temps de "pause" sur des machines différentes (vitesse pross) donc pas utilisable.

ryl...
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
23 avril 2005 à 01:49
Salut
Les microsecondes : faut peut-être pas trop rêver :
Combien de temps le processeur met-il pour interpreter tes instructions ?
Il y a de fortes chances pour que cela dure un peu plus longtemps qu'une microseconde.
En ce qui concerne GetTickCount : Cette horloge est précise à la milliseconde (garanti). Par contre, c'est le programme qui va attendre après une valeur particulière qui pénalisera la précision.
Vaste sujet déjà maintes fois évoqué sur le forum (des posts interminables de centaines de réponses ...)
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
23 avril 2005 à 01:43
salut a tous,

wai mais c'est pas une pause c'est juste occuper le proco en lui faisant faires des boucles inutilement
si tu veux faire des micro pause pour ralentir un peu l'application autant faire des

for i = 1 to 10
doevents
next i
ca reviendra au meme mais en plus simple
jessoulabrute Messages postés 33 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 28 avril 2005
22 avril 2005 à 23:12
C cool
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
22 avril 2005 à 18:42
Bonjour ticomic,

"Sleep" ne gêre que les milliSecondes et d'une façon assez grossiere ainsi que "GetTickCount"...
Le code que je propose est capable de gerer les microSecondes et même au dela mais bon déja les microSecondes c'est pas mal !!!

voili...
a+
ryl...
ticomic Messages postés 57 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 29 avril 2005
22 avril 2005 à 18:02
Et pk pas avec gettickcount?

Private Sub pausep(ByVal tempsenmilisecondes As Long)
Dim ti As Long
ti = GetTickCount

1
If GetTickCount - ti < tempsenmilisecondes Then GoTo 1
End Sub

Je sais que je parle bcp lol, mais c juste pour apprendre
ticomic Messages postés 57 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 29 avril 2005
22 avril 2005 à 17:54
C pas sa que ca fait sleep?

(Private Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long))

Ou c'est autre chose?
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
22 avril 2005 à 12:24
Merci a vous!
Oui c'est un peu gourmand mais pour s'attaquer aux µS !!!
Cependant grâce a Kenavo une petite amélioration est possible la voili...

'//////////////////////////
'// Attendre N microSeconde
Private Sub DelayUS(MicroS)
Dim Frq_Base As Currency, Time_memo As Currency, Time_now As Currency
Dim dif As Long

If QueryPerformanceFrequency(Frq_Base) Then ' Base fréquence systême
QueryPerformanceCounter Time_memo ' Repère temps
dif = Time_memo + Round(MicroS * Frq_Base / 1000000) ' Calcul fait une seule fois
Do
QueryPerformanceCounter Time_now
Loop Until Time_now >= dif ' Si pause pas suffisante recommencer
End If
End Sub

a+
ryl...
cs_Obi Messages postés 1 Date d'inscription jeudi 12 juin 2003 Statut Membre Dernière intervention 22 avril 2005
22 avril 2005 à 09:40
Ca utilise 100% du processeur ta fonction wait, nan ?
Faudrait pouvoir dire à VS que cette fonction n'à pas la priorité...
cs_nr Messages postés 164 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 11 juillet 2005
22 avril 2005 à 08:28
Très interressant, je cherchais ca depuis un bout de temps !

Merci
Rejoignez-nous