Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
971 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Position Argos et PHP [exemple avec telnet]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Position Argos et PHP [exemple avec telnet]

n°880019
T509
$job->GetJob(now)
Posté le 22-10-2004 à 14:15:44  profilanswer
 

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 !
mood
Publicité
Posté le 22-10-2004 à 14:15:44  profilanswer
 

n°880041
Sebastien
Posté le 22-10-2004 à 14:38:26  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Position Argos et PHP [exemple avec telnet]

 

Sujets relatifs
integrer du flash en phpPHP sans MYSQL sur IIS?
pb php -> appel d'un style cssCode Javascript integre dans le PHP...
un site php peut il etre aspiré / pompé ?Problème en PHP pour contenir des " dans le code
[php] tester si un entier est pair ou impair[Swishmax] Poster un champ sur PHP serveur pour une mailing-list....
[Php] Pourquoi devoir mettre 2X htmlentities ?Cherche programmeur PHP
Plus de sujets relatifs à : Position Argos et PHP [exemple avec telnet]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR