Position Argos et PHP [exemple avec telnet]

Position Argos et PHP [exemple avec telnet] - PHP - Programmation

Marsh Posté le 22-10-2004 à 14:15:44    

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 :
  1. <?php
  2. //récupération des informations d'une balise Argos par connexion directe au centre de calcul CLS
  3. //variables du script
  4. $serveur = "netdis.cls.fr";  //serveur de connexion netdis.cls.fr
  5. $login = "EVERYONE";   //login au serveur
  6. $password = "ARGOS";   //password
  7. $commande = "COM/C,10,,ALL";  //commande à effectuer
  8. function telnet($serveur, $login, $mdp, $commande) {
  9. $close = "LOGOUT";
  10. // entetes TELNET
  11. $header1=chr(0xFF).chr(0xFB).chr(0x1F).chr(0xFF).chr(0xFB).
  12. chr(0x20).chr(0xFF).chr(0xFB).chr(0x18).chr(0xFF).chr(0xFB).
  13. chr(0x27).chr(0xFF).chr(0xFD).chr(0x01).chr(0xFF).chr(0xFB).
  14. chr(0x03).chr(0xFF).chr(0xFD).chr(0x03).chr(0xFF).chr(0xFC).
  15. chr(0x23).chr(0xFF).chr(0xFC).chr(0x24).chr(0xFF).chr(0xFA).
  16. chr(0x1F).chr(0x00).chr(0x50).chr(0x00).chr(0x18).chr(0xFF).
  17. chr(0xF0).chr(0xFF).chr(0xFA).chr(0x20).chr(0x00).chr(0x33).
  18. chr(0x38).chr(0x34).chr(0x30).chr(0x30).chr(0x2C).chr(0x33).
  19. chr(0x38).chr(0x34).chr(0x30).chr(0x30).chr(0xFF).chr(0xF0).
  20. chr(0xFF).chr(0xFA).chr(0x27).chr(0x00).chr(0xFF).chr(0xF0).
  21. chr(0xFF).chr(0xFA).chr(0x18).chr(0x00).chr(0x58).chr(0x54).
  22. chr(0x45).chr(0x52).chr(0x4D).chr(0xFF).chr(0xF0);
  23. $header2=chr(0xFF).chr(0xFC).chr(0x01).chr(0xFF).chr(0xFC).
  24. chr(0x22).chr(0xFF).chr(0xFE).chr(0x05).chr(0xFF).chr(0xFC).chr(0x21);
  25. // connexion
  26. $fp=pfsockopen($serveur,23);
  27. // envoi de l'entete telnet
  28. fputs($fp,$header1);
  29. sleep(1);
  30. fputs($fp,$header2);
  31. sleep(1);
  32. //recupération de la réponse
  33. $output.=fread($fp,128);
  34. $stat=socket_get_status($fp);
  35. $output.=fread($fp, $stat["unread_bytes"]);
  36. // login
  37. fputs($fp,$login."\r" );
  38. sleep(1);
  39. //recupération de la réponse
  40. $output.=fread($fp,128);
  41. $stat=socket_get_status($fp);
  42. $output.=fread($fp, $stat["unread_bytes"]);
  43. //password
  44. fputs($fp,$mdp."\r" );
  45. sleep(1);
  46. //recupération de la réponse
  47. $output.=fread($fp,128);
  48. $stat=socket_get_status($fp);
  49. $output.=fread($fp, $stat["unread_bytes"]);
  50. // envoi de la commande
  51. fputs($fp,$commande."\r" );     
  52. sleep(1);
  53. //lecture de la reponse
  54. $output.=fread($fp,128);
  55. $stat=socket_get_status($fp);
  56. $output.=fread($fp, $stat["unread_bytes"]);
  57. //logout
  58. fputs($fp,$close."\r" );
  59. fclose($fp);
  60. $result = strpos($output, $commande);
  61. if ($result) {
  62.  return $output;
  63. }
  64. else {
  65.  echo $output;
  66.  return FALSE;
  67. }
  68. }
  69. // Fin de la fonction de connexion TELNET
  70. ///////////////////////////////////////////////////////
  71. //appel des resultats par TELNET
  72. $reponse = telnet($serveur, $login, $password, $commande);
  73. //Test sans connexion
  74. //$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 ";
  75. //si la réponse n'est pas complete, on recommence (jusque 2 essais)
  76. if (!$reponse) {
  77. sleep(3);
  78. $reponse = telnet($serveur, $login, $password, $commande);
  79. }
  80. if (!$reponse) {
  81. sleep(3);
  82. $reponse = telnet($serveur, $login, $password, $commande);
  83. }
  84. if ($reponse) {
  85. //traitement de la chaine retour
  86. if (strpos($reponse, "/".$commande)) {
  87.  //extraction des données
  88.  ereg("[0-9]{1,3}\.[0-9]{3}(N|S)", $reponse, $lat); //recup latitude
  89.  ereg("[0-9]{1,3}\.[0-9]{3}(W|E)", $reponse, $long); //recup longitude
  90.  ereg($long[0]."[ \t\n\r]+([0-9A-Z]{1})", $reponse, $classe); //recup classe de résultat
  91.  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
  92.  //traitement de la date
  93.  $aujourdhui = strftime("%j" );  //numéro d'aujourd'hui dans le calendrier
  94.      //si le numero du jour de > à celui d'aujourd'hui, nous travaillons avec l'annee derniere
  95.  $annee = ($aujourdhui < $date[3]) ? intval(strftime("%Y" )) - 1 : intval(strftime("%Y" ));
  96.  $minute = substr($date[4], 2, 2);
  97.  $heure = substr($date[4], 0, 2);
  98.  $derniere_localisation = date("d/m/Y", mktime (0,0,0,1,$date[3],$annee))." $heure:$minute";
  99.  //enregistrement dans un fichier des donnees LAT et LONG
  100.  $fichier = "gps.html";
  101.  $fp = fopen($fichier, "wb" );
  102.  fputs($fp, "LAT : $lat[0] <br />LONG : $long[0]" );
  103.  fclose($fp);
  104.  echo "La derni&egrave;re localisation de la balise : $derniere_localisation GMT <br />LAT : $lat[0] <br />LONG : $long[0] <br />Classe de résultat : $classe[1]";
  105. }
  106. else {
  107.  echo "Erreur de r&eacute;cup&eacute;ration des donn&eacute;es";
  108. }
  109. }
  110. else {
  111. echo "Erreur de connexion avec le serveur Argos";
  112. }
  113. ?>


 
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 !
Reply

Marsh Posté le 22-10-2004 à 14:15:44   

Reply

Marsh Posté le 22-10-2004 à 14:38:26    

oula je vais voir de chez moi qu'est ce que ca peut donner mais va peux etre bien marrant à utiliseR.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed