View  Edit  Attributes  History  Attach  Print  Search

ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien à voir |

Outils > Processing

Processing – Ligne de commande programmée : récupérer l'adresse IP de l'interface wifi wlan0

Description

  • Ce petit programme montre comment récupérer l'adresse IP de l'interface wifi wlan0 à partir de Processing, sous Ubuntu. Ici, on récupère la sortie console de l'instruction ifconfig qui permet d'obtenir la liste des interfaces du système.
  • La sortie console est ensuite analysée : les lignes voulues sont prises en compte et l'adresse IP est extraite.
  • L'utilité potentielle de ce programme est notamment sur un PC embarqué sous Ubuntu, de connaître et d'afficher sur un LCD au démarrage par exemple l'adresse IP automatique qui est attribuée au PC par le routeur DHCP sur un réseau wifi.

Ressources utiles

  • L'instruction ifconfig : faire man ifconfig dans une console sous Ubuntu (Applications > Accessoires > Terminal).

Le programme


// Programme processing
// généré avec le générateur de code Processing
// www.mon-club-elec.fr
// par X. HINAULT - Juillet 2011 - tous droits réservés

/////////////// Description du programme ////////////
// Ce programme fait exécuter la commande système ifconfig
// et extrait l'adresse ip de l'interface wlan0 (interface réseau wifi)


// XXXXXXXXXXXXXXXXXXXXXX ENTETE DECLARATIVE XXXXXXXXXXXXXXXXXXXXXX

// inclusion des librairies utilisées

// déclaration objets
String[] command ;

String inputString;
String adresseIP;

int compt=0; // variable de comptage des passages

// déclaration variables globales

// XXXXXXXXXXXXXXXXXXXXXX  Fonction SETUP XXXXXXXXXXXXXXXXXXXXXX

void setup(){ // fonction d'initialisation exécutée 1 fois au démarrage



} // fin fonction Setup

// XXXXXXXXXXXXXXXXXXXXXX Fonction Draw XXXXXXXXXXXXXXXXXXXX

void  draw() { // fonction exécutée en boucle

getIP();

print("Adresse IP wlan0: ");
println(inputString);




while(true); // stoppe boucle draw

} // fin de la fonction draw()



// XXXXXXXXXXXXXXXXXXXXXX Autres Fonctions XXXXXXXXXXXXXXXXXXXXXX

void getIP() {
  // le paquet espeak doit etre installé sous Ubuntu (depuis la logithèque)

command = new String[1];
// espeak -v fr -s 140 « lecture texte espeak »
// espeak -v fr -s 80 -p 30 \"moteur droit en marche avant\"
command[0] = "ifconfig";
//command[1] = "";
//command[2]="";
//command[3]="";  
//command[4]="";
//command[5]="";  
//command[6]="";
//command[7]="";

//--- exécution de la ligne de commande
try {
    Process p = exec(command); // exécute la commande

    //--- récupère la sortie de la commande dans la console de Processing
    BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String ligne = null;
    while ((ligne = in.readLine()) != null) { // lit la sortie console ligne à ligne

      System.out.println(ligne); // affiche la ligne courante issue de la console

      //----- prise en compte de la ligne qui suit ligne avec chaine caractère wlan0 ---
      if (compt==1) { // si un premier passage a eu lieu
      // mis avant détection wlan0 pour éviter prise en compte lors 1er passage

        inputString=ligne; // on mémorise la ligne
        compt=2; // incrémente compt pour éviter prise en compte des lignes non voulues

        //---- traitement de la chaine de la deuxième ligne = extraction de l'IP
        inputString=trim(inputString);

        String[] subString = split(inputString, ':'); // coupe entre les :
        inputString=subString[1]; // garde la sous-chaine :192....Bcast:

        String[] subString2 = split(inputString, ' '); // coupe entre les :
        inputString=subString2[0]; // garde la sous-chaine d'adresse IP

      }

      //---------- recherche la première ligne qui concerne l'interface ---
      String[] testString = match(ligne, "wlan0"); // recherche la chaine dans la ligne

      if (testString != null) { // si le tableau n'est pas vide = si la chaine a été trouvée        
        inputString=ligne;
        compt=1;
      }


    }

  }
  catch (IOException e) {
    e.printStackTrace();
  }  

}