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

C++Builder Discussion :

equivalent de l'instruction Delay(?).


Sujet :

C++Builder

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    60
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 60
    Points : 53
    Points
    53
    Par défaut equivalent de l'instruction Delay(?).
    bonjour;
    j'ai fait une recherche dans l'aide de c++builder pour une instruction equivalante de delay(50) "de c++" dans builder mais j'arrive pas a la trouvé alors aidez moi svp.
    merci :-).

  2. #2
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Points : 112
    Points
    112
    Par défaut
    essaies Sleep(50);

  3. #3
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Je suis du même avis,
    j'ajoute juste une précision : le paramètre fourni désigne un temps en ms.

  4. #4
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Points : 112
    Points
    112
    Par défaut
    bien vu pour la nature du paramètre.
    reste à savoir si celui de la fonction delay est aussi exprimé en ms.

  5. #5
    Membre actif Avatar de Mattetfamilly
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 182
    Points : 201
    Points
    201
    Par défaut
    oui delay est exprimé en ms.

  6. #6
    Membre du Club
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    60
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 60
    Points : 53
    Points
    53
    Par défaut oui delay est exprimé
    oui delay est exprimé en ms et pour sleep(..) elle bloque l'execution pendon un temps donné mais delay peut difirencier entre deux instruction avec un temps precis...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    Points : 13
    Points
    13
    Par défaut
    pourquoi tu n'utilises pas delay(x) x en ms ?

  8. #8
    Membre actif Avatar de Mattetfamilly
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 182
    Points : 201
    Points
    201
    Par défaut C'est quoi la différence?
    Mais il ne me semble pas que delay soit exportée sous Builder car elle a été supprimée du fichier dos.h (issu de commandes DOS!!!)

    L'instruction la plus approchante est bien Sleep, mais je ne comprends pas la distinction que tu fais entre ces deux instructions...
    Est ce que tu aurais une autre action à effectuer avec un Timer ou une connection de type socket? Et effectivement dans ce cas, cette deuxième action ne peut pas se faire.

    Il faut que je regardes... Si c'est bien là ton problème, je crois que j'ai réussi à le contourner au boulot avec une commande du type "ProcessMessages".

  9. #9
    Membre du Club
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    60
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 60
    Points : 53
    Points
    53
    Par défaut
    alors j'ai pas bien compris ce que tu dit mais je suis entrain de developper une application de simulation avec le port paralléle et j'ai besion de delay entre chaque envoie de donnée pour que le circuit puisse réagisse...
    j'avais utilisé delay dans c++ mais maintenant je trouve pas l'equivalant de cette application .
    alors peut-tu m'aidé SVP.

  10. #10
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Salut,
    Tu peux utiliser des Timers pour gérer ca avec des Flag. A la fin d'un envoie tu lance ton Timer et tu mets un Flag à false.
    Lorsque ton Timer est terminé, tu met ton Flag à true. Ce Flag t'autorisera ou non à lancer ta communication pour une trame.

    Builder fonctionne par thread, et il est vrai que le Sleep(50) bloquera pdt 50 ms la fonction. Ton Timer permettra de gérer ceci, mais attention, il se règle en ms mais il n'est pas très précis pour les petites valeurs (expl: 1ms).

  11. #11
    Membre actif Avatar de Mattetfamilly
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 182
    Points : 201
    Points
    201
    Par défaut
    Perso je fais de la communication sur Port Série et mes Delay sont devenus des Sleep.
    Le fait que ton application ne puisse rien traiter d'autres durant la pause n'étant alors pas bloquant dans ton cas.
    Je ne vois pas pourquoi le Sleep ne te conviendrait pas.

    En revanche avec le Timer c'est beaucoup plus délicat car il faut identifier la communication en court pour que l'évènement Timer sache ce que tu es en train de faire sur la connexion.

    Mattetfamilly

  12. #12
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Son probleme se trouve sur un envoie de 2 trames trop rapprochées, je fais aussi de la COM sur port série et je suis d'accord qu'un Sleep convient, mais tout dépend de la manière dont il a rédigé sa fonction.
    L'utilisation d'un Timer n'est pas plus complexe, juste un peu plus longue à mettre en oeuvre pour ce qui est à faire, mais elle peut marcher.

    Si bonbino pouvait nous donner un peu plus de détail ou du code, on pourrait peut être mieux le conseiller.

  13. #13
    Membre du Club
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    60
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 60
    Points : 53
    Points
    53
    Par défaut
    deja moi j'utilise un temps de 1ms quand j'envoie la donnée et un temps de 2ms quand j'active le STROB.et même il faut que l'application ne fait rien pendant l'envoie des donnée.et voila la fonction en c++:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #define PORTS 0x37A
    #define PORTD 0x378
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    sortie (int ii,int jj)
    {
    	outport(PORTD,ii);//envoi donn‚e
                 //la fct outport je la remplace avec DLPortIO1->Port [0x378]=ii;
                 // j'utilise un composant pour ça
    	delay(0);
    	outport(PORTS,0x1);  //selection latch donn‚e
    	delay(2);
                //mais pour le delay ici je fait un pause d'execution
    	outport(PORTS,0x3)  ; //deselection
    	delay(1);
    	//outport(PORTD,0xff);
    	//delay(0);
    	outport(PORTD,jj);//envoi selection
    	delay(0);
    	outport(PORTS,0x2);  //selection latch selection
    	delay(2);
    	outport(PORTS,0x3)  ; //deselection
    	delay(1);
    }
    je sais pas si ça marche avec un sleep car je doit l'utilisé plusieurs fois
    je vous remercié infiniment...

    Balises de CODE rajoutées par henderson. Il faudra y penser la prochaine fois !

  14. #14
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 390
    Points : 1 777
    Points
    1 777
    Par défaut
    Salut !

    Je ne sais pas si on ne pourrait pas utiliser GetTickCount ici ?

    On commence par se synchroniser sur le début d'un ms
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int start = GetTickCount();
    while((GetTickCount()-start) == 0)
    Transmission d'un octet
    ...
    Donc on est dans le même ms qui doit s'écouler

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    start = GetTickCount();
    while((GetTickCount()-start) == 0)// attendre la fin du ms en cours
    Transmission d'un autre octet
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    start = GetTickCount();
    while((GetTickCount()-start) != 2)// attendre 2 ms
    A plus !

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    Je ne sais pas si le problème a été résolu, car je n'ai pas trop compris la plupart des réponses. Lol. Mais moi aussi j'aimerais avoir une solution pour remplacer la fonction delay.

    En fait, la fonction delay reçoit comme paramètre un entier qui représente des ms. La fonction sleep reçoit comme paramètre un entier qui représente des secondes.

    Si par exemple, je veux faire une pause de 1/10ème de seconde, je fais delay(100). Evidemment, comme la fonction delay n'existe plus dans les version plus récentes de dos.h, ça ne marche plus. J'ai lu au-dessus qu'on proposais d'utiliser sleep. Cependant, si j'écris sleep(100), ça fait une pause de 100 secondes. Comment faire des pauses en millisedondes???

    Une précision quand même, vous parlez de la fonction "sleep" ou bien la fonction "Sleep" ?

  16. #16
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    gwe78 a ecrit:
    Je ne sais pas si le problème a été résolu, car je n'ai pas trop compris la plupart des réponses. Lol. Mais moi aussi j'aimerais avoir une solution pour remplacer la fonction delay.

    En fait, la fonction delay reçoit comme paramètre un entier qui représente des ms. La fonction sleep reçoit comme paramètre un entier qui représente des secondes.

    Si par exemple, je veux faire une pause de 1/10ème de seconde, je fais delay(100). Evidemment, comme la fonction delay n'existe plus dans les version plus récentes de dos.h, ça ne marche plus. J'ai lu au-dessus qu'on proposais d'utiliser sleep. Cependant, si j'écris sleep(100), ça fait une pause de 100 secondes. Comment faire des pauses en millisedondes???

    Une précision quand même, vous parlez de la fonction "sleep" ou bien la fonction "Sleep" ?
    La valeur passee dans la parenthese de la fonction Sleep() est en millisecondes et non pas en seconde, donc
    delay(100); <--> Sleep(100); c'est la meme chose.
    Il suffit de faire un essai pour s'en convaincre.

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    Mais je ne trouve pas la fonction "Sleep". Il existe une fonction "sleep" avec un "s" minuscule. Mais ça fait une pause en secondes, et non en milli-secondes.

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    Ha ben apparemment , la fonction Sleep (avec un "S" majuscule) nécessite un #include <windows.h>. Et, effectivement, ça marche exactement comme la fonction delay.

    Merci beaucoup

Discussions similaires

  1. Equivalent de l'instruction rdtsc
    Par rida_inf dans le forum x86 32-bits / 64-bits
    Réponses: 1
    Dernier message: 17/05/2009, 16h27
  2. Réponses: 1
    Dernier message: 21/05/2008, 20h18
  3. [Language]Equivalent à l'instruction Delphi "with"
    Par FloMo dans le forum Langage
    Réponses: 17
    Dernier message: 22/12/2005, 01h41
  4. Equivalents de keypressed et delay en C++
    Par Guile0 dans le forum C++
    Réponses: 5
    Dernier message: 20/10/2005, 14h58
  5. [TP] Equivalent de l'instruction read en mode graphique
    Par bkadje dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 29/06/2005, 00h04

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