T509 $job->GetJob(now) | Pour ceux que cela intéresse, voici un script qui récupère une position Argos directement sur les serveurs CLS.
Le compte utilisé est le compte de démo. Il vous faudra personaliser.
A+
Code :
- <?php
- //récupération des informations d'une balise Argos par connexion directe au centre de calcul CLS
- //variables du script
- $serveur = "netdis.cls.fr"; //serveur de connexion netdis.cls.fr
- $login = "EVERYONE"; //login au serveur
- $password = "ARGOS"; //password
- $commande = "COM/C,10,,ALL"; //commande à effectuer
- function telnet($serveur, $login, $mdp, $commande) {
- $close = "LOGOUT";
- // entetes TELNET
- $header1=chr(0xFF).chr(0xFB).chr(0x1F).chr(0xFF).chr(0xFB).
- chr(0x20).chr(0xFF).chr(0xFB).chr(0x18).chr(0xFF).chr(0xFB).
- chr(0x27).chr(0xFF).chr(0xFD).chr(0x01).chr(0xFF).chr(0xFB).
- chr(0x03).chr(0xFF).chr(0xFD).chr(0x03).chr(0xFF).chr(0xFC).
- chr(0x23).chr(0xFF).chr(0xFC).chr(0x24).chr(0xFF).chr(0xFA).
- chr(0x1F).chr(0x00).chr(0x50).chr(0x00).chr(0x18).chr(0xFF).
- chr(0xF0).chr(0xFF).chr(0xFA).chr(0x20).chr(0x00).chr(0x33).
- chr(0x38).chr(0x34).chr(0x30).chr(0x30).chr(0x2C).chr(0x33).
- chr(0x38).chr(0x34).chr(0x30).chr(0x30).chr(0xFF).chr(0xF0).
- chr(0xFF).chr(0xFA).chr(0x27).chr(0x00).chr(0xFF).chr(0xF0).
- chr(0xFF).chr(0xFA).chr(0x18).chr(0x00).chr(0x58).chr(0x54).
- chr(0x45).chr(0x52).chr(0x4D).chr(0xFF).chr(0xF0);
- $header2=chr(0xFF).chr(0xFC).chr(0x01).chr(0xFF).chr(0xFC).
- chr(0x22).chr(0xFF).chr(0xFE).chr(0x05).chr(0xFF).chr(0xFC).chr(0x21);
- // connexion
- $fp=pfsockopen($serveur,23);
- // envoi de l'entete telnet
- fputs($fp,$header1);
- sleep(1);
- fputs($fp,$header2);
- sleep(1);
- //recupération de la réponse
- $output.=fread($fp,128);
- $stat=socket_get_status($fp);
- $output.=fread($fp, $stat["unread_bytes"]);
- // login
- fputs($fp,$login."\r" );
- sleep(1);
- //recupération de la réponse
- $output.=fread($fp,128);
- $stat=socket_get_status($fp);
- $output.=fread($fp, $stat["unread_bytes"]);
- //password
- fputs($fp,$mdp."\r" );
- sleep(1);
- //recupération de la réponse
- $output.=fread($fp,128);
- $stat=socket_get_status($fp);
- $output.=fread($fp, $stat["unread_bytes"]);
- // envoi de la commande
- fputs($fp,$commande."\r" );
- sleep(1);
- //lecture de la reponse
- $output.=fread($fp,128);
- $stat=socket_get_status($fp);
- $output.=fread($fp, $stat["unread_bytes"]);
- //logout
- fputs($fp,$close."\r" );
- fclose($fp);
- $result = strpos($output, $commande);
- if ($result) {
- return $output;
- }
- else {
- echo $output;
- return FALSE;
- }
- }
- // Fin de la fonction de connexion TELNET
- ///////////////////////////////////////////////////////
- //appel des resultats par TELNET
- $reponse = telnet($serveur, $login, $password, $commande);
- //Test sans connexion
- //$reponse = "ARGOS READY /COM/C,10,,ALL PROG \t \r 10 10000 43.543N 10.398W \t\n\t 3 \n\r\t 286/1322Z-286/0926 ( 3) 0.99811E+3 32 0.20000E+2 0.32000E+2 ";
- //si la réponse n'est pas complete, on recommence (jusque 2 essais)
- if (!$reponse) {
- sleep(3);
- $reponse = telnet($serveur, $login, $password, $commande);
- }
- if (!$reponse) {
- sleep(3);
- $reponse = telnet($serveur, $login, $password, $commande);
- }
- if ($reponse) {
- //traitement de la chaine retour
- if (strpos($reponse, "/".$commande)) {
- //extraction des données
- ereg("[0-9]{1,3}\.[0-9]{3}(N|S)", $reponse, $lat); //recup latitude
- ereg("[0-9]{1,3}\.[0-9]{3}(W|E)", $reponse, $long); //recup longitude
- ereg($long[0]."[ \t\n\r]+([0-9A-Z]{1})", $reponse, $classe); //recup classe de résultat
- ereg("([0-9]{1,3})/([0-9]{4})Z-([0-9]{1,3})/([0-9]{4})", $reponse, $date); //recup date et heure de dernière localisation
- //traitement de la date
- $aujourdhui = strftime("%j" ); //numéro d'aujourd'hui dans le calendrier
- //si le numero du jour de > à celui d'aujourd'hui, nous travaillons avec l'annee derniere
- $annee = ($aujourdhui < $date[3]) ? intval(strftime("%Y" )) - 1 : intval(strftime("%Y" ));
- $minute = substr($date[4], 2, 2);
- $heure = substr($date[4], 0, 2);
- $derniere_localisation = date("d/m/Y", mktime (0,0,0,1,$date[3],$annee))." $heure:$minute";
- //enregistrement dans un fichier des donnees LAT et LONG
- $fichier = "gps.html";
- $fp = fopen($fichier, "wb" );
- fputs($fp, "LAT : $lat[0] <br />LONG : $long[0]" );
- fclose($fp);
- echo "La dernière localisation de la balise : $derniere_localisation GMT <br />LAT : $lat[0] <br />LONG : $long[0] <br />Classe de résultat : $classe[1]";
- }
- else {
- echo "Erreur de récupération des données";
- }
- }
- else {
- echo "Erreur de connexion avec le serveur Argos";
- }
- ?>
|
edit : ortho Message édité par T509 le 22-10-2004 à 21:30:26 ---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
|