Comment communiquer avec C2A au travers d'un socket TCP ?

C2A offre la possibilité à une application tierce de communiquer au travers d'un port TCP. Cette fonctionnalité est utile par exemple pour connaître les caractéristiques de la vue courante ou bien pour forcer l'affichage d'un champ particulier.

C2A communique avec une application tierce au travers du port TCP 5876. Les commandes qu'il est possible d'envoyer à C2A, ainsi que les réponses faites par C2A au travers du même port, sont décrites dans le tableau suivant. La casse sur les noms de commande est ignorée par C2A (ainsi que sur les éventuelles valeurs passées en paramètres). Toutes les commandes doivent se terminer par un caractère ";". Toutes les valeurs numériques doivent utiliser le séparateur décimal international, c'est-à-dire le « . » (afin de faciliter le portage de scripts entre pays de paramètres linguistiques différents). Les paramètres des options internationales du système sur lequel tourne C2A sont donc ignorés.

Toutes les réponses aux commandes faites par C2A se terminent par les caractère ASCII CR suivi d’un LF (chr(13)+chr(10)). Si les commandes ont été correctement interprétées, C2A retourne une chaîne de caractères constituée des valeurs de retour séparées par des « ; » (si applicable) puis la chaîne OK (séparée des valeurs de retour par un « ; ») et enfin des caractères CR et LF. Si une erreur est rencontrée dans le traitement des commandes, un message d’erreur est retourné qui a la forme Error;<Error Message> suivi d’un CR+LF.

Commande

Réponse

Description

SetRA=<valeur>;

OK
Error;<message d'erreur>

Cette commande permet de spécifier l'ascension droite du centre de la vue courante. La valeur passée dans la commande doit être exprimée en heures décimales et être comprise entre 0 inclus et 24 exclus.

SetDE=<valeur>;

OK
Error;<message d'erreur>

Cette commande permet de spécifier la déclinaison du centre de la vue courante. La valeur passée dans la commande doit être exprimée en degrés décimaux et être comprise entre -90 inclus et 90 inclus.

SetFieldX=<valeur>;

OK
Error;<message d'erreur>

Cette commande permet de spécifier la largeur de la vue courante. La valeur passée dans la commande doit être exprimée en degrés décimaux et être comprise entre 0,00014 inclus et 200 inclus.

SetFieldY=<valeur>;

OK
Error;<message d'erreur>

Cette commande permet de spécifier la hauteur de la vue courante. La valeur passée dans la commande doit être exprimée en degrés décimaux et être comprise entre 0,00014 inclus et 200 inclus.

SetLatitude=<valeur>;

OK
Error;<message d'erreur>

Cette commande permet de spécifier la latitude du lieu d'observation courant. La valeur passée dans la commande doit être exprimée en degrés décimaux et être comprise entre -90 inclus et 90 inclus. Les latitudes doivent être comptées positivement au Nord et négativement au Sud.

SetLongitude=<valeur>;

OK
Error;<message d'erreur>

Cette commande permet de spécifier la longitude du lieu d'observation courant. La valeur passée dans la commande doit être exprimée en degrés décimaux et être comprise entre -180 inclus et 180 inclus. Les longitudes doivent être comptées positivement à l'Est et négativement à l'Ouest.

SetDateTime=<valeur>;

OK
Error;<message d'erreur>

Cette commande permet de spécifier la date et l'heure courantes à utiliser dans C2A. Les valeurs possibles passées en paramètre sont les suivantes:
currentut   On demande à C2A d'utiliser la date et l'heure courante du système en faisant l'hypothèse que le système est réglé sur le Temps Universel.
currentlocal   On demande à C2A d'utiliser la date et l'heure courante du système en faisant l'hypothèse que le système est à l'heure locale.
DD/MM/AAAA hh:mm:ss   On demande à C2A d’utiliser une date et une heure fixes qui sont passées en paramètre. L’heure doit impérativement être fournie en Temps Universel. Les formats de la date et de l’heure doivent toujours être conformes au format indiqué, c’est à dire le jour, le mois, l’année, les heures, les minutes et enfin les secondes. Toutes les valeurs doivent impérativement être fournies sur 2 caractères (4 pour l’année) et donc être complétées par des 0.

SetMapType=<valeur>;

OK
Error;<message d'erreur>

Cette commande permet de spécifier le type de la carte à utiliser dans la vue courante. Les deux valeurs possibles qui peuvent être passées en paramètre correspondent aux deux types de carte possibles dans C2A, c’est à dire :
field   On demande à C2A d’afficher une vue de type « champ » (c’est à dire avec les Nord en haut de l’écran si aucune rotation et symétrie n’est réalisée). C’est uniquement sur ce type de vue que l’on peut réaliser des symétries (horizontale ou verticale) et des rotations.
horizon   On demande à C2A d’afficher une vue de type « horizon » (c’est à dire une vue orientée de telle façon que l’horizon le plus proche soit en bas de l’écran). Dans ce type de vue, il n’est pas possible de réaliser des symétries et des rotations.

SetHSymmetry=<valeur>;

OK
Error;<message d'erreur>

Cette commande permet d’indiquer que l’on souhaite réaliser une symétrie horizontale sur le champ courant. Elle ne peut être utilisée que dans les vues de type « champ » (i.e. elle est ignorée si la vue courante est de type « horizon »).

SetVSymmetry=<valeur>;

OK
Error;<message d'erreur>

Cette commande permet d’indiquer que l’on souhaite réaliser une symétrie verticale sur le champ courant. Elle ne peut être utilisée que dans les vues de type « champ » (i.e. elle est ignorée si la vue courante est de type « horizon »).

SetRotation=<valeur>;

OK
Error;<message d'erreur>

Cette commande permet de spécifier la rotation à appliquer sur le champ courant. Cette rotation doit être exprimée en degrés dans le sens trigonométrique et être comprise entre -359,999 inclus et 359,999 inclus. L’application d’une rotation au champ ne peut être effectuée que dans les vues de type « champ » (i.e. elle est ignorée si la vue courante est de type « horizon »).

SetFieldMarker=<id>,<valx>,<valy>,<rot>;

OK
Error;<message d'erreur>

Cette commande permet de spécifier un repère de champ CCD rectangulaire. Elle est équivalente à la mise en place dans l'interface de C2A d'un repère de champ CCD de type Rectangle 2 (voir la section Repères de champ). Cette commande comporte 4 arguments séparés par des virgules: <id> doit impérativement être A ou B pour indiquer quel repère de champ on veut spécifier. <valx> est la dimension du repère de champ sur l'axe X et <valy> est la dimension du repère de champ sur l'axe Y. Ces deux valeurs doivent être exprimées en degrés décimaux et être comprises entre 0 et 90° inclus. Si ces valeur sont non entières, le point doit être utilisé comme séparateur décimal. Enfin, <rot> est la rotation à appliquer sur le repère de champ (dans le sens trigonométrique). Cette rotation doit être comprise entre 0 et 360° non inclus et elle peut peut être non entière (auquel cas le point doît être utilisé comme séparateur décimal).

GetRa;

<valeur>;OK
Error;<message d'erreur>

La commande GetRa permet d’obtenir en retour l’ascension droite du centre de la vue courante. La valeur retournée est exprimée en heures décimales.

GetRaHms;

<xxhyymzzs>;OK
Error;<message d'erreur>

La commande GetRaHms permet d’obtenir en retour l’ascension droite du centre de la vue courante (tout comme la commande GetRa) mais exprimée sous la forme « xxhyymzzs » ou xx, yy et zz sont les valeurs des heures, minutes et secondes sur 2 chiffres.

GetDe;

<valeur>;OK
Error;<message d'erreur>

La commande GetDe permet d’obtenir en retour la déclinaison du centre de la vue courante. La valeur retournée est exprimée en degrés décimaux.

GetDeDms;

<xx°yy’zz">;OK
Error;<message d'erreur>

La commande GetDeHms permet d’obtenir en retour la déclinaison du centre de la vue courante (tout comme la commande GetDe) mais exprimée sous la forme « xxºyy’zz" » ou xx, yy et zz sont les valeurs des degrés, minutes et secondes sur 2 chiffres.

GetFieldX;

<valeur>;OK
Error;<message d'erreur>

La commande GetFieldX permet d’obtenir en retour la largeur de la vue. La valeur retournée est exprimée en degrés décimaux.

GetFieldXDms;

<xx°yy’zz">;OK
Error;<message d'erreur>

La commande GetFieldXDms permet d’obtenir en retour la largeur de la vue (tout comme la commande GetFieldX mais exprimée sous la forme « xxºyy’zz" » ou xx, yy et zz sont les valeurs des degrés, minutes et secondes sur 2 chiffres.

GetFieldY;

<valeur>;OK
Error;<message d'erreur>

La commande GetFieldY permet d’obtenir en retour la hauteur de la vue. La valeur retournée est exprimée en degrés décimaux.

GetFieldYDms;

<xx°yy’zz">;OK
Error;<message d'erreur>

La commande GetFieldYDms permet d’obtenir en retour la hauteur de la vue (tout comme la commande GetFieldY) mais exprimée sous la forme « xxºyy’zz" » ou xx, yy et zz sont les valeurs des degrés, minutes et secondes sur 2 chiffres.

GetLatitude;

<valeur>;OK
Error;<message d'erreur>

Cette commande permet d’obtenir la latitude du lieu d'observation courant utilisé dans C2A. La valeur retournée est exprimée en degrés décimaux et est comprise entre -90 inclus et 90 inclus. Les latitudes sont comptées positivement au Nord et négativement au Sud.

GetLatitudeDms;

<xx°yy’zz">;OK
Error;<message d'erreur>

La commande GetLatitudeDms permet d’obtenir la latitude du lieu d'observation courant (tout comme la commande GetLatitude) mais exprimée sous la forme « xxºyy’zz" » ou xx, yy et zz sont les valeurs des degrés, minutes et secondes sur 2 chiffres. Les latitudes sont comptées positivement au Nord et négativement au Sud.

GetLongitude;

<valeur>;OK
Error;<message d'erreur>

Cette commande permet d’obtenir la longitude du lieu d'observation courant utilisé dans C2A. La valeur retournée est exprimée en degrés décimaux et est comprise entre -180 inclus et 180 inclus. Les longitudes sont comptées positivement à l'Est et négativement à l'Ouest.

GetLongitudeDms;

<xx°yy’zz">;OK
Error;<message d'erreur>

La commande GetLongitudeDms permet d’obtenir la longitude du lieu d'observation courant (tout comme la commande GetLongitude) mais exprimée sous la forme « xxºyy’zz" » ou xx, yy et zz sont les valeurs des degrés, minutes et secondes sur 2 chiffres. Les longitudes sont comptées positivement à l'Est et négativement à l'Ouest.

GetDateTimeUT;

<DD/MM/AAAA hh:mm:ss>;OK
Error;<message d'erreur>

Cette commande retourne la date et l’heure courantes exprimées en Temps Universel et qui sont utilisées par C2A dans la carte courante. Le format retourné est toujours le même quel que soit le réglage des options régionales sur le système Windows sur lequel tourne C2A, c’est à dire le jour, le mois, l’année, les heures, les minutes et enfin les secondes. Toutes les valeurs sont fournies sur 2 caractères (4 pour l’année) et sont donc complétées par des 0.

GetDateTimeLocal;

<DD/MM/AAAA hh:mm:ss>;OK
Error;<message d'erreur>

Cette commande retourne la date et l’heure locales courantes utilisées par C2A. Le format retourné est toujours le même quel que soit le réglage des options régionales sur le système Windows sur lequel tourne C2A, c’est à dire le jour, le mois, l’année, les heures, les minutes et enfin les secondes. Toutes les valeurs sont fournies sur 2 caractères (4 pour l’année) et sont donc complétées par des 0.

GetDeltaUTC;

<valeur>;OK
Error;<message d'erreur>

Cette commande retourne l’écart entre l’heure locale et le Temps Universel Coordonné (UTC), appelé aussi heure GMT moyenne du méridien de Greenwich, tel qu’il est paramétré dans la configuration courante de C2A. Cette valeur peut être non entière et est exprimée en heures.

GetMapType;

<valeur>;OK
Error;<message d'erreur>

Cette commande retourne le type de la carte courante affichée dans C2A. Les valeurs de retour possibles sont :
field   Cette valeur est retournée lorsque la vue courante est de type « champ » (c’est à dire avec le Nord en haut de l’écran si aucune rotation et symétrie n’est réalisée).
horizon   Cette valeur est retournée lorsque la vue courante est de type « horizon » (c’est à dire une vue orientée de telle façon que l’horizon le plus proche soit en bas de l’écran).

GetHSymmetry;

<valeur>;OK
Error;<message d'erreur>

Cette commande permet de savoir si la carte courante affichée dans C2A possède une symétrie horizontale. A noter que seules les cartes de type « champ » peuvent posséder une symétrie. Les valeurs de retour possible sont :
True   La carte courante possède une symétrie horizontale
False   La carte courante ne possède pas de symétrie horizontale
N/A   La carte courante n’est pas de type « champ » et la propriété de symétrie ne peut pas être utilisée.

GetVSymmetry;

<valeur>;OK
Error;<message d'erreur>

Cette commande permet de savoir si la carte courante affichée dans C2A possède une symétrie verticale. A noter que seules les cartes de type « champ » peuvent posséder une symétrie. Les valeurs de retour possible sont :
True   La carte courante possède une symétrie verticale
False   La carte courante ne possède pas de symétrie verticale
N/A   La carte courante n’est pas de type « champ » et la propriété de symétrie ne peut pas être utilisée.

GetRotation;

<valeur>;OK
Error;<message d'erreur>

Cette commande permet de connaître la rotation du champ courant de C2A. A noter que seules les cartes de type « champ » peuvent posséder une rotation (les cartes de type « horizon » sont toujours orientées de telle façon que l’horizon le plus proche soit en bas de l’écran). La valeur retournée est exprimée en degrés et elle est comprise entre -359,999 et 359,999. Si la carte courante est de type « horizon », la valeur retournée est N/A.

Quit;

<valeur>;OK
Error;<message d'erreur>

Cette commande permet de demander à C2A de terminer son exécution. Toutes les autres commandes passées dans la même séquence sont traitées avant que la session C2A ne soit fermée. Si une erreur est rencontrée pendant le traitement des commandes, la session C2A n’est pas arrêtée.

Plusieurs commandes peuvent être envoyées en même temps au travers du socket TCP. Il suffit pour cela qu'elles soient séparées par un caractère ";" (il ne doit pas y avoir de caractère espace entre les commandes). Lorsque plusieurs commandes sont envoyées dans la même séquence TCP, elles sont globalement interprétées et validées avant que les actions correspondantes ne soient prises par C2A. Si toutes les commandes envoyées sont correctes, une seule réponse « OK » est renvoyée par C2A, précédée éventuellement des valeurs de retour fournies dans le même ordre que celui dans lequel les commandes ont été envoyées. Les valeurs de retour sont séparées par des points virgules.

Si une commande n’est pas reconnue, C2A retourne une erreur et aucune commande de la séquence initiale n’est interprétée.

Exemples

La commande suivante demande à C2A la création d’une carte avec les caractéristiques suivantes:
• Le type de la carte est « champ »;
• La carte est centre sur le point RA=12.7 heures et DE=43.2 degrés;
• La carte a une valeur de champ de 1°x1°;
• L’heure locale courante du système doit être utilise pour le calcul de la carte;
• On utilise un point d’observation avec une latitude de 43.2° Nord et une longitude de 1.5° Est;
• On applique à la carte une symétrie horizontale et une rotation de 45° (ce qui est autorisé puisque la carte est de type « champ »).

SetRa=12.7;SetDe=43.2;SetFieldX=1;SetFieldY=1;SetDateTime=currentLoc;SetLatitude=43.2;
SetLongitude=1.5;SetMapType=field;SetHSymmetry=true;SetVSymmetry=false;SetRotation=45;

C2A affiche alors la carte et retourne

OK

La commande suivante demande à C2A de retourner toutes les caractéristiques de la carte courante:

getRa;getRaHms;getDe;getDeDms;getFieldX;getFieldXDms;getFieldY;getFieldYDms;
getLatitude;getLatitudeDms;getLongitude;getLongitudeDms;getDeltaUTC;getMapType;
getDateTimeUT;getDateTimeLocal;getHSymmetry;getVSymmetry;getRotation;

Les valeurs retournées par C2A sont toutes mises bout à bout dans une seule chaîne de caractères :

12.699722;12h41m59s;43.200000;43°12'00\";1.000000;01°00'00\";1.000000;01°00'00\";
43.211111;43°12'40\";1.516111;1°30'58\";2;field;
04/10/2008 07:27:08;04/10/2008 09:27:08;true;false;45.000000;OK

Sommaire