Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1073 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  comment lancer une procédure quand 30 s d'inactivité sont écoulées?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

comment lancer une procédure quand 30 s d'inactivité sont écoulées?

n°948926
fullnight
Posté le 08-01-2005 à 07:18:16  profilanswer
 

comment gérer une réaction au clavier par rapport a un timer de 30s ??
 
salut à tous !
 
J'aimerais en fait trouver un moyen de jouer avec le temps en c++  
je n'ai jamais su comment je pouvais faire .
 
pourriez vous m'aider??
 
en gros j'ai     besoin de faire un encodage au clavier  
mais ......si je touche a rien pendant un certain temps ( 30 secondes )
 
faudrait qu'il passe a autre chose !!
que l'encodage ne soit plus faisable ! qu'un autre bout de code soit effectué.
 
 
merci d'avance pour vos idées


Message édité par fullnight le 10-01-2005 à 20:18:58
mood
Publicité
Posté le 08-01-2005 à 07:18:16  profilanswer
 

n°949032
bonyama
Posté le 08-01-2005 à 12:20:58  profilanswer
 

tas cherché du coté de timeout ?

n°949284
fullnight
Posté le 08-01-2005 à 18:24:45  profilanswer
 

non ca marche comment?

n°949291
HelloWorld
Salut tout le monde!
Posté le 08-01-2005 à 18:57:47  profilanswer
 

Voir les signaux sous UNIX (SIGALRM) et les timers sous Windows (SetTimer).


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°949297
fullnight
Posté le 08-01-2005 à 19:12:13  profilanswer
 

houlala du calme !
pas de unix !moi je suis sous windows avec VC++ 6.0 ..
 
j'ai juste un cin a faire.... pour une variable codeSecret
mais je veux qu'après 30 sec  y'ai plus possibilité de faire le cin.
 
en fait je dois entrer un "code secret" et si je ne rentre rien avant 30 secondes le prog me fait un autre bout de code.
 
 
ou est ce que je peux obtenir des infos claires et détaillées avec exemple en french la dessus ?
 
pis ce serait cool un cout << "il vous reste "<< i << "secondes " << endl;
 
30 fois.


Message édité par fullnight le 09-01-2005 à 21:35:14
n°949349
HelloWorld
Salut tout le monde!
Posté le 08-01-2005 à 22:12:57  profilanswer
 

Tu peux faire des _getch toutes les 100 ms pour détecter l'appui d'une touche. Au bout de 30 secondes tu arrêtes de tester. En + ça t'affichera pas le caractère tapé et c'est généralement ce qu'on souhaite pour saisir un mot de passe (faire un cout de '*' à la palce). Utilise Sleep(100) pour faire une tempo de 100ms.
http://msdn.microsoft.com/library/ [...] getche.asp
http://msdn.microsoft.com/library/ [...] /sleep.asp


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°949401
fullnight
Posté le 09-01-2005 à 00:36:56  profilanswer
 

heu c'est 1000 ms pour une seconde et pas 100 comme tu l'as mis.
 
et je ne vois pas ...ce que donnerait le code car sleep endort tout le programme....
je fais n'importe quoi je ne sais pas du tout comment faire cette tempo dont tu me parles?
 
'au bout de 30 secondes'     ca veut dire quoi en algorithmique?  
 
 
int code ;
 
do
{  
   
   
 
   if ( code  =  _getch() )  
   {
    cout <<"*";
   }
 
}while  ( sleep == 30000 )  ;
 
 
 
je crois a fond que c mauvais


Message édité par fullnight le 09-01-2005 à 00:39:08
n°949572
mocosraito
dur dur l'informatique ...
Posté le 09-01-2005 à 20:58:50  profilanswer
 

Je sais pas si ça va t'aider mais bon !
L'opération que tu veux effectuer est appelé syncronisation de multiplexage d'entrée/sortie (très pompeux :pt1cable: )
Et sous linux la fonction a utilisé est select () en incluant (sys/select.h).
Maintenant tu peux chercher l'équivalent windows.
voila la page d'aide de la fonction linux :
http://unixhelp.ed.ac.uk/CGI/man-cgi?select+2
Bon courage !
J'y connais rien à la prog windows mais ça à l'air de ressembler à ma fonction linux.
http://msdn.microsoft.com/library/ [...] jectex.asp
en gros la fonction windows attend un objet (une saisie clavier par exemple) et si le delai que tu lui à mis en paramètre est écoulé elle arrête d'attendre l'objet.


Message édité par mocosraito le 09-01-2005 à 21:17:45
n°949585
fullnight
Posté le 09-01-2005 à 21:34:09  profilanswer
 

je programme en mode console
pas en mode windows
 
je voulais juste dire que j'étais pas sur linux mais sous windows !
 
donc je suis pas avancé :(

n°949644
HelloWorld
Salut tout le monde!
Posté le 09-01-2005 à 22:24:20  profilanswer
 

Il me semble que WaitForSingleObject ne fonctionne pas avec les flux console. Je pense qu'il faut plutot utiliser GetNumberOfConsoleInputEvents & PeekConsoleInput.
 
J'ai bien dit 100, pour 0.1 seconde, afin d'être assez réactif, car si ca met une seconde à afficher ce que tu tapes ca peut etre lent. Attendre 30 sec, c'est simplement attendre 300 fois 100 ms.

Code :
  1. int count = 0;
  2. while ( count < 300 ) // 30 sec
  3. {
  4.     Sleep( 100 ); // 100 ms
  5.     if ( _kbhit() ) { break; } // touche enfoncée
  6.     ++count;
  7. }
  8. if ( count < 300 )
  9. {
  10.     // touche enfoncee
  11.     int c = _getch();
  12.     cout << '*';
  13. }
  14. else
  15. {
  16.     // timeout
  17. }


Un truc de ce genre. Note que je me suis trompé, c'est _kbhit qu'il faut utiliser pout tester une frappe au clavier. Note aussi que ce n'est pas portable.


Message édité par HelloWorld le 09-01-2005 à 22:25:31

---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
mood
Publicité
Posté le 09-01-2005 à 22:24:20  profilanswer
 

n°949723
fullnight
Posté le 10-01-2005 à 01:09:57  profilanswer
 

en fait tu écris int c = _getch();
                  cout << "*";
 
ca provoque 4 *    si je tape 4 x un chiffre ? ou si je tape 4 fois n'importe quoi?
 
ensuite
_kbhit() il sort de quelle include ? stp

n°949737
Lam's
Profil: bas.
Posté le 10-01-2005 à 01:35:15  profilanswer
 

Le plus tu poses de questions, le moins tu y réponds... (Cantona à Papin, in "Les Guignols de l'Info, 1993).
 
#include <windows.h>
#include <wincon.h>

n°949748
fullnight
Posté le 10-01-2005 à 02:47:33  profilanswer
 

c'est conio.h
 

n°949764
HelloWorld
Salut tout le monde!
Posté le 10-01-2005 à 09:29:46  profilanswer
 

http://msdn.microsoft.com/library/ [...] _kbhit.asp
http://msdn.microsoft.com/library/ [...] getche.asp
Avec _getch il te faut aussi tester si ce n'est pas un caractère étendu (genre une flèche, touche ALT, ...) que tu reçois ce qui nécessite d'appeler une 2° fois. Tu récupères tout, chiffre, lettre, car spécial... à toi de filtrer.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°950321
fullnight
Posté le 10-01-2005 à 20:19:44  profilanswer
 

ouais bon j'ai plus le temps de jouer a cacher le code secret  
 
je dois faire mon rapport de projet :(


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  comment lancer une procédure quand 30 s d'inactivité sont écoulées?

 

Sujets relatifs
comment lancer son programme au démarrageprocedure sub
[POSTGRESQL] lancer sur port 80procedure evenementielle sous access2000
VB6 : Mettre une listview en paramètre d'une procédureLancer des applications externes ?
[PB] vb et procédureLancer un .exe depuis n importe quel repertoire
Une question sur une procédurePassage de paramètres à une procédure
Plus de sujets relatifs à : comment lancer une procédure quand 30 s d'inactivité sont écoulées?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR