- Timestamp:
- Apr 2, 2012, 10:56:55 AM (12 years ago)
- Location:
- BAORadio/libindi/libindi
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
BAORadio/libindi/libindi/BAOControl/bao_catalogue.dat
r643 r650 1 [star 0] 2 name=POLARIS 3 const=UMi 4 ar=02:31:49.6 5 de=89:15:50.9 6 mag=1.97 7 1 8 [star 1] 2 9 name=KOCAB -
BAORadio/libindi/libindi/BAOControl/baocontrol.cpp
r648 r650 34 34 * Laboratoire de l'Accélérateur Linéaire *\n \ 35 35 * *\n \ 36 * v0.5 23/02/2012 *\n \36 * v0.51 02/04/2012 *\n \ 37 37 * franckrichard033@gmail.com *\n \ 38 38 ******************************************\n\n\n", true); … … 1040 1040 1041 1041 /************************************************************************************** 1042 ** Envoie une commande aux antennes 1043 ** exemples : P, Z, A, Gf1000f0100 1044 ** 1045 ***************************************************************************************/ 1046 1047 bool BAOcontrol::EnvoyerCommande(string commande) 1048 { 1049 stringstream os; 1050 1051 try 1052 { 1053 *client_socket << "<newTextVector device=\"BAO\" name=\"COMMAND_SET\">"; 1054 *client_socket << "<oneText name=\"COMMAND\">"; 1055 *client_socket << commande; 1056 *client_socket << "</oneText>"; 1057 *client_socket << "</newTextVector>"; 1058 1059 if (!VerifReponse("name=\"COMMAND_SET\" state=\"Ok\"")) 1060 { 1061 ErreurLog("ERREUR fct EnvoyerCommande : pas de réponse du pilote indi_BAO.\n\n"); 1062 1063 return false; 1064 } 1065 } 1066 1067 // un problÚme ? 1068 1069 catch ( SocketException& e ) 1070 { 1071 ErreurLog("Exception was caught:" + e.description() + "\n"); 1072 1073 return false; 1074 } 1075 1076 return true; 1077 } 1078 1079 1080 1081 /************************************************************************************** 1042 1082 ** Place les antennes en position de repos 1043 1083 ** … … 1467 1507 // (et donc accessibles à l'antenne) 1468 1508 1469 for (i= 1; i<numEtoiles; i++)1509 for (i=0; i<numEtoiles; i++) 1470 1510 { 1471 1511 Azimut(Etoiles[i].ad, Etoiles[i].de, &Etoiles[i].az, &Etoiles[i].ha); … … 1513 1553 // pour calibrer l'antenne 1514 1554 1515 for (i= 1; i<numEtoiles; i++)1555 for (i=0; i<numEtoiles; i++) 1516 1556 { 1517 1557 if ( Etoiles[i].selectionnee ) … … 2049 2089 2050 2090 2091 // Envoyer une commande aux antennes 2092 2093 if (chaine.find("send")!=string::npos) 2094 { 2095 string commande; 2096 2097 CommandeOK = true; 2098 2099 if (DecompositionCommande(chaine, "send", &commande, NULL)) 2100 { 2101 switch (commande[0]) 2102 { 2103 case 'g' : commande[0]='G'; break; 2104 case 'a' : commande[0]='A'; break; 2105 case 'z' : commande[0]='Z'; break; 2106 case 'p' : commande[0]='P'; break; 2107 } 2108 2109 if (!EnvoyerCommande((string)commande)) 2110 { 2111 ErreurLog("Erreur ! La commande n'a pas un format correct !"); 2112 } 2113 else 2114 { 2115 AfficherLog("Lire le retour de la commande dans la fenêtre indiserver.\n\n", true); 2116 } 2117 } 2118 } 2119 2120 2121 2051 2122 // correction de l'alignement d'une antenne par rapport à l'objet visé 2052 2123 … … 2285 2356 cout << "align ip : Lance la procédure d'alignement de l'antenne d'adresse ip." << endl; 2286 2357 cout << "reset ip : Réinitialise les paramÚtres d'alignement de l'antenne d'adresse ip." << endl; 2287 cout << "set transit on : Active le mode de suivi transit." << endl; 2358 cout << "send comm : Envoie la commande 'comm' aux antennes." << endl; 2359 cout << " exemples : send P, send A, send Gf1000f1000" << endl; 2360 cout << "set transit on : Active le mode de suivi transit." << endl; 2288 2361 cout << "set transit delay x : Fixe la durée entre deux actualisations à x seconde(s) dans le mode transit" << endl; 2289 2362 cout << "set tracking on : Active le mode de suivi tracking." << endl; … … 3030 3103 UpdateTime(); 3031 3104 3032 numEtoiles = 1;3105 numEtoiles = 0; 3033 3106 3034 3107 // Lecture des étoiles 3035 3108 3036 section = "star 1";3109 section = "star 0"; 3037 3110 key = "name"; 3038 3111 … … 3229 3302 3230 3303 ChoixCouleurs==1 ? IDLog(grey1) : IDLog(grey2); 3304 3305 AfficherLog(">" + chaine + "\n\n", false); 3231 3306 3232 3307 // on met en minuscules -
BAORadio/libindi/libindi/BAOControl/baocontrol.h
r648 r650 119 119 bool EnvoyerDelaisModesTransitEtTracking(); 120 120 bool EnvoyerMethodeAlignement(); 121 bool EnvoyerCommande(string commande); 121 122 bool Park(); 122 123 bool Abort(); -
BAORadio/libindi/libindi/BAOTest/BAOtest_main.cpp
r642 r650 225 225 std::cout << "MicrocontroÌleur : " << chaine; 226 226 227 std::cout << "Positionnement de l antenne...\n"; 228 } 227 std::cout << "Positionnement de l antenne...\n"; 228 } 229 230 // sleep(20); 229 231 230 232 // sleep(rand()%10); -
BAORadio/libindi/libindi/communs/logs.cpp
r644 r650 74 74 if ( (pFile = fopen(fichier.c_str(), "a")) != NULL) 75 75 { 76 // On le sauvegarde dans le fichier log 76 time_t rawtime; 77 struct tm * timeinfo; 78 79 char buffer[80]; 80 81 // On sauvegarde la date et l'heure 82 83 time ( &rawtime ); 84 timeinfo = localtime ( &rawtime ); 85 strftime (buffer,80,"%c ",timeinfo); 86 fprintf(pFile, buffer); 87 88 // On le sauvegarde dans le fichier log 77 89 78 90 fprintf(pFile, Message.c_str()); -
BAORadio/libindi/libindi/drivers/telescope/BAO.cpp
r648 r650 52 52 lastRA = 0.0; 53 53 lastDEC = 0.0; 54 54 55 55 // Jour julien de la derniÚre actualisation 56 56 57 57 JJAnc = 0.0; 58 58 59 59 // Variables d'état 60 60 61 currentSet = 0; 61 currentSet = 0; 62 62 63 63 // Nombre d'antennes connectées … … 68 68 69 69 TrackingMode = BAO_TRACKING; 70 70 71 71 // Méthode d'alignement par défaut 72 72 73 73 MethodeAlignement = SIMPLE; 74 74 … … 77 77 78 78 ActualisationTMTransit = 15.0 * 60.0; // Délai entre 2 actualisations dans le mode transit (en sec) 79 79 80 80 ActualisationTMTracking = 5.0; // " " tracking 81 81 … … 108 108 109 109 Exit = false; 110 110 111 111 // Initialisation des paramÚtres atmosphériques par défaut 112 112 113 113 Pression = 1013.0; 114 114 115 115 Temp = 10.0; 116 116 … … 135 135 // Numéro de version 136 136 137 IDLog("Indi server BAORadio...\n");138 IDLog("Driver Version: 23-02-2012\n");137 AfficherLog("Indi server BAORadio...\n"); 138 AfficherLog("Driver Version: 0.51 (02-04-2012)\n"); 139 139 140 140 //connect_telescope(); … … 172 172 // permet de savoir si le destructeur a bien été atteint 173 173 174 IDLog("Sortie de indi_BAO\n"); 174 AfficherLog("Sortie de indi_BAO\n"); 175 } 176 177 178 179 /************************************************************************************** 180 ** Affiche le message à l'écran puis sauvegarde le message dans le fichierBAO_indi.log 181 ** 182 ***************************************************************************************/ 183 184 void BAO::AfficherLog(const char* fmt,...) 185 { 186 static bool avertissement = false; 187 188 va_list ap; 189 190 FILE *pFile = NULL; 191 192 string fichier; 193 194 va_start (ap, fmt); 195 196 vfprintf (stderr, fmt, ap); 197 198 va_end (ap); 199 200 fichier = "/home/" + (string)getenv("USER") + "/BAO_indi.log"; 201 202 //Si le fichier log a une taille > 3M -> on efface le fichier 203 204 //if ( Taille(fichier) > TAILLEMAXLOGS ) remove(fichier.c_str()); 205 206 if ( (pFile = fopen(fichier.c_str(), "a")) != NULL) 207 { 208 time_t rawtime; 209 struct tm * timeinfo; 210 211 char buffer[80]; 212 213 // On sauvegarde la date et l'heure 214 215 time ( &rawtime ); 216 timeinfo = localtime ( &rawtime ); 217 strftime (buffer,80,"%c ",timeinfo); 218 fprintf(pFile, buffer); 219 220 // On sauvegarde le message dans le fichier log 221 va_start (ap, fmt); 222 223 vfprintf(pFile, fmt, ap); 224 225 va_end (ap); 226 227 fclose(pFile); 228 } 229 else 230 { 231 if (!avertissement) 232 { 233 string chaine = "Impossible d'écrire dans le fichier " + fichier +"\nMerci de vérifier les permissions\n"; 234 chaine += "ou exécutez le programme en mode superutilisateur.\n\n"; 235 236 va_start (ap, fmt); 237 238 vfprintf (stderr, chaine.c_str(), ap); 239 240 va_end (ap); 241 242 avertissement = true; 243 } 244 } 175 245 } 176 246 … … 246 316 IUFillNumberVector(&EquatorialCoordsWNP, EquatorialCoordsWN, NARRAY(EquatorialCoordsWN), mydev, "EQUATORIAL_EOD_COORD_REQUEST" , "Equatorial JNow", BASIC_GROUP, IP_WO, 0, IPS_IDLE); 247 317 318 //Command 319 IUFillText(&CommandT[0], "COMMAND", "Command", ""); 320 IUFillTextVector(&CommandTP, CommandT, NARRAY(CommandT), mydev, "COMMAND_SET", "Command", BASIC_GROUP, IP_WO, 0, IPS_IDLE); 321 248 322 // Geographic coord - SET 249 323 IUFillNumber(&GeographicCoordsWN[0], "LAT", "Lat D", "%10.6m", -90., 90., 0., 0.); … … 251 325 IUFillNumberVector(&GeographicCoordsWNP, GeographicCoordsWN, NARRAY(GeographicCoordsWN), mydev, "GEOGRAPHIC_COORD" , "Geographic coords", OPTIONS_GROUP, IP_WO, 0, IPS_IDLE); 252 326 253 327 // Pression température - SET 254 328 IUFillNumber(&PressionTempWN[0], "Pression", "Pression mb", "%10.6m", 0., 1500., 0., 0.); 255 329 IUFillNumber(&PressionTempWN[1], "Temperature", "Temperature °c", "%10.6m", -50., +50., 0., 0.); … … 266 340 267 341 /************************************************************************************** 268 ** Définition de tous les vecteurs de la boîte de dialogue INDI 342 ** Définition de tous les vecteurs de la boîte de dialogue INDI 269 343 ** Cette procédure doit être obligatoirement présente dans tous pilotes Indi 270 344 ** … … 280 354 IDDefSwitch(&ConnectSP, NULL); 281 355 IDDefText(&ObjectTP, NULL); 282 IDDefNumber(&EquatorialCoordsWNP, NULL); 356 IDDefNumber(&EquatorialCoordsWNP, NULL); 357 IDDefText(&CommandTP, NULL); 283 358 IDDefSwitch(&OnCoordSetSP, NULL); 284 359 IDDefSwitch(&AlignmentSP, NULL); … … 290 365 IDDefNumber(&ActualisationNP2, NULL); 291 366 IDDefNumber(&PressionTempWNP, NULL); 292 IDDefNumber(&GeographicCoordsWNP, NULL); 367 IDDefNumber(&GeographicCoordsWNP, NULL); 293 368 } 294 369 … … 309 384 ObjectTP.s = IPS_IDLE; 310 385 EquatorialCoordsWNP.s = IPS_IDLE; 386 CommandTP.s = IPS_IDLE; 311 387 PressionTempWNP.s = IPS_IDLE; 312 388 GeographicCoordsWNP.s = IPS_IDLE; … … 330 406 IDSetSwitch(&ParkSP, NULL); 331 407 IDSetText(&ObjectTP, NULL); 408 IDSetText(&CommandTP, NULL); 332 409 IDSetNumber(&EquatorialCoordsWNP, NULL); 333 410 IDSetNumber(&PressionTempWNP, NULL); … … 374 451 return; 375 452 } 453 454 455 // =================================== 456 // Commands 457 // =================================== 458 if (!strcmp (name, CommandTP.name)) 459 { 460 if (IUUpdateText(&CommandTP, texts, names, n) < 0) 461 return; 462 463 IText *eqp = IUFindText (&CommandTP, names[0]); 464 465 466 if (eqp == &CommandT[0]) 467 { 468 char chaine[100]; 469 470 bool result = false; 471 472 strcpy(chaine, texts[0]); 473 474 if (chaine[0] == 'G') 475 { 476 for (int i = 1; i<=strlen(chaine); i++) chaine[i-1]=chaine[i]; 477 478 IDLog(chaine); 479 480 for (int i = 1; i<SocketsNumber; i++ ) 481 { 482 if (Sockets[i].Connected) 483 { 484 result = COMMANDE(i, (char*)"G", chaine); 485 } 486 } 487 } 488 else 489 { 490 for (int i = 1; i<SocketsNumber; i++ ) 491 { 492 if (Sockets[i].Connected) 493 { 494 result = COMMANDE(i, chaine, (char*)""); 495 } 496 } 497 } 498 499 (result) ? CommandTP.s = IPS_OK : CommandTP.s = IPS_ALERT; 500 501 IDSetText(&CommandTP, NULL); 502 } 503 return; 504 } 376 505 } 377 506 … … 383 512 ** 384 513 ** const char *dev contient le nom du dispositif recevant le message (ici indi_BAO) 385 ** const char *name reçoit le nom de la rubrique modifiée par l'utilisateur 514 ** const char *name reçoit le nom de la rubrique modifiée par l'utilisateur 386 515 ** (ex : les coordonnées géographiques, les coordonnées horaires de l'objet etc...) 387 516 ** double names[] contient la liste de tous les champs modifiables dans chaque rubrique 388 517 ** (ex : longitude et latitude dans la rubrique coordonnées géographiques 389 ** char *values[] contient toutes les valeurs (numériques ou non) mais toujours exprimées 518 ** char *values[] contient toutes les valeurs (numériques ou non) mais toujours exprimées 390 519 ** sous la forme d'une chaîne de caractÚres 391 520 ** … … 477 606 { 478 607 // Vérification 479 // IDLog("Geographic : RA %5.2f - DEC %5.2f\n", Latitude, Longitude);608 // AfficherLog("Geographic : RA %5.2f - DEC %5.2f\n", Latitude, Longitude); 480 609 481 610 // nset vaut 2, nous sommes donc sûrs qu'il n'y a pas de problÚme dans les valeurs … … 483 612 // voir le code plus haut pour comprendre... 484 613 485 // On change la couleur de la "diode" de la rubrique coordonnées 614 // On change la couleur de la "diode" de la rubrique coordonnées 486 615 // géographiques de la boîte en vert 487 616 … … 575 704 fs_sexa(DecStr, newDEC, 2, 3600); 576 705 577 IDLog("We received JNow RA %s - DEC %s\n", RAStr, DecStr);706 AfficherLog("We received JNow RA %s - DEC %s\n", RAStr, DecStr); 578 707 579 708 // on convertit les coordonnées équatoriales de la zone du ciel observée … … 600 729 return; 601 730 } 602 603 731 732 604 733 // =================================== 605 734 // Pression, Temperature … … 642 771 643 772 if (nset == 2) 644 { 645 773 { 774 PressionTempWNP.s = IPS_OK; 646 775 647 776 IDSetNumber(&PressionTempWNP, NULL); 648 777 649 778 Pression = newPression; 650 779 Temp = newTemperature; 651 780 } 652 781 else … … 735 864 ** L'utilisateur clique sur l'un des boutons de la boîte Indi 736 865 ** Même observation que pour la procédure précédente 737 ** 866 ** 738 867 ***************************************************************************************/ 739 868 … … 786 915 787 916 MethodeAlignement = get_switch_index(&AlignmentSP) + 1 ; 788 789 /*char chaine[100]; 790 791 IDLog(chaine);*/792 793 917 918 /*char chaine[100]; 919 sprintf(chaine, "****************************************** %i\n", MethodeAlignement); 920 AfficherLog(chaine);*/ 921 922 AlignmentSP.s = IPS_OK; 794 923 IDSetSwitch(&AlignmentSP, NULL); 795 924 … … 827 956 EquatorialCoordsWNP.s = IPS_IDLE; 828 957 ObjectTP.s = IPS_IDLE; 958 CommandTP.s = IPS_IDLE; 829 959 830 960 IDSetSwitch(&ConnectSP, "Envoi de la commande Abort\n"); 831 961 IDSetNumber(&EquatorialCoordsWNP, NULL); 832 962 IDSetText(&ObjectTP, NULL); 963 IDSetText(&CommandTP, NULL); 833 964 } 834 965 … … 851 982 EquatorialCoordsWNP.s = IPS_IDLE; 852 983 ObjectTP.s = IPS_IDLE; 984 CommandTP.s = IPS_IDLE; 853 985 854 986 IDSetSwitch(&ConnectSP, "Envoi de la commande Park\n"); 855 987 IDSetNumber(&EquatorialCoordsWNP, NULL); 856 988 IDSetText(&ObjectTP, NULL); 989 IDSetText(&CommandTP, NULL); 857 990 } 858 991 … … 883 1016 884 1017 Sockets[SocketsNumber].IP = server.recupip(Sockets[SocketsNumber].new_sock); 885 886 887 888 Sockets[SocketsNumber++].Connected = true; 1018 1019 Sockets[SocketsNumber].AlignementAntenne->MethodeAlignement = MethodeAlignement; 1020 1021 Sockets[SocketsNumber++].Connected = true; 889 1022 890 1023 InitThreadOK = true; … … 892 1025 catch ( SocketException& e ) 893 1026 { 894 /* IDLog("Indi_BAO, pThreadSocket exception : ");895 IDLog(e.description().c_str());896 IDLog("\n");*/1027 /*AfficherLog("Indi_BAO, pThreadSocket exception : "); 1028 AfficherLog(e.description().c_str()); 1029 AfficherLog("\n");*/ 897 1030 } 898 1031 … … 921 1054 /************************************************************************************** 922 1055 ** Extraction de la position de l'antenne aprÚs l'envoi de la commande P 923 ** Le retour de la commande P est POSITION/valeur_az/valeur_alt/ 1056 ** Le retour de la commande P est POSITION/valeur_az/valeur_alt/ 924 1057 ** Ce retour est envoyé dans la chaîne str 925 1058 ** ExtractPosition retourne une structure Position contenant Valeur_az et Valeur_alt … … 950 1083 } 951 1084 952 IDLog((str +" failed !\n").c_str());1085 AfficherLog((str +" failed !\n").c_str()); 953 1086 954 1087 return false; … … 983 1116 { 984 1117 newRA = newRA2; 985 986 987 1118 newDEC = newDEC2; 1119 1120 // Dans les modes d'alignement AFFINE et TAKI, on applique la matrice de correction 988 1121 // sur les coordonnées horaires de l'objet visé 989 1122 … … 996 1129 997 1130 if (Sockets[i].AlignementAntenne->MethodeAlignement == AFFINE || 998 Sockets[i].AlignementAntenne->MethodeAlignement == TAKI)1131 Sockets[i].AlignementAntenne->MethodeAlignement == TAKI) 999 1132 { 1000 1133 // On crée un vecteur avec pour coordonnées … … 1010 1143 // Message pour l'utilisateur et les logs 1011 1144 1012 IDLog("Application de la matrice AFFINE/TAKI\nCoordonnees initiales: AD = %s Dec = %s\n", DHMS(newRA2*N180divPi, true ).c_str(),1013 DHMS(newDEC2*N180divPi, false ).c_str());1145 AfficherLog("Application de la matrice AFFINE/TAKI\nCoordonnees initiales: AD = %s Dec = %s\n", DHMS(newRA2*N180divPi, true ).c_str(), 1146 DHMS(newDEC2*N180divPi, false ).c_str()); 1014 1147 1015 1148 // On applique la matrice de transformation … … 1030 1163 newDEC = result.y; 1031 1164 1032 IDLog("Coordonnees finales: AD = %s Dec = %s\n", DHMS(newRA*N180divPi, true ).c_str(),1033 DHMS(newDEC*N180divPi, false ).c_str());1034 } 1165 AfficherLog("Coordonnees finales: AD = %s Dec = %s\n", DHMS(newRA*N180divPi, true ).c_str(), 1166 DHMS(newDEC*N180divPi, false ).c_str()); 1167 } 1035 1168 } 1036 1169 else … … 1038 1171 if (Sockets[i].AlignementAntenne->AlignementEnCours) 1039 1172 { 1040 1173 // Si la matrice n'est pas prête, c'est que la procédure d'alignement de l'antenne i n'est pas encore achevée. 1041 1174 // On se contente ici d'appliquer des deltas en ascension droite et en déclinaison. Ces deltas sont envoyés de BAOcontrol 1042 1175 // au driver indi_BAO par l'intermédiaire du fichier AlignementAntennes.cfg … … 1047 1180 newDEC = newDEC2 + Sockets[i].AlignementAntenne->delta_de[Sockets[i].AlignementAntenne->nbrcorrections] * PasDeltaDe; 1048 1181 1049 IDLog("Alignement en cours.\nDelta RA=%i delta Dec=%i\n", Sockets[i].AlignementAntenne->delta_ad[Sockets[i].AlignementAntenne->nbrcorrections], Sockets[i].AlignementAntenne->delta_de[Sockets[i].AlignementAntenne->nbrcorrections]);1050 IDLog("Nouvelles Coordonnées AD =%s Dec = %s\n", DHMS(newRA*N180divPi, true).c_str(), DHMS(newDEC*N180divPi, false).c_str());1051 1182 AfficherLog("Alignement en cours.\nDelta RA=%i delta Dec=%i\n", Sockets[i].AlignementAntenne->delta_ad[Sockets[i].AlignementAntenne->nbrcorrections], Sockets[i].AlignementAntenne->delta_de[Sockets[i].AlignementAntenne->nbrcorrections]); 1183 AfficherLog("Nouvelles Coordonnées AD =%s Dec = %s\n", DHMS(newRA*N180divPi, true).c_str(), DHMS(newDEC*N180divPi, false).c_str()); 1184 } 1052 1185 } 1053 1186 1054 1187 // Calcule la hauteur et l'azimut de la zone du ciel pointée (en fonction de la date et du lieu d'observation) 1055 1188 … … 1064 1197 // AprÚs s'être assurer que nous utilisons la méthode SIMPLE et que la matrice de rotation est ok 1065 1198 1066 IDLog("Application de la matrice SIMPLE\nCoordonnees initiales: Azi = %s Haut = %s\n", DHMS(targetAz*N180divPi, false ).c_str(),1067 DHMS(targetAlt*N180divPi, false ).c_str());1199 AfficherLog("Application de la matrice SIMPLE\nCoordonnees initiales: Azi = %s Haut = %s\n", DHMS(targetAz*N180divPi, false ).c_str(), 1200 DHMS(targetAlt*N180divPi, false ).c_str()); 1068 1201 1069 1202 // On constitue un vecteur vect 1070 1203 // Les coordonnées du vecteur correspondent à la position 1071 1204 // d'un point défini par une latitude targetAlt et une longitude targetAz 1072 1205 // sur une sphÚre de rayon 1. 1073 1206 // On reconnaît les formules de passage des coordonnées 1074 1207 // sphériques aux coordonnées rectangulaires 1075 1208 1076 1209 1077 1210 vect.x = cos(targetAz) * cos(targetAlt); … … 1081 1214 1082 1215 // Application de la matrice SIMPLE 1083 1084 1216 1217 Sockets[i].AlignementAntenne->AppliquerMatriceCorrectionSimple(&result, vect); 1085 1218 1086 1219 … … 1091 1224 { 1092 1225 targetAz = atan( result.y / result.x ); 1093 1094 1226 1227 if (result.x < 0) targetAz += Pi; 1095 1228 } 1096 1229 else targetAz = Pidiv2; … … 1101 1234 1102 1235 1103 IDLog("Coordonnees finales: Azi = %s Haut = %s\n", DHMS(targetAz*N180divPi, false ).c_str(),1104 DHMS(targetAlt*N180divPi, false ).c_str());1236 AfficherLog("Coordonnees finales: Azi = %s Haut = %s\n", DHMS(targetAz*N180divPi, false ).c_str(), 1237 DHMS(targetAlt*N180divPi, false ).c_str()); 1105 1238 } 1106 1239 … … 1129 1262 fs_sexa(AltStr, targetAlt, 2, 3600); 1130 1263 1131 IDLog("Coordonnees horizontales finales: Azi = %s Haut= %s\n", AzStr, AltStr);1264 AfficherLog("Coordonnees horizontales finales: Azi = %s Haut= %s\n", AzStr, AltStr); 1132 1265 1133 1266 1134 1267 // Conversion des deux angles en pas codeurs 1135 1268 1136 if ( targetAlt < HAUTMIN )1137 {1138 // L'objet est trop bas ( < 30°). On annule le suivi...1139 1140 IDSetSwitch(&OnCoordSetSP, "Erreur ! L objet suivi est situe a moins de 30 deg au-dessus de l horizon. Goto annule.");1141 1142 Suivi = false;1143 1144 RealisationGoto = false;1145 1146 InitAntennes();1147 1148 return;1149 }1150 else1269 /* if ( targetAlt < HAUTMIN ) 1270 { 1271 // L'objet est trop bas ( < 30°). On annule le suivi... 1272 1273 IDSetSwitch(&OnCoordSetSP, "Erreur ! L objet suivi est situe a moins de 30 deg au-dessus de l horizon. Goto annule."); 1274 1275 Suivi = false; 1276 1277 RealisationGoto = false; 1278 1279 InitAntennes(); 1280 1281 return; 1282 } 1283 else*/ 1151 1284 { 1152 1285 // Si la hauteur est supérieure à 90°, on doit ajouter 180° à l'azimut et corriger … … 1159 1292 } 1160 1293 1294 if ( targetAlt < HAUTMIN ) targetAlt = HAUTMIN; 1295 1161 1296 // On applique la formule de Marc pour convertir la hauteur en nombre de pas codeur alt 1162 1297 … … 1166 1301 1167 1302 Sockets[i].TargetPosition.x = (int) Arrondi( targetAz * (double)NBREPASCODEURSAZ / 360.0); 1168 1169 1170 1171 IDLog("Nbre de pas codeurs Az = %i Alt = %i\n", Sockets[i].TargetPosition.x, Sockets[i].TargetPosition.y);1303 1304 // Message de debug 1305 1306 AfficherLog("Nbre de pas codeurs Az = %i Alt = %i\n", Sockets[i].TargetPosition.x, Sockets[i].TargetPosition.y); 1172 1307 } 1173 1308 } … … 1200 1335 void BAO::DeconnecterSocket(int num) 1201 1336 { 1202 if (Sockets[num].Connected) IDLog("Deconnexion de l antenne : %s\n", Sockets[num].IP.c_str());1337 if (Sockets[num].Connected) AfficherLog("Deconnexion de l antenne : %s\n", Sockets[num].IP.c_str()); 1203 1338 Sockets[num].new_sock.shutdown(); 1204 1339 Sockets[num].Connected = false; … … 1256 1391 1257 1392 CalculTSL(); 1258 1259 1260 1393 1394 1395 // On charge les paramÚtres de correction des antennes toutes les demi-secondes 1261 1396 1262 1397 if ( compt%500 == 0 && tv.tv_usec/1.0E6 > 0.5 ) … … 1267 1402 { 1268 1403 // Si l'antenne i est connectée, on charge les paramÚtres 1269 Sockets[i].AlignementAntenne->TransmettreParametresClasseAstro(Annee, Mois, Jour, Heu, Min, Sec, Longitude, Latitude, Pression, Temp); 1270 1271 1272 1273 //IDLog("chargement simple\n");1274 1275 1276 1277 1278 // IDLog("chargement taki\n");1279 1280 1404 Sockets[i].AlignementAntenne->TransmettreParametresClasseAstro(Annee, Mois, Jour, Heu, Min, Sec, Longitude, Latitude, Pression, Temp); 1405 1406 if (Sockets[i].AlignementAntenne->MethodeAlignement == SIMPLE ) 1407 { 1408 //AfficherLog("chargement simple\n"); 1409 Sockets[i].AlignementAntenne->ChargementParametresAlignement(Sockets[i].IP, "/home/" + (string)getenv("USER") + "/AlignementAntennesSIMPLE.cfg", targetRA * 15 * Pidiv180, targetDEC * Pidiv180); 1410 } 1411 else 1412 { 1413 // AfficherLog("chargement taki\n"); 1414 Sockets[i].AlignementAntenne->ChargementParametresAlignement(Sockets[i].IP, "/home/" + (string)getenv("USER") + "/AlignementAntennesTAKI.cfg", targetRA * 15 * Pidiv180, targetDEC * Pidiv180); 1415 } 1281 1416 } 1282 1417 } … … 1342 1477 // on l'affiche dans le log 1343 1478 1344 IDLog("Reponse recue de %s : %s\n", Sockets[i].IP.c_str(), reponse.c_str());1479 AfficherLog("Reponse recue de %s : %s\n", Sockets[i].IP.c_str(), reponse.c_str()); 1345 1480 1346 1481 // On vérifie ici les acknowledges … … 1383 1518 IDSetSwitch(&OnCoordSetSP, "ALERTE antenne %s : position de l antenne inconnue !\n", 1384 1519 Sockets[i].IP.c_str()); 1520 AfficherLog("ALERTE antenne %s : position de l antenne inconnue !\n", 1521 Sockets[i].IP.c_str()); 1385 1522 1386 1523 // La position de l'antenne st donc inconnue … … 1436 1573 1437 1574 IDSetSwitch(&ParkSP, "ALERTE antenne %s : erreur PARK !\n", Sockets[i].IP.c_str()); 1575 AfficherLog("ALERTE antenne %s : erreur ABORT !\n", Sockets[i].IP.c_str()); 1438 1576 } 1439 1577 else if (Sockets[i].ack_park && reponse.find("OK")!=string::npos) … … 1461 1599 1462 1600 IDSetSwitch(&AbortSlewSP, "ALERTE antenne %s : erreur ABORT !\n", Sockets[i].IP.c_str()); 1601 AfficherLog("ALERTE antenne %s : erreur ABORT !\n", Sockets[i].IP.c_str()); 1463 1602 } 1464 1603 else if (Sockets[i].ack_abort && reponse.find("OK")!=string::npos) … … 1485 1624 // Message d'erreur 1486 1625 1487 IDSetSwitch(&OnCoordSetSP, "ALERTE antenne %s : Erreur GOTO !\n", Sockets[i].IP.c_str());1488 1626 IDSetSwitch(&OnCoordSetSP, "ALERTE antenne %s : Erreur NACK GOTO !\nRetour : %s\n", Sockets[i].IP.c_str(), reponse.c_str()); 1627 AfficherLog("ALERTE antenne %s : Erreur NACK GOTO !\nRetour : %s\n", Sockets[i].IP.c_str(), reponse.c_str()); 1489 1628 // On déconnecte l'antenne. Elle ne semble pas en mesure d'exécuter les ordres goto 1490 1629 1491 DeconnecterSocket(i); 1630 // 02/04/2012 Le fait de recevoir un nack/eos ne nécessite pas de devoir déconnecter l'antenne 1631 // DeconnecterSocket(i); 1492 1632 } 1493 1633 else if (Sockets[i].ack_goto) … … 1576 1716 DeconnecterSocket(i); 1577 1717 1578 IDLog("Indi_BAO, SocketException IsPoll : ");1579 IDLog(e.description().c_str());1580 IDLog("\n");1718 AfficherLog("Indi_BAO, SocketException IsPoll : "); 1719 AfficherLog(e.description().c_str()); 1720 AfficherLog("\n"); 1581 1721 } 1582 1722 } … … 1662 1802 { 1663 1803 // Délais entre deux actualisations 1664 1804 1665 1805 // Actualisation toutes les 15 minutes en mode transit (par défaut) 1666 1806 1667 double delai = ActualisationTMTransit / 3600.0 / 24.0; 1668 1669 1670 1671 if (TrackingMode == BAO_TRACKING) delai = ActualisationTMTracking / 3600.0 / 24.0; 1807 double delai = ActualisationTMTransit / 3600.0 / 24.0; 1808 1809 // et 5 secs en mode tracking (par défaut) 1810 1811 if (TrackingMode == BAO_TRACKING) delai = ActualisationTMTracking / 3600.0 / 24.0; 1672 1812 1673 1813 … … 1705 1845 IDSetSwitch(&OnCoordSetSP, "Erreur ! Plus d antennes connectees !"); 1706 1846 1707 if (Suivi) IDLog("Arrêt du suivi !");1847 if (Suivi) AfficherLog("Arrêt du suivi !"); 1708 1848 1709 1849 RealisationGoto=false; … … 1810 1950 1811 1951 //Message à l'attention de l'utilisateur 1812 1952 1813 1953 IDSetSwitch(&OnCoordSetSP, "Erreur sur l antenne %s : pas d acknowledge recu apres l ordre POSITION. \ 1814 1954 Deconnexion de l antenne.", Sockets[i].IP.c_str()); 1955 AfficherLog("Erreur sur l antenne %s : pas d acknowledge recu apres l ordre POSITION. \ 1956 Deconnexion de l antenne.", Sockets[i].IP.c_str()); 1815 1957 1816 1958 // On déconnecte l'antenne 1817 1818 DeconnecterSocket(i);1959 1960 // DeconnecterSocket(i); 1819 1961 } 1820 1962 } … … 1831 1973 // Tout vas bien 1832 1974 // On ne consigne aucune anomalie 1833 1975 1834 1976 Sockets[i].AttenteExecution = 0; 1835 1977 Sockets[i].AnomaliesExecution = 0; 1836 1978 1837 1979 //On passe à l'étape suivante 1838 1980 1839 1981 Sockets[i].etape++; 1840 1982 } … … 1853 1995 1854 1996 // On consigne une erreur grave. L'antenne tarde à répondre 1855 1997 1856 1998 Sockets[i].AnomaliesExecution++; 1857 1999 } … … 1859 2001 // Aucune réponse de l'antenne depuis plusieurs minutes 1860 2002 // On la déconnecte 1861 2003 1862 2004 if (Sockets[i].AnomaliesExecution > MAXANOMALIES) 1863 2005 { … … 1867 2009 1868 2010 //Message d'erreur 1869 2011 1870 2012 IDSetSwitch(&OnCoordSetSP, "Erreur sur l antenne %s : la position retournee n est pas valide. \ 1871 2013 Deconnexion de l antenne.", Sockets[i].IP.c_str()); 2014 AfficherLog("Erreur sur l antenne %s : la position retournee n est pas valide. \ 2015 Deconnexion de l antenne.", Sockets[i].IP.c_str()); 1872 2016 1873 2017 //Déconnexion de l'antenne 1874 1875 DeconnecterSocket(i);2018 2019 // DeconnecterSocket(i); 1876 2020 } 1877 2021 } … … 1914 2058 1915 2059 IDSetSwitch(&OnCoordSetSP, "Erreur sur l antenne %s : pas d acknowledge recu apres l ordre GOTO. Deconnexion de l antenne.", Sockets[i].IP.c_str()); 1916 1917 DeconnecterSocket(i); 2060 AfficherLog("Erreur sur l antenne %s : pas d acknowledge recu apres l ordre GOTO. Deconnexion de l antenne.", Sockets[i].IP.c_str()); 2061 2062 // DeconnecterSocket(i); 1918 2063 } 1919 2064 } … … 1958 2103 // Message d'erreur 1959 2104 IDSetSwitch(&OnCoordSetSP, "Erreur sur l antenne %s : l antenne n a pas renvoye GOTO/OK. Deconnexion de l antenne.", Sockets[i].IP.c_str()); 2105 AfficherLog("Erreur sur l antenne %s : l antenne n a pas renvoye GOTO/OK. Deconnexion de l antenne.", Sockets[i].IP.c_str()); 2106 1960 2107 1961 2108 //Déconnexion de l'antenne 1962 DeconnecterSocket(i);2109 // DeconnecterSocket(i); 1963 2110 } 1964 2111 } … … 1972 2119 1973 2120 /////////////////////////////////////// 1974 // Réalisation d'un goto - traitement de l'étape 3 2121 // Réalisation d'un goto - traitement de l'étape 3 1975 2122 // On place cette partie du traitement en dehors du switch et de la boucle 1976 2123 // pour pouvoir envoyer les gotos à toutes les antennes lorsque l'on a la confirmation … … 2031 2178 2032 2179 IDSetSwitch(&OnCoordSetSP, "Erreur sur l antenne %s : deconnexion de l antenne.", Sockets[i].IP.c_str()); 2180 AfficherLog("Erreur sur l antenne %s : deconnexion de l antenne.", Sockets[i].IP.c_str()); 2033 2181 2034 2182 // Déconnexion antenne 2035 2183 2036 DeconnecterSocket(i);2184 // DeconnecterSocket(i); 2037 2185 } 2038 2186 } … … 2057 2205 { 2058 2206 // Transit 2059 2207 2060 2208 case BAO_TRANSIT: 2061 2209 … … 2100 2248 2101 2249 // Tracking 2102 2250 2103 2251 case BAO_TRACKING: 2104 2252 2105 2253 // Ãteindre les voyants dans la boîte de dialogue Indi 2106 2254 2107 2255 EquatorialCoordsWNP.s = IPS_BUSY; 2108 2256 AbortSlewSP.s = IPS_IDLE; … … 2155 2303 // Petit message 2156 2304 2157 IDLog("\nHello BAORadio !\n");2305 AfficherLog("\nHello BAORadio !\n"); 2158 2306 2159 2307 // On lance le thread ! … … 2166 2314 if (pthread_create (&th1, NULL, (void*(*)(void*))LancementThread, this) < 0) 2167 2315 { 2168 IDLog("pthread_create error for threadSocket\n");2316 AfficherLog("pthread_create error for threadSocket\n"); 2169 2317 } 2170 2318 … … 2179 2327 ConnectSP.s = IPS_IDLE; 2180 2328 IDSetSwitch (&ConnectSP, "BAORadio is offline."); 2181 IDLog("Telescope is offline.");2329 AfficherLog("Telescope is offline."); 2182 2330 2183 2331 // On déconnecte tous les sockets … … 2238 2386 Sockets[numsocket].new_sock << chaine; 2239 2387 2240 IDLog("Commande envoyee a %s: %s", Sockets[numsocket].IP.c_str(), chaine);2388 AfficherLog("Commande envoyee a %s: %s", Sockets[numsocket].IP.c_str(), chaine); 2241 2389 } 2242 2390 catch (SocketException& e) … … 2246 2394 DeconnecterSocket(numsocket); 2247 2395 2248 IDLog("Indi_BAO, COMMANDE exception : ");2249 IDLog(e.description().c_str());2250 IDLog("\n");2396 AfficherLog("Indi_BAO, COMMANDE exception : "); 2397 AfficherLog(e.description().c_str()); 2398 AfficherLog("\n"); 2251 2399 2252 2400 return false; … … 2328 2476 2329 2477 // ne pas faire des tours complets en Az pour rien... 2330 2478 2331 2479 while (deltaAz > NBREPASCODEURSAZ) deltaAz -= NBREPASCODEURSAZ; 2332 2480 2333 2481 // Doit résoudre tous les problÚmes concernant l'azimut... 2334 2482 2335 2483 if (deltaAz > NBREPASCODEURSAZ / 2 ) 2336 2484 { … … 2365 2513 { 2366 2514 //Il ne faut exécuter la fonction qu'une seule fois 2367 2515 2368 2516 static int isInit = 0; 2369 2517 … … 2464 2612 ConnectSP.s = IPS_IDLE; 2465 2613 IDSetSwitch(&ConnectSP, "The connection to the telescope is lost."); 2466 IDLog("arret");2614 AfficherLog("arret"); 2467 2615 return; 2468 2616 } -
BAORadio/libindi/libindi/drivers/telescope/BAO.h
r648 r650 23 23 #include <fstream> 24 24 25 #include <stdarg.h> 26 25 27 #include <termios.h> 26 28 #include <unistd.h> … … 148 150 void connection_lost(); 149 151 void connection_resumed(); 152 153 void AfficherLog(const char* Message,...); 150 154 151 155 … … 166 170 IText PortT[1]; 167 171 IText ObjectT[1]; 172 IText CommandT[1]; 168 173 169 174 /* Numbers */ … … 192 197 ITextVectorProperty PortTP; 193 198 ITextVectorProperty ObjectTP; 199 ITextVectorProperty CommandTP; 194 200 195 201 -
BAORadio/libindi/libindi/result_recherche_bao
r648 r650 1 2 3 Results from query to NASA/IPAC Extragalactic Database (NED), 4 which is operated by the Jet Propulsion Laboratory, California Institute of 5 Technology, under contract with the National Aeronautics and Space Administration. 6 This work was (partially) supported by the US National Virtual Observatory 7 development project, which is funded by the National Science Foundation 8 under cooperative agreement AST0122449 with The Johns Hopkins University. 9 10 11 12 queryDateTime:2012-04-01T09:37:58PDT 13 14 15 16 Main Information Table for MESSIER 031 17 18 19 20 Equinox:J2000.0 21 22 23 24 CoordSystem:Equatorial 25 26 No.|Object Name|RA(deg)|DEC(deg)|Type|Velocity|Redshift|Redshift Flag|Magnitude and Filter|Distance (arcmin)|References|Notes|Photometry Points|Positions|Redshift Points|Diameter Points|Associations 27 1|MESSIER 031| 10.68479 | 41.26906 |G| -300|-0.001001 | | 4.36||3374|18|138|8|26|7|2
Note: See TracChangeset
for help on using the changeset viewer.