Cette page vous explique comment programmer sous Delphi un plugin qui
vous permettra de piloter votre dome d'observatoire ou votre toit roulant
à partir de TeleAuto Version 2.62 et supérieures. Pour l'instant
ce plugin à le minimum de fonctions nécessaires au pilotage
d'un toit roulant. Le fonctions de demande de déplacement d'un dome
seront ajoutées dans le futur selon vos besoins.
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.
Quel est l'interêt d'avoir un plugin dome dans TeleAuto ?
La programmation des interfaces avec le matériel en général
et avec les domes en particulier et extrèmement délicat et
nécéssite presque obligatoirement de posséder le dome
en question. Les auteurs de TeleAuto n'étant pas assez fortunés
pour acheter toutes les domes 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
dome ou leur toit roulant. Les auteurs n'auront plus à s'occuper
d'écrire et maintenir les drivers pour d'autres domes. Ceci est
un avantage car l'écriture d'un tel driver est très aléatoire
sans avoir le dome branchée au PC. De plus il est nésessaire,
de tester chaque dome à chaque mises à jour de la partie
dome de TeleAuto. Au prix d'un petit travail de programmation, les utilisateurs
auront l'assurance de voir leur dome correctement fonctionner et mis à
jour dans TeleAuto, chose impossible à garantir pour les auteurs.
Comment se présente le plugin Dome ?
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 dome. Par exemple préférez 'RoboDome.dll' à
'Dome.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 'Dome' de la fenêtre de configuration de TeleAuto.
Pour se faire, cliquez sur le type de dome '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.
function PluginIsConnectedAndOK:Boolean; cdecl; Cette fonction doit tester si le dome est connecté 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 du
dome.
function PluginIsConnectedAndOK:Boolean; cdecl;
begin
Result:=True;
end;
procedure PluginOpenDome; cdecl; Cette fonction doit lancer les commandes d'ouverture du dome. Elle
est appelée par TeleAuto lorsque l'utilisateur appuie sur la touche
'Ouvrir' de la raquette de commande du dome.
procedure PluginOpenDome; cdecl;
begin
// Mettre ici les commandes d'ouverture
// La variable DomeIsOpen déclarée dans la librairie
permet de stocker l'état du dome;
DomeIsOpen:=True;
end;
procedure PluginCloseDome; cdecl; Cette fonction doit lancer les commandes de fermeture du dome. Elle
est appelée par TeleAuto lorsque l'utilisateur appuie sur la touche
'Fermer' de la raquette de commande du dome.
procedure PluginCloseDome; cdecl;
begin
// Mettre ici les commandes de fermeture
DomeIsOpen:=False;
end;
function PluginIsOpen:Boolean; cdecl; Cette fonction permet de connaitre l'état du dome. Ell doit
renvoyer True si le dome est ouvert et False si le dome est fermé.
Elle est appelée toutes les secondes par TeleAuto pour mettre
a jour l'état du dome dans la raquette de commande du dome.
function PluginIsOpen:Boolean; cdecl;
begin
Result:=DomeIsOpen;
end;
function PluginNeedCoordinates:Boolean; cdecl; Cette fonction permet de savoir si on peut controler la position du dome
Elle doit retouner True si c'est le cas
function PluginNeedCoordinates:Boolean; cdecl;
begin
Result:=True;
end;
function PluginSetAzimuth(Azimuth:Double):Boolean; cdecl; Cette fonction permet de deplacer le dome sur l'azimuth demandé
Elle est appelé périodiquement par TeleAuto.
function PluginSetAzimuth(Azimuth:Double):Boolean; cdecl; begin
Result:=True;
end;
function PluginSetAltitude(Altitude:Double):Boolean; cdecl; Cette fonction permet de deplacer le dome sur la hauteur demandée
Elle est appelé périodiquement par TeleAuto.
function PluginSetAltitude(Altitude:Double):Boolean; cdecl; begin
Result:=True;
end;
procedure PluginClose; cdecl; Cette fonction est appelée quand l'utilisateur déconnecte le dome
ou quitte Teleauto. Mettez ici le code qui ferme et eteinds le dome
procedure PluginClose; cdecl; begin
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.
Le type Boolean occupe un octet en mémoire. Il prend la valeur
False quand sa valeur numérique équivalente est 0 et la valeur
True pour toutes les autres valeurs numériques équivalentes.