Prises de photos d'astres (déclencheur, minuteur, heure définie, intervalle etc.

Signaler
Messages postés
50
Date d'inscription
lundi 4 février 2013
Statut
Membre
Dernière intervention
12 mars 2015
-
Messages postés
50
Date d'inscription
lundi 4 février 2013
Statut
Membre
Dernière intervention
12 mars 2015
-
Bonjour,

Je suis entrain de travailler sur un petit projet d'astronomie.

Le programme de base d'une connaissance est capable une fois qu'il a fixé un astre avec son télescope, de le suivre jusqu'à qu'un obstacle obstrue le champ de vision. Une comète passe, il la fixe et le télescope la suit jusqu'à ne plus la voir.

Et donc voici ce que je dois rajouter :

Son télescope comprend un appareil photo.

Le but est d'automatiser en partie les prises de photos avec un déclencheur, soit instantané après le clic de souris, soit avec un minuteur (de 1 à 30 minutes d'attente), soit à une heure définie. Il faut aussi un intervalle de 5 secondes à 1 minute entre chaque prise.

L'environnement est sombre puisqu'il se passe de nuit, il faut donc capter un maximum de lumière lorsque l'on fait une prise de vue de nuit, c'est pourquoi il faut aussi une ouverture focale de 1 seconde à 20 minutes avant de déclencher la prise de vue.

Maintenant je vous expose mon soucis :

Il y a un déclencheur, ça c'est ok, en revanche, il faut un minuteur et une heure de déclenchement. Le hic est que si je me sers de timer, il y aura un décalage par rapport à l'heure système.

A part tester le timer et le recâler à chaque fois sur l'heure système, y aurait-il moyen de le faire sans me servir de ce dit timer ?


Cordialement, Gaedarr.

4 réponses

Messages postés
14738
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
23 novembre 2020
148
Bonjour,

Lancer le timer toutes les X secondes, et si l'heure système correspond à l'heure désirée, enclencher l'appareil.

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Messages postés
50
Date d'inscription
lundi 4 février 2013
Statut
Membre
Dernière intervention
12 mars 2015

Bonjour NHenry,

Merci pour votre message.

Actuellement, je cherche à faire en sorte d'éviter les timers puisque le problème est qu'ils ne sont pas précis et qu'ils finissent par être décalés par rapport à l'heure système.

voici mon code actuel pour le test d'heure système et de l'heure de déclenchement de photos sans timer :

        private void btnAlarme_Click(object sender, EventArgs e)
        {
            iHeures = Convert.ToInt32(this.tbxHeures.Text);
            iMinutes = Convert.ToInt32(this.tbxMinutes.Text);

            iTotal = iHeures * 3600 + iMinutes * 60;

            iHeureSystem = DateTime.Now.Hour;
            iMinuteSystem = DateTime.Now.Minute;

            iSystemTotal = iHeureSystem * 3600 + iMinuteSystem * 60;

            this.lblAlarme.Text = iHeures.ToString() + ":" + iMinutes.ToString();

            while (iSystemTotal != iTotal)
            {
                iHeureSystem = DateTime.Now.Hour;
                iMinuteSystem = DateTime.Now.Minute;

                iSystemTotal = iHeureSystem * 3600 + iMinuteSystem * 60;
            }
            SetDigitalChannel(1);
        }


Ce code fonctionne bien pour faire ce test, mais le problème qui se pose maintenant est que le programme ne fera que ça tant qu'ils n'aura pas terminé.

Serait-il possible de faire de même sans pour autant figer le programme ni utiliser de timer pour cause du décalage ?


Cordialement, Gaedarr.
Messages postés
15151
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
27 novembre 2020
463
Bonsoir, pour eviter le figé du programme oriente toi vers les threads ou le bakgroundworker, regarde cette source.

Par contre je suis surpris par ton code, en effet tu convertit ton heure en seconde pour comparer ton compteur et l'heure système, or tu ne prends que Heure et Minute, donc comparer à la seconde près ne sert à rien. Et il me semble plus qu'il te serait plus simple de te servir d'objets DateTime ou TimeSpan


Whismeril
Messages postés
50
Date d'inscription
lundi 4 février 2013
Statut
Membre
Dernière intervention
12 mars 2015

Hello,

Tout d'abord, merci de vous être penché sur mon sujet.

Je poste un peu tard, mais j'ai eu quelques soucis dernièrement et je n'ai pas pu avancer tout ça.

Je vais regarder cette source pour le backgroundworker qui m'a l'air très intéressante. Sinon concernant le timer, le DateTime ou le TimeSpan, disons surtout que je vais devoir faire beaucoup de travail en tâche de fond si je veux éviter totalement les timers.

Je reviendrai donner des nouvelles dès que j'aurai pu modifier mon code et faire une tâche en fond :)




Cordialement, Gaedarr.