PORT PARALLÈLE : PILOTEZ JUSQU'A 8 SERVOMOTEURS.

Signaler
Messages postés
2
Date d'inscription
mardi 2 août 2005
Statut
Membre
Dernière intervention
3 août 2005
-
Messages postés
2
Date d'inscription
samedi 7 avril 2007
Statut
Membre
Dernière intervention
9 juin 2013
-
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/32274-port-parallele-pilotez-jusqu-a-8-servomoteurs

Messages postés
2
Date d'inscription
samedi 7 avril 2007
Statut
Membre
Dernière intervention
9 juin 2013

Merci pour cette réponse rapide!
J'ai effectivement compris maintenant, les fonctions QueryPerformanceFrequency et QueryPerformanceCounter inscrivent en fait une valeur dans la variable entre parenthèses.
Messages postés
3818
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
18 septembre 2020
34
Salut,

regarde cette reprise de la fonction de rylryl par Bactérius
il y a ajouté quelques commentaires qui devront t'aider à comprendre.

// Je vais modifier cette fonction pour la rendre plus lisible à moi
// Je cite donc son auteur : Rylryl !!

procedure Wait(MS: int64); // On fait une pause en microsecondes !!
var
Frq_Base, T_Mem,
T_Now, Dif: Int64;
begin
// On récupère l'indice fréquence du système
if QueryPerformanceFrequency(Frq_Base) then
begin
// On récupère le repère temps origine
QueryPerformanceCounter(T_Mem);
repeat
// On récupère le temps actuel
QueryPerformanceCounter(T_Now);
// On compare le temps actuel au temps d'origine
Dif := (T_Now - T_Mem) * 1000000 div Frq_Base;
until Dif > MS; // Jusqu'à ce qu'on ai atteint notre délai voulu
end;
end;
Messages postés
2
Date d'inscription
samedi 7 avril 2007
Statut
Membre
Dernière intervention
9 juin 2013

Bonjour,

Je vois que le sujet n'a pas été traité depuis 2006 mais qui sait, peut être quelqu'un passera par ici pour répondre à ma question.

Je suis en fait intéressé par ce programme et plus particulièrement par la fonction d'attente, mais malheureusement je ne comprends pas tout.

Je n'ai retrouvé nulle part dans le programme d'initialisation ou de "remplissage" des variables Frq_Base, Time_memo et Time_Now. Du coup, je ne comprends pas bien à quoi servent la condition "if QueryPerformanceFrequency(Frq_Base) then" et les requêtes "QueryPerformanceCounter(Time_memo);" et "QueryPerformanceCounter(Time_Now);"

Quelqu'un, Ryl peut être, saurait-il donc m'expliquer un peu plus en détail cette partie du code?

Merci d'avance!
Messages postés
311
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
15 décembre 2006
1
Bonjour SMDWD,

Cette simplification ne donnera rien de bon...
Cherche plutôt pouquoi "EAbstractError" mais n'ayant pas ce pb je ne peux pas t'aider (peut être un problème de "thread")...

A+
ryl...
Afficher les 14 commentaires