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# Discussion :

Timer, chronomètre en Csharp


Sujet :

C#

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 29
    Par défaut Timer, chronomètre en Csharp
    Bonjour...
    Je suis le créateur d'un petit chatterbot Jeanneton (un robot parleur,
    dire une Ia serait prétentiard. C'est fait avec le moteur Verbots qui
    est écrit en CSharp...) Si on veut lui parler, c'est ici:
    www.jeanneton.blueinfos.com...

    Je voudrai le perfectionner... Je ne suis pas du tout programmeur...
    (Je me casse ! Bon d'accord...)

    Plus sérieusement, j'aimerai que qqun m'aide à faire un chronomètre...

    C'est à dire. Jeanneton, mon bot. Ex il possède en output un texte à lire...

    "Aurevoir ami." <exit>
    (<exit> est la commande qui ferme le programme.)


    C'est là mon problème. Cette commande agit immédiatement avant que
    mon bot ait finit sa phrase... Je voudrai délayer ça.

    Ex: Jeanneton dit:
    "Aurevoir ami." Puis, le code en c sharp que je vous demande compte
    5 secondes (ou 10, qqchose de réglable), et ferme l'application...
    Laissant au bot le temps de terminer sa phrase.

    Donc si qqun à le temps, la gentillesse. Bon je sais que les non(s)
    pros sont des pénibles. (J'ai mal au dos à force de faire des
    courbettes. :0) Soyez cool et ne m'envoyez pas ballader.)

    Amicalement
    Sylvain

  2. #2
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 614
    Par défaut
    Ben il y a les timer, par exemple.
    Lancer un timer après la fin de la phrase et fair le exit dans l'événement Elapsed du timer.
    Mais si tu nous montrais un bout de code, ce serait peut-être plus facile...

  3. #3
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Ce n'est pas un chrono que tu auras besoin dans ton cas, mais plutôt d'un "Sleep".

    Tu peux procéder ainsi :


    où x est un entier qui indique ton temps en millisecondes.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 29
    Par défaut Timer
    Merci... Ok je vois, rien n'est fastoche...
    Avant tout, un exemple de "code module" CSharp qui n'a rien à voir avec
    ce que je vous demande, c'est juste pour situer la chose et vous montrer
    comment ça fonctionne. Il sert à manipuler le moteur Verbots. Ce code
    interdit les " .:,;!? " dans une variable.

    __
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      Code module
    Fonction:
     Function Name: 
      asterix
     Parameter:
      string op1
     Return Type
      string
     
    Code:
    string target = @".:,;!?"; 
    char[] anyOf = target.ToCharArray(); 
    if (op1.IndexOfAny(anyOf, 0) >= 0) op1 = op1.Substring(0, op1.IndexOfAny(anyOf, 0)); 
    return op1;
    __

    Ex de conversation:
    Rule Name: Test [thing] ?
    Input Text: Test [thing] ?
    Output Text: [thing].

    Si je tape "Test grenouille ?" , le bot répond
    "Grenouile ?"

    Ok facile, si je rajoute cette fonction plus ht le code module du moteur
    et si je retape "Test grenouille ?" , le bot répond
    "Grenouille"

    Plus de "?"
    Super. C'était le but.

    (On appelle la fonction en output comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Input Text: Test [thing] ?
    Output Text: "<?csharp Console.WriteLine(Athena.asterix(vars["thing"])); ?>". "[thing]".)



    J'ai trouve un bout de code avec 4 fonctions qui semble détecter
    le début etla fin du texte lu par mon bot. C'est dans un
    "code module" (ajouté au moteur Verbot.) Nouvelle conversation:
    Rule Name: Hello
    Input Text: Hello
    Output Text: Bye.



    Voilà le code module qui permet de faire ça (réprérer le début et la
    fin d'un phrare...)

    __
    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
    21
     Code module.
    *Fonction 1:
     
    Function name:
    OnBeforeRuleFired
    Parameter:
    State s
    Return Type:
    Console.WriteLine("A OnBeforeRuleFired triggered");
     
    code: 
    Console.WriteLine("A OnBeforeRuleFired triggered");
    /*
    Console.WriteLine("State Object: ");
    foreach(object oKey in s.Vars.Keys)
    {
       Console.WriteLine(oKey + " : " + (string)s.Vars[oKey]);
    }
    */
    //Console.WriteLine("Changing Input to \"test\"");
    //s.Vars["_input"] = "test";
    __




    __
    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
    21
    22
    23
    24
    25
    26
    *Fonction 2 :
     
    Function name:
    OnAfterRuleFired
     
    Parameter:
    State s, Reply r
     
    Return Type:
    void
     
    Code
    Console.WriteLine("B OnAfterRuleFired triggered.");
    /*
    Console.WriteLine("State Object: ");
    foreach(object oKey in s.Vars.Keys)
    {
       Console.WriteLine(oKey + " : " + (string)s.Vars[oKey]);
    }
     
    Console.WriteLine("Reply Object: ");
    Console.WriteLine("r.Text: " + r.Text);
    Console.WriteLine("r.AgentText: " + r.AgentText);
    Console.WriteLine("r.Cmd: " + r.Cmd);
    Console.WriteLine("r.RuleId: " + r.RuleId);
    */
    __


    __
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    *Fonction 3:
     
    Function name: 
    OnNoRuleFired
     
    Parameter
    State s, Reply r
     
    Return Type
    void
     
    Code
    Console.WriteLine("C OnNoRuleFired triggered");
    __
    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
    *Fonction 4:
     
    Function name:
    OnNoOutputFound
     
    Parameter
    Hashtable vars, Reply r
     
    Return Type
    string
     
    Code:
    Console.WriteLine("OnNoOutputFound");
    Console.WriteLine("Reply Object Details:");
    Console.WriteLine("Chosen Rule ID: " + r.RuleId);
    Console.WriteLine("From KB: " + r.KBItem.Filename);
     
    return "OnNoOutputFound";
    __

    Conversation.
    Rule Name: Hello
    Input Text: Hello
    Output Text: Bye.


    Ex, si je tape en input "Hello", j'obtiens en output:

    A OnBeforeRuleFired triggered
    Salut.
    B OnAfterRuleFired triggered.

    Si je ne me "fourvoie" pas, je peux donc détecter cette fin de phrase
    où je pourrai placer ce fameux "timer" (J'ai regardé ici
    http://msdn.microsoft.com/fr-fr/libr...ers.timer.aspx
    et essayé plein de truc. Mais à part faire planter l'application
    Verbots, nada...


    Donc normalement, sachant repérer un début et une fin de phrase
    lue, il devrait être possible de placer le timer que je vous demande
    et tant désiré à cette endroit, et de l'appeler en output d'une façon
    ou d'une autre, non ?


    Amicalement.
    Sylvain.
    Ps: Si je deviens ourd, oubliez ce post.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 29
    Par défaut
    Bon je continue toujours de chercher à droite à gauche...
    Ce que je voudrai est en fait très simple, enfin ça parait très simple
    pour un quidam comme moi. Un code qui se déclanche à un moment, dure
    un temps choisit pas une variable et qui le temps dévolue, fait autre chose,
    ou rien. Où mettre ce code, j'en sais rien en fait je parle de chose que je
    ne comprends pas.
    Si vous avez le temps...
    Merci.
    Sylvain

  6. #6
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    C'est vrai que le plus simple c'est quand même Thread.Sleep(durée)
    Après, tu peux tester les nouveautés de C#5 avec la TPL qui contient un truc du genre!

Discussions similaires

  1. Chronomètre simple utilisant un javax.swing.Timer
    Par Johann.Heymes dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 08/03/2011, 19h09
  2. Un timer ou chronomètre sur une application
    Par Husky_4D dans le forum Windows
    Réponses: 8
    Dernier message: 23/11/2010, 14h18
  3. Réponses: 0
    Dernier message: 06/02/2009, 23h07
  4. Réponses: 13
    Dernier message: 06/11/2005, 21h37
  5. [C++ Builder 6] Timer de précision pour chronomètre
    Par doudoustephane dans le forum C++Builder
    Réponses: 9
    Dernier message: 27/09/2005, 10h45

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