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 :-).
Version imprimable
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 :-).
essaies Sleep(50);
Je suis du m�me avis,
j'ajoute juste une pr�cision : le param�tre fourni d�signe un temps en ms.
bien vu pour la nature du param�tre.
reste � savoir si celui de la fonction delay est aussi exprim� en ms.
oui delay est exprim� en ms.
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...
pourquoi tu n'utilises pas delay(x) x en ms ?
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".
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.
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).
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
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.
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:
1
2 #define PORTS 0x37A #define PORTD 0x378
je sais pas si �a marche avec un sleep car je doit l'utilis� plusieurs foisCode:
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 vous remerci� infiniment...
Balises de CODE rajout�es par henderson. Il faudra y penser la prochaine fois !
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
Transmission d'un octetCode:
1
2 int start = GetTickCount(); while((GetTickCount()-start) == 0)
...
Donc on est dans le m�me ms qui doit s'�couler
Transmission d'un autre octetCode:
1
2 start = GetTickCount(); while((GetTickCount()-start) == 0)// attendre la fin du ms en cours
...
A plus !Code:
1
2 start = GetTickCount(); while((GetTickCount()-start) != 2)// attendre 2 ms
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" ?
gwe78 a ecrit:
La valeur passee dans la parenthese de la fonction Sleep() est en millisecondes et non pas en seconde, doncCitation:
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" ?
delay(100); <--> Sleep(100); c'est la meme chose.
Il suffit de faire un essai pour s'en convaincre.
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.
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 :)