Cette page vous explique comment programmer sous Delphi un plugin qui
vous permettra de piloter votre camera CCD à partir de TeleAuto
Version 2.96 et supérieures. Pour l'instant ce plugin à
toutes les fonctions nécessaires pour écrire des plugins
pour les caméra déjà pilotées par TeleAuto.
Si les fonctions disponibles ne sont pas suffisantes pour piloter votre
caméra ou si vous avez besoin de renseignements, n'hésistez
pas à contacter Philippe.
Modifications apportées à ce document :
27 février 2004 pour la version 2.97 :
Ajout des fonctions PluginHasCfgWindow et PluginShowCfgWindow pour afficher une
fenêtre de configuration spécifique à la caméra. TeleAuto affiche alors
un bouton supplémentaire dans sa fenêtre de configuration. Ce bouton permet d'appeler
cette fenêtre.La function PluginHasCfgWindow permet à TeleAuto de savoir si le plugin permet
d'afficher une fenêtre de configuration spécifique. La fonction PluginShowCfgWindow
permet à TeleAuto d'appeler cette fenêtre.
11 novembre 2003 pour la version 2.96 :
Modification de la fonction PluginOpen qui renvoit maintenant un booleen pour savoir
si l'ouverture c'est bien passée
11 aout 2003 pour la version 2.96 :
Ajout de la fonction PluginIs16Bits qui permet de gérer les caméras à
convertisseur 16 bits
1 juillet 2002 pour la version 2.8 :
La fonction PluginGetCCDDate devient PluginGetCCDDateBegin.
La fonction PluginGetCCDTime devient PluginGetCCDTimeBegin.
Ajout de la fonction PluginGetCCDDateEnd qui permet de donner à
TeleAuto la date de fin de la prise de vue.
Ajout de la fonction PluginGetCCDTimeEnd qui permet de donner à
TeleAuto l'heure de fin de la prise de vue.
Ajout des fonctions PluginIsUsedUnderNT et PluginIsNotUsedUnderNT qui permet
à TeleAuto de signaler au plugin si il est utilisé sous NT/2000/XP.
Ceci permet de sauter le masquage des interruptions qui provoquerais une
erreur sous ces OS.
Ajout de la fonction PluginSetHourServer qui permet d'avoir accés
à la fonction GetHour interne à TeleAuto. Cette fonction
fait appel au serveur d'heure choisi pas l'utilisateur de TeleAuto.
23 mars 2002 pour la version 2.7 :
Ajout de la fonction PluginSetPCMinusUT qui permet de connaitre la difference
de temps entre l'heure du PC et l'heure TU entrée dans la fenêtre
de configuration.
Ajout d'un exemple complet de plugin pour Hisis 22 14 bits avec code source.
20 décembre 2001 pour la version 2.66c :
PluginGetXPixelSize et PluginGetYPixelSize doivent retourner une valeur
réelle.
Ajout des fonctions PluginGetNbplan et PluginGetTypeData.
Ajout de la taille de l'image à dans PluginReadCCD.
Exemple de lecture d'une image en couleur dans PluginTestCCD.
Voir ci-dessous pour la description de ces fonctions.
Quel est l'interêt
d'avoir un plugin Camera dans TeleAuto ?
La programmation des interfaces avec le matériel en général
et avec les caméras CCD en particulier et extrèmement délicat
et nécéssite presque obligatoirement de posséder la
Caméra CCD en question. Les auteurs de TeleAuto n'étant pas
assez fortunés pour acheter toutes les caméras que les utilisateurs
voudraient voir intégrer dans TeleAuto, le plugin a été
adopté.
Cette méthode permettra de simplifier les choses puisque les
utilisateurs programmeurs pourront intégrer eux même leur
caméra. Les auteurs n'auront plus a s'occuper d'écrire et
maintenir les drivers pour d'autres caméras. Ceci est un avantage
car l'écriture d'un tel driver est très aléatoire
sans avoir la caméra branchée au PC. De plus il est nésessaire,
de tester chaque caméras à chaque mises à jour de
la partie CCD de TeleAuto. Au prix d'un petit travail de programmation,
les utilisateurs auront l'assurance de voir leur caméra correctement
fonctionner et mise à jour dans TeleAuto, chose impossible à
garantir pour les auteurs.
Comment se présente
le plugin Camera ?
C'est une librairie dynamique (.dll) écrite dans le language
de votre choix et ayant le nom de votre choix. Essayez tout de même
de choisir un nom personnalisé permettant d'avoir une dll différente
par type de caméra. Par exemple préférez 'ST7.dll'
à 'Plugin.dll'.
Cette librairie doit mettre à disposition de TeleAuto toutes
les procédures et fonctions listées dans la suite de cette
page.
Cette librairie doit être placée dans le même répertoire
que l'exécutable TeleAuto.exe et doit être déclarée
dans l'onglet 'Caméra' de la fenêtre de configuration de TeleAuto.
Pour se faire, cliquez sur le type de caméra 'Plugin' et indiquez
le nom de la librairie.
Quelles sont les procédures
et fonctions qui doivent être présents dans la librairie plugin
?
Voici la liste des procédures et fonctions à coder dans
la libraire. Chaque déclaration de procédure et de fonction
dans ce chapitre est suivie d'une explication sur ce que vous devez y programmer.
La forme est ici celle de Delphi. Veillez voir plus loin dans cette page
pour avoir des informations sur l'écriture dans d'autres languages.
procedure PluginSetPort(_Adress:Word); cdecl; Cette procédure permet à TeleAuto d'envoyer au plugin
la valeur de l'adresse du port paralléle choisie par l'utilisateur.
Si cette valeur est stoquée dans la variable Adress de la librairie,
cette procédure est exactement :
procedure PluginSetPort(_Adress:Word); cdecl;
begin
Adress:=_Adress;
end;
function PluginSetWindow(_x1,_y1,_x2,_y2:Integer):Boolean; cdecl; Cette procédure permet à TeleAuto d'envoyer au plugin
les dimensions de la fenêtre d'acquisition choisie par l'utilisateur
pour l'acqusition.
Attention, ces valeurs sont les valeurs dans un équivalent en
Binning 1x1.
Si ces valeurs sont stoquées dans les variables x1,y1,x2,y2
(attention, on a x1<x2 et y1<y2) de la librairie, cette procédure
est exactement :
function PluginSetWindow(_x1,_y1,_x2,_y2:Integer):Boolean; cdecl;
begin
if (_x1>0) and (_x2>0) and (_x1<PluginGetXSize+1) and (_x2<PluginGetXSize+1)
and
(_y1>0) and (_y2>0) and (_y1<PluginGetYSize+1) and
(_y2<PluginGetYSize+1) and
(_x2>_x1) and (_y2>_y1) then
begin
x1:=_x1;
y1:=_y1;
x2:=_x2;
y2:=_y2;
Result:=True;
end
else Result:=False;
end;
function PluginSetBinning(_Binning:Integer):Boolean; cdecl; Cette procédure permet à TeleAuto d'envoyer au plugin
le binning choisi par l'utilisateur pour l'acquisition.
Si cette valeur est stoquée dans la variable Binning de la librairie
et que les binning possibles sont 1x1,2x2,3x3,4x4, cette procédure
est exactement :
function PluginSetBinning(_Binning:Integer):Boolean; cdecl;
begin
if (_Binning=1) or (_Binning=2) or (_Binning=3) or (_Binning=4) then
begin
Binning:=_Binning;
Result:=True;
end
else Result:=False;
end;
function PluginSetPose(_Pose:Double):Boolean; cdecl; Cette procédure permet à TeleAuto d'envoyer au plugin
le temps de pose en secondes choisi par l'utilisateur pour l'acquisition.
function PluginSetPose(_Pose:Double):Boolean; cdecl;
begin
if (_Pose>0) and (_Pose<50331.645) then
begin
Pose:=_Pose;
Result:=True;
end
else Result:=False;
end;
function PluginSetEmptyingDelay(_EmptyingDelay:Double):Boolean; cdecl; Cette procédure permet à TeleAuto d'envoyer au plugin
le délai de vidage de la matrice CCD en secondes choisi par l'utilisateur
pour l'acquisition.
Cette fonction est utilisée dans les cameras Hisis22 pour synchroniser
l'acquisition avec TeleAuto.
function PluginSetEmptyingDelay(_EmptyingDelay:Double):Boolean; cdecl;
begin
if (_EmptyingDelay>0) then
begin
EmptyingDelay:=_EmptyingDelay;
Result:=True;
end
else Result:=False;
end;
function PluginSetReadingDelay(_ReadingDelay:Double):Boolean; cdecl; Cette procédure permet à TeleAuto d'envoyer au plugin
le délai à introduire à la lecture de la matrice CCD
choisi par l'utilisateur pour l'acquisition.
Cette valeur est utilisée pour les caméras Hisis22 ou
elle indique le nombre de nop à ajouter pour ralentir la lecture
du CCD sur les vieux port parallèles.
function PluginSetReadingDelay(_ReadingDelay:Double):Boolean; cdecl;
begin
if (_ReadingDelay>0) then
begin
ReadingDelay:=_ReadingDelay;
Result:=True;
end
else Result:=False;
end;
function PluginSetShutterCloseDelay(Delay:Double):Boolean; cdecl; Cette fonction permet à TeleAuto d'envoyer au plugin le délai
de fermeture de l'obturateur de la matrice CCD choisi par l'utilisateur.
Cette fonction et utilisée pour l'Audine avec obturateur R.
David. Elle permet de ne pas envoyer l'ordre d'ouverture si le temps de
pose est inférieur à ce délai.
function PluginSetShutterCloseDelay(Delay:Double):Boolean; cdecl;
begin
if (Delay>0) then
begin
ShutterCloseDelay:=Delay;
Result:=True;
end
else Result:=False;
end;
function PluginIsConnectedAndOK:Boolean; cdecl; Cette fonction doit tester si la caméra est connectée
et en état de marche et retourner True si c'est le cas, False dans
le cas contraire.
Elle est appelée par TeleAuto à chaque connection de
la caméra.
function PluginIsConnectedAndOK:Boolean; cdecl;
begin
Result:=True;
end;
function PluginOpen:Boolean; cdecl; Cette procédure doit contenir le code d'initialisation de la
caméra éventuellement nécessaire. Elle peut rester
vide.
Elle est appelée par TeleAuto à chaque connection de
la caméra. et retourne True si tout c'est bien passé
procedure PluginOpen; cdecl;
begin
Result:=True;
end;
procedure PluginClose; cdecl; Cette procédure doit contenir le code de fermeture de la camera
éventuellement nécessaire. Elle peut rester vide.
Elle est appelée par TeleAuto à sa fermeture.
procedure PluginClose; cdecl;
begin
end;
function PluginStartPose:Boolean; cdecl; Cette fonction doit lancer l'aquisition de l'image. Elle est appellée
par TeleAuto pour lancer l'acquisition.
Le variables globales déclarées dans la librairie doivent
être utilisées ici pour prendre l'image demandée par
l'utilisateur.
Dans la librairie donnée en exemple plus loin elle sont :
// Variables provided by the TeleAuto user to setup the CD camera
Adress:Word;
// The adress of the paralel port used by the camera
x1,y1,x2,y2:Integer;
// The window to acquire in equivalent binning 1x1
Binning:Integer;
// Binning used
Pose:Double;
// The pose in seconds
EmptyingDelay:Double;
// Delay needed to empty the CCD (Hisis cameras)
ReadingDelay:Double;
// Reading delay (Hisis cameras)
ShutterCloseDelay:Double;
// Closing delay of the shutter
Cette fonction doit retourner True, si tout c'est passé correctement.
function PluginStartPose:Boolean; cdecl;
begin
Result:=True;
end;
function PluginStopPose:Boolean; cdecl; Cette fonction doit contenir le code permettant d'arrêter l'aquisition
avant le delai normal donné par SetPose.
Elle et appellée par TeleAuto quand l'utilisateur appuie sur
le bouton 'Stop' pour arrêter la pose avant sa fin.
Cette fonction doit retourner True, si tout c'est passé correctement.
function PluginStopPose:Boolean; cdecl;
begin
Result:=True;
end;
function PluginReadCCD(TabImgInt:PTabImgInt; ImgSx,ImgSy:Integer):Boolean;
cdecl; Cette fonction doit contenir le code permettant de lire la CCD et de
mettre son contenu dans la variable TabImgInt de type PTabImgInt déclaré
dans la librairie donnée en exemple plus loin :
TLigInt=array[1..999999] of SmallInt
PLigInt=^TLigInt
TImgInt=array[1..999999] of PLigInt
PImgInt=^TImgInt
TTabImgInt=array[1..255] of PImgInt
PTabImgInt=^TTabImgInt
C'est la déclaration de type Image de TeleAuto.
Le type Smallint est un entier signé codé sur 2 octets .
Pour envoyer à TeleAuto une image codée sur 16 bits c'est à
dire dans un entier non signé sur 2 octets, il faut enlever la valeur 32768
à la valeur donnée par la caméra. TeleAuto saura grâce à
la fonction PluginIs16Bits qu'il doit ajouter la valeur 32768 aux intensités de
l'image. L'image sera alors stockée en mémoire dans un format à
virgule flottante sur 8 octets. Pour continuer à sauver ces images dans des
fichiers au format entier, signalez le dans la configuration de TeleAuto.
Les dimensions
allouée pour l'image sont indiquées par ImgSx et ImgSy, il
peut être prudent de contôler le débordement.
Cette fonction est appelée par TeleAuto aprés la fin
de l'acquisition.
Cette fonction doit retourner True, si tout c'est passé correctement.
L'exemple suivant remplit l'image avec des 0 :
function PluginReadCCD(TabImgInt:PTabImgInt; ImgSx,ImgSy:Integer):Boolean;
cdecl;
var
i,j:Integer;
begin
Result:=True;
for j:=1 to (y2-y1+1) div Binning do
for i:=1 to (x2-x1+1) div Binning do
TabImgInt^[1]^[j]^[i]:=0;
end;
procedure PluginGetCCDDateBegin(var Year,Month,Day:Word); cdecl; Cette fonction est utilisée par TeleAuto pour connaître
la date d'acquisition de l'image qui vient d'être prise.
Attention, cette date correspond à l'instant du début
de pose dans TeleAuto en Temps Universel.
Cette fonction est appelée aprés la lecture du CCD dans
TeleAuto.
procedure PluginGetCCDDate(var Year,Month,Day:Word); cdecl;
begin
Year:=2001;
Month:=7;
Day:=25;
end;
procedure PluginGetCCDTimeBegin(var Hour,Min,Sec,MSec:Word); cdecl; Cette fonction est utilisée par TeleAuto pour connaître
l'heure d'acquisition de l'image qui vient d'être prise.
Attention, cette date correspond à l'instant du début
de pose dans TeleAuto en Temps Universel.
Cette fonction est appelée aprés la lecture du CCD dans
TeleAuto.
procedure PluginGetCCDTime(var Hour,Min,Sec,MSec:Word); cdecl;
begin
Hour:=1;
Min:=32;
Sec:=21;
MSec:=0;
end;
procedure PluginGetCCDDateEnd(var Year,Month,Day:Word); cdecl; Cette fonction est utilisée par TeleAuto pour connaître
la date d'acquisition de l'image qui vient d'être prise.
Attention, cette date correspond à l'instant de fin de pose
dans TeleAuto en Temps Universel.
Cette fonction est appelée aprés la lecture du CCD dans
TeleAuto.
procedure PluginGetCCDDate(var Year,Month,Day:Word); cdecl;
begin
Year:=2001;
Month:=7;
Day:=25;
end;
procedure PluginGetCCDTimeEnd(var Hour,Min,Sec,MSec:Word); cdecl; Cette fonction est utilisée par TeleAuto pour connaître
l'heure d'acquisition de l'image qui vient d'être prise.
Attention, cette date correspond à l'instant de fin de pose
dans TeleAuto en Temps Universel.
Cette fonction est appelée aprés la lecture du CCD dans
TeleAuto.
procedure PluginGetCCDTime(var Hour,Min,Sec,MSec:Word); cdecl;
begin
Hour:=1;
Min:=32;
Sec:=21;
MSec:=0;
end;
function PluginGetTemperature:Double; cdecl; Lorsque la caméra possède un capteur de température
(voir la fonction PluginHasTemperature plus loin) cette fonction est utilisée
pour lire la température du capteur CCD en degrés.
Cette fonction est appelée toutes les secondes par TeleAuto.
function PluginGetTemperature:Double; cdecl;
begin
Result:=10;
end;
procedure PluginSetTemperature(TargetTemperature:Double); cdecl; Lorsque la caméra possède un capteur de température
(voir la fonction PluginHasTemperature plus loin) cette procédure
est utilisée pour envoyer la température de consigne choisie
par l'utilisateur vers la caméra.
Cette procédure est appelée à tous les changements
de consigne dans la fenêtre de configuration.
procedure PluginSetTemperature(TargetTemperature:Double); cdecl;
begin
end;
procedure PluginSetPCMinusUT(_PCMinusUT:Double); cdecl; Cette procédure permet de connaitre la difference de temps entre
l'heure du PC et l'heure TU entrée dans la fenêtre de configuration
et ainsi corriger l'heure PC lue dans le plugin pour la transformer en
heure TU. Cette procedure est appelée par TeleAuto à la connexion
de la caméra et à chanque changement de la différence
PC-TU dans la fenêtre de configuration si la camera est connectée.
procedure PluginSetPCMinusUT(_PCMinusUT:Double); cdecl;
begin
end;
procedure PluginAmpliOn; cdecl; Lorsque la caméra permet de couper l'amplificateur de sortie
du capteur CCD, cette procédure est utilisée par TeleAuto
pour allumer l'amplificateur en fin de pose.
procedure PluginAmpliOn; cdecl;
begin
end;
procedure PluginAmpliOff; cdecl; Lorsque la caméra permet de couper l'amplificateur de sortie
du capteur CCD, cette procédure est utilisée par TeleAuto
pour couper l'amplificateur en début de pose.
procedure PluginAmpliOff; cdecl;
begin
end;
procedure PluginShutterOpen; cdecl; Lorsque la caméra à un obturateur, cette procédure
est appelée pour ouvrir cet obturateur et le maintenir ouvert jusqu'à
nouvel ordre.
Cette procédure n'est pas encore utilisée par TeleAuto.
procedure PluginShutterOpen; cdecl;
begin
end;
procedure PluginShutterClosed; cdecl; Lorsque la caméra à un obturateur, cette procedure est
appelée pour fermer cet obturateur et le maintenir fermé
jusqu'à nouvel ordre.
Cette procédure est appelée par TeleAuto avant toute
acquisition d'offset ou de noir.
procedure PluginShutterClosed; cdecl;
begin
end;
procedure PluginShutterSynchro; cdecl; Lorsque la caméra à un obturateur, cette procedure est
appelée pour synchroniser cet obturateur sur les acquisitions.
Cette procédure est appelée par TeleAuto aprés
toute acquisition d'offset ou de noir.
procedure PluginShutterSynchro; cdecl;
begin
end;
function PluginGetName:PChar; cdecl; Cette fonction est appelée par TeleAuto pour connaître
le nom de la caméra.
Pour la ST7 :
function PluginGetName:PChar; cdecl;
begin
Result:='ST7';
end;
function PluginGetSaturationLevel:Integer; cdecl; Cette fonction est appelée par TeleAuto pour connaitre le niveau
de saturation de la caméra en ADU
function PluginGetSaturationLevel:Integer; cdecl;
begin
Result:=32767; // To modify
end;
function PluginGetXSize:Integer; cdecl; Cette fonction doit retourner la nombre de pixels d'une ligne de la
matrice CCD.
Pour les caméras à base de KAF400 elle prendrait la forme
:
function PluginGetXSize:Integer; cdecl;
begin
Result:=768;
end;
function PluginGetYSize:Integer; cdecl; Cette fonction doit retourner la nombre de lignes de la matrice CCD.
Pour les caméras à base de KAF400 elle prendrait la forme
:
function PluginGetYSize:Integer; cdecl;
begin
Result:=512;
end;
function PluginGetXPixelSize:Double; cdecl; Cette fonction est appelée par TeleAuto pour connaître
la taille des pixels de la caméra dans le sens des lignes en micromètres.
Pour un KAF400 :
function PluginGetXPixelSize:Double; cdecl;
begin
Result:=9; // To modify
end;
function PluginGetYPixelSize:Double; cdecl; Cette fonction est appelée par TeleAuto pour connaître
la taille des pixels de la caméra dans le sens des colonnes en micromètres.
Pour un KAF400 :
function PluginGetYPixelSize:Double; cdecl;
begin
Result:=9;
end;
function PluginGetNbplan:Integer; cdecl; Cette fonction est appelée par TeleAuto pour connaître
le nombre de plan de couleur de l'image. Peut prendre la valeur 1 pour
une image noir/blanc ou 3 pour une image couleur.
function PluginGetNbplan:Integer; cdecl;
begin
Result:=1;
end;
function PluginGetTypeData:Integer; cdecl; Cette fonction est appelée par TeleAuto pour connaître
le type de donnée de l'image. Peut prendre la valeur 2 pour une
image noir/blanc 16 bits ou 7 pour une image couleur.
function PluginGetTypeData:Integer; cdecl;
begin
Result:=2;
end;
function PluginIsAValidBinning(Binning:Byte):Boolean; cdecl; Cette fonction est appelée par TeleAuto pour connaître
les valeurs de Binning qui peuvent être utilisées avec la
caméra.
Pour l'instant seuls les binnings 1x1,2x2,3x3,4x4 sont utilisés
par TeleAuto. Le binning 4x4 est utilisé préférenciellement
au 3x3.
Pour une ST7 :
function PluginIsAValidBinning(Binning:Byte):Boolean; cdecl;
begin
if (Binning=1) or (Binning=2) or (Binning=3) then Result:=True
else Result:=False;
end;
function PluginHasTemperature:Boolean; cdecl; Cette fonction est appelée par TeleAuto pour savoir si la caméra
à un capteur de température qui peut être lu.
Pour une ST7, c'est le cas :
function PluginHasTemperature:Boolean; cdecl;
begin
Result:=True;
end;
function PluginCanCutAmpli:Boolean; cdecl; Cette fonction est appelée par TeleAuto pour savoir si l'amplificateur
de sortie du capteur CCD de la caméra peut être coupé
pendant la pose.
Pour une ST7, ce n'est pas le cas :
function PluginCanCutAmpli:Boolean; cdecl;
begin
Result:=False;
end;
function PluginGetDelayToSwitchOffAmpli:Double; cdecl; Cette fonction est appelée par TeleAuto pour savoir quel est
le délai qu'il doit respecter entre le début de la pose et
la coupure de l'amplificateur de sortie.
Par exemple :
function PluginGetDelayToSwitchOffAmpli:Double; cdecl;
begin
Result:=1;
end;
function PluginGetDelayToSwitchOnAmpli:Double; cdecl; Cette fonction est appelée par TeleAuto pour savoir quel est
le délai qu'il doit respecter entre l'allumage de l'amplificateur
de sortie et la fin de pose.
Par exemple :
function PluginGetDelayToSwitchOnAmpli:Double; cdecl;
begin
Result:=4;
end;
function PluginNeedEmptyingDelay:Boolean; cdecl; Cette fonction est appelée par TeleAuto pour savoir si il doit
fournir le délai de vidage de la matrice donné par l'utilisateur.
Par exemple, pour la ST7 :
function PluginNeedEmptyingDelay:Boolean; cdecl;
begin
Result:=False;
end;
function PluginNeedReadingDelay:Boolean; cdecl; Cette fonction est appelée par TeleAuto pour savoir si il doit
fournir le délai de ralentissement de la lecture de la matrice donné
par l'utilisateur.
Par exemple, pour la ST7 :
function PluginNeedReadingDelay:Boolean; cdecl;
begin
Result:=False;
end;
function PluginNeedCloseShutterDelay:Boolean; cdecl; Cette fonction est appelée par TeleAuto pour savoir si il doit
fournir le délai de délai de fermeture de l'obturateur donné
par l'utilisateur.
Par exemple, pour la ST7 :
function PluginNeedCloseShutterDelay:Boolean; cdecl;
begin
Result:=False;
end;
function PluginHasAShutter:Boolean; cdecl; Cette fonction est appelée par TeleAuto pour savoir si la caméra
a un obturateur.
Par exemple, pour la ST7 :
function PluginHasAShutter:Boolean; cdecl;
begin
Result:=True;
end;
procedure PluginIsUsedUnderNT; cdecl; Cette fonction est appelée par TeleAuto pour indiquer au plugin
si il est utilisé sous NT/2000/XP.
Ceci permet de sauter le masquage des interruptions qui provoquerais
une erreur sous ces OS.
// Exemple :
// if not OSiSNT then asm cli end;
procedure PluginIsUsedUnderNT; cdecl;
begin
OSiSNT:=True;
end;
procedure PluginIsNotUsedUnderNT; cdecl; Cette fonction est appelée par TeleAuto pour indiquer au plugin
si il est utilisé sous NT/2000/XP.
Ceci permet de sauter le masquage des interruptions qui provoquerais
une erreur sous ces OS.
procedure PluginIsNotUsedUnderNT; cdecl;
begin
OSiSNT:=False;
end;
procedure PluginSetHourServer(ServerAdress:Pointer); cdecl; Cette fonction permet de connaître l'adresse de la fonction GetHour
interne à TeleAuto
Elle pourra être ainsi appelé par le plugin pour connaître
l'heure donnée par le serveur d'heure choisit par l'utilisateur
procedure PluginSetHourServer(ServerAdress:Pointer); cdecl;
begin
@GetHour:=ServerAdress;
end;
La déclaration de cette fonction dans le plugin est la suivante
:
type
// Prototype of the TeleAuto function you can call to have precise
hour // New in version 2.8
TGetHour = procedure (var Year,Month,Day,Hour,Min,Sec,MSec:Word);
var
// TeleAuto function giving precise hour // New in version 2.8
GetHour:TGetHour;
function PluginIs16Bits:Boolean; cdecl; Cette fonction permet de signaler si la caméra pilotée posséde
un convertisseur 16 bits. Dans ce cas elle doit retourner la valeur True.
Cette fonction combinée à la modification des valeurs des intensités
dans la fonction PluginReadCCD permet d'utiliser toute la dynamique du CCD.
function PluginIs16Bits:Boolean; cdecl;
begin
Result:=True;
end;
function PluginHasCfgWindow:Boolean; cdecl;
Cette function permet à TeleAuto de savoir si le plugin permet d'afficher une fenêtre
de configuration spécifique.
function PluginHasCfgWindow:Boolean; cdecl;
// New in Version 2.97
// Here you must return true if this plugin can display a configuration window
begin
Result:=False;
end;
function PluginShowCfgWindow:Boolean; cdecl;
Cette fonction permet à TeleAuto d'appeler cette fenêtre.
function PluginShowCfgWindow:Boolean; cdecl;
// New in Version 2.97
// Here you can show the custom configuration window
begin
Result:=True;
//Here you put the code to create and display the configuration window
//See the plugin below to have an Delphi exemple
end;
Voici quelques informations qui je l'espère vous seront utiles
:
Tout d'abord les conventions d'appel des fonctions est celui du C pour
faciliter l'écriture de plugins dans ce language.
Les chaînes de caratères utilisées sont à
zéro terminal toujours pour faciliter l'écriture de plugins
en C.
Concernant les types de données delphi, voici quelques informations
qui devraient vous permettre de faire la correspondance avec votre langage
:
Nom du type
Etendue
Format
Smallint
–32768..32767
Entier 16 bits signé
Integer
–2147483648..2147483647
Entier 32 bits signé
Word
0..65535
Entier 16 bits non signé
Double
5.0 x 10^–324 .. 1.7 x 10^308
Flottant 8 octets
Le type Boolean occupe un octet en mémoire. Il prends la valeur
False quand sa valeur numérique équivalente est 0 et la valeur
True pour toutes les autres valeurs numériques équivalentes.
Le type PTabImgInt qui permet de stocker des images dans TeleAuto est
un pointeur sur une structure contenant les lignes de l'image mises bout
à bout en mémoire.