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 :

repeter une action avec un timer


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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
    Par défaut repeter une action avec un timer
    Je voudrais utiliser un timer pour la prise de photo par une webcam, mais je n'arrive qu'a prendre une seule photo. J'aimerais que periodiquement la webcam prenne une photo, tant que l'on arrete pas le timer, mais que l'utilisation du timer ne me bloque pas le programme.
    Code de demarrage du timer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
    // For an example of the callback function OneShotCallback, see Writing
    // a Timer Callback Function.
    Timer1->Interval = 5000; //5 secondes
    (Timer1->Enabled == true);
    )
    if (Timer1->Enabled == true)
    {
    ShowMessage(AnsiString("timer "));
    }
    }
    code d'arret du timer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void __fastcall TForm1::Button4Click(TObject *Sender)
    {
     
    // et dans ton Timer:
    Timer1->Enabled = false;
    ShowMessage(AnsiString("Arret timer "));
    }

  2. #2
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    En tout ca sle code que tu nous as montré est bon, sauf que dans ton ShowMessage, ceci suffi :
    Montre nous plutot ce que tu as mis dans l'evenement OnTimer de ton Timer, c'est la que doit venir le probleme

  3. #3
    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
    Par défaut
    Merci pour ta reponse pottiez
    Pour l'instant il n'y a que ca je n'ai fait qu'un teste je voulez voir si le message se repetait
    ShowMessage("timer ");
    Je teste avec ce que j'ai trouve sur le Forum mais je ne sais pas utiliser l'evenement "OnTimer".

  4. #4
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Tout ce que tu veut faire se répéter est a placer dans l'evenement OnTimer du Timer, sinon il y a eu un poste sur comment prendre des photos avec la web cam il y a environ trois quatre jours sur ce forum.

  5. #5
    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
    Par défaut
    Oui mais il ne parlait que de la gestion image de la Webcam
    titre du poste
    comment connecter une webcam sous builder c++
    mouchie82
    J'en ai fait un aussi pour pouvoir prendre une seriee de photos qui ne s'ecrase les une les autres.
    titre du poste
    [Résolu] [Débutant(e)] convertion de chaine de caracteres ( 1 2 )
    blondelle
    mais on ne parle pas de timer comme je n'ai pas d'exemple j'ai du mal a y arriver.

  6. #6
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    c'est simple tu demarre la web cam comme ceci :
    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
     
    #include <vfw.h>
     
    void __fastcall TFicheVideo::FormShow(TObject *Sender)
    {
                                        //Lier le handle à l'animate.
       Handle = Animate->Handle;
                                        //Créer une capture video de 640*480.
       Handle = capCreateCaptureWindow( NULL,                
                                                        WS_CHILD|WS_VISIBLE,
                                                        0,
                                                        0,
                                                        640,
                                                        480,
                                                        Handle,
                                                        0                                  );
                                        //Connecter le driver.
       capDriverConnect(Handle, 0);
                                        //Initialiser le taux de rafraichissement a 66ms.
       capPreviewRate  (Handle, 66);
                                        //Démarer la preview video.
       capPreview      (Handle, true);
    }
    Et tu ajoute se code dans la fonction OnTimer de ton Timer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void __fastcall TFicheVideo::Timer1Timer(TObject *Sender)
    {
        AnsiString nom = Application->Name + "\\..\\ ;
            nom += FormatDateTime("ddmmyyyyhhnnss",Now()) ;
            nom += ".bmp" ;
            capCaptureSingleFrameOpen(Handle);
        capCaptureSingleFrame(Handle) ;
        capCaptureSingleFrameClose(Handle) ;
     
        capFileSaveDIB(Handle, "C:\TOTO.BMP");
    }
    Comme ca tu as une photo des que ton timer est enclenché, et le nom du fichier sera la date et l'heure (donc différent a chaque fois)

  7. #7
    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
    Par défaut
    J'ai oublie de mettre le code qui sera repete par le timer
    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
     
    {
    AnsiString Fichier;
    char photo[1024];
    AnsiString chaine;
    AnsiString date_aujourdui;
    AnsiString heure;
    	capCaptureSingleFrameOpen(Handle);
    	capCaptureSingleFrame(Handle) ;
    	capCaptureSingleFrameClose(Handle) ;
    // on ajoute un index entre "photo et .bmp" afin d'avoir un nom different
    // afin de ne pas ecraser le nom precedent il y est inclu l'heure et la
    // date sous forme
    // heure, minute, seconde, sans separateur
    // jour, mois, annee, sans separateur
    // il ne faut aucun separateur dans la chaine que l'on
    // envoye comme nom de fichier
    date_aujourdui = FormatDateTime("DDMMYYYY",Now());
    heure = FormatDateTime("HHMMSS",Now());
    Fichier = ("photo" + IntToStr(i) + heure + date_aujourdui + ".bmp");
    chaine = ("C:\\Documents and Settings\\blondelle\\Mes documents\\PHOTO_WEBCAM\\" + Fichier);
    // copier la photo
    capFileSaveDIB(Handle, chaine.c_str());
    i++;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. déclencher une action avec un timer
    Par leeloo95 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 23/11/2009, 15h30
  2. Déclencher une action avec un chrono
    Par Oberown dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/09/2005, 14h22
  3. [JTextField] Déclencher une action avec la touche ENTER
    Par tchoukapi dans le forum Composants
    Réponses: 10
    Dernier message: 19/09/2005, 14h37
  4. Réponses: 7
    Dernier message: 20/06/2005, 17h00
  5. Réponses: 4
    Dernier message: 27/04/2004, 14h45

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