Cette première leçon de programmation spécifique
aux fonctions de TeleAuto va vous permettre de prendre le contrôle
de la raquette de pilotage des caméras CCD. Aprés sa lecture,
vous serez capable d'écrire vos premiers scripts simples d'acquisition
automatique.
En fait, il y aura 3 manières de piloter les caméra comme
tous les autres matériels de TeleAuto :
En prenant le contrôle des raquettes comme on le ferait manuellement.
Ce n'est pas optimal car il faudra souvent écrire plusieurs lignes
de code mais ca simplifiera l'apprentissage de la programmation par script
car le code principal est dans TeleAuto.
En utilisant des fonctions optimisées de TeleAuto.
En utilisant directement les drivers de caméra.Cela sera la manière
la plus difficile de programmation mais le contrôle sur les caméras
sera total et il sera en plus possible de piloter plusieurs caméras
sur le même PC.
C'est la première manière que je vais vous apprendre dans
cette page.
La raquette de pilotage de la caméra est un objet qui à
pour nom dans le moteur de script : WinCamera.
Cet objet contient un certain nombre de fonctions que l'on apelle "méthodes"
qui permettent d'agir sur les différents contrôles de la raquette
comme les boutons, les cases à cocher, les champs d'édition
et autres.
On apelle ces méthodes en utilisant le nom de l'objet suivi
du nom de la méthode séparés par un point. Par exemple
:
WinCamera.StartB1; Provoque l'appui sur le bouton Start de la zone Binning 1x1
et lance donc une acquisition.
Les méthodes disponibles pour la raquette caméra sont
:
Nom de la méthode
Utilisation
Exemple
WinCamera.Show
Fait apparaitre la raquette
WinCamera.Show;
WinCamera.Hide
Fait disparaitre la raquette
WinCamera.Hide;
WinCamera.StartB1
Appui sur le bouton Start en binning 1x1
WinCamera.StartB1;
WinCamera.StartB2
Appui sur le bouton Start en binning 2x2
WinCamera.StartB2;
WinCamera.StartB3
Appui sur le bouton Start en binning 3x3 ou 4x4 selon les caméras
WinCamera.StartB3;
WinCamera.SetPoseB1(Pose:Single);
Règle le temps de pose en secondes en binning 1x1
WinCamera.SetPoseB1(10.5);
WinCamera.SetPoseB2(Pose:Single);
Règle le temps de pose en secondes en binning 2x2
WinCamera.SetPoseB2(10.5);
WinCamera.SetPoseB3(Pose:Single);
Règle le temps de pose en secondes en binning 3x3 ou 4x4 selon
les caméras
WinCamera.SetPoseB3(10.5);
WinCamera.SetLoopNb(Nb:Integer);
Règle le nombre d'images à prendre lors d'un bouclage
WinCamera.SetLoopNb(20);
WinCamera.SetStartIndex(Nb:Integer)
Règle l'index de départ d'enregistrement des images
WinCamera.SetStartIndex(5)
WinCamera.SetImgName(Name:string)
Règle le nom générique d'enregistrement des images
WinCamera.SetImgName('m57r')
WinCamera.SetLoopOn
Met en service le bouclage
WinCamera.SetLoopOn;
WinCamera.SetLoopOff
Met hors service le bouclage
WinCamera.SetLoopOff;
WinCamera.SetAutoSaveOn
Met en service la sauvegarde automatique
WinCamera.SetAutoSaveOn;
WinCamera.SetAutoSaveOff
Met hors service la sauvegarde automatique
WinCamera.SetAutoSaveOff;
WinCamera.SetImgType(ImgType:Integer)
Règle le type d'image :
1 = Images
2 = Offset
3 = Noir
4 = Flat
WinCamera.SetImgType(2); pour prendre des offsets
WinCamera.SetImgType(3); pour prendre des noirs
WinCamera.WaitEndAcq
Attend la fin des acquisitions lancées pas StartB1, StartB2
ou StartB3
WinCamera.WaitEndAcq;
WinCamera.SetWindow(x1,y1,x2,y2:Integer)
Régle le fenêtrage en pixels. Comme dans la raquette les
coordonnées doivent être entrée en binning 1x1 quelque
soit le binning utilisé
WinCamera.SetWindow(101,52,123,85)
WinCamera.InitWindow
Réinitialise la fenêtrage
WinCamera.InitWindow;
WinCamera.SetStatOn
Met en service les statistiques
WinCamera.SetStatOn;
WinCamera.SetStatOff
Met hors service les statistiques
WinCamera.SetStatOff;
WinCamera.SetFilter(FilterNb:Integer):Boolean
Choix du filtre. Cette méthode renvoie un booléen qui
est égal à False si le réglage échoue ou si
vous avez un caméra sans filtres
Cette fonction sera plus tard transférée dans l'objet
roue à filtre.
var
OK:Boolean;
begin
OK:=WinCamera.SetFilter(2);
if not OK then writeln('Echec du choix du filtre');
end;
WinCamera.StartWatch
Met en service la fonction de surveillance
WinCamera.StartWatch;
WinCamera.SetWatchWait(Wait:Single)
Règle le temps d'attente entre de images de surveillance en
secondes.
WinCamera.SetWatchWait(1.5);
WinCamera.SetWatchImgNb(Nb:Integer)
Règle le nombre d'images à enregistrer quand un évènement
est détécté en mode surveillance
WinCamera.SetWatchImgNb(10);
WinCamera.SetWatchStart(Percent:Integer)
Règle le pourcentage de variation pour la détection d'un
évènement en mode surveillance
WinCamera.SetWatchStart(31);
WinCamera.GetImg(var Img:Tpop_Image)
Permet de récuperer l'objet image qui vient d'être prise
afin de la traiter.
var
Image:Tpop_image;
begin
WinCamera.GetImg(Image);
Image.Visu(100,1500);
end.
Ce script permet de régler les seuils de l'image qui vient d'être
prise.
Vous pouvez très facilement tester ces différentes méthodes
en observant leur effet sur la raquette Caméra.
Voici un exemple simple d'acquisition d'une image qui permet de prendre
une image de 1 seconde en binning 1x1 :
program Lecon1TA; begin WinCamera.Show; WinCamera.SetPoseB1(1); WinCamera.StartB1; Writeln('Attente de la fin de l''acquisition'); WinCamera.WaitEndAcq; Writeln('Acquisition terminée'); end.
Attention, si vous utilisez une webcam, il faut d'abord la connecter
avant de lancer ce script ou alors la régler en connection automatique.
Enfin l'objet WinCamera comme toutes les fenêtres possède
des sortes de variables que l'on appelle propriétés qui permettent
de changer sa position à l'écran :
Nom de la propriété
Utilisation
Exemple
Top
Défini la distance entre le haut de la fenêtre et le haut
de l'écran en pixels
WinCamera.Top:=0;
colle la fenêtre en haut de l'écran
Left
Défini la distance entre la gauche de la fenêtre et la
gauche de l'écran en pixels