• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
programma scansionare in reti c wifi collegarsi e per

[Problema] Programma in C per scansionare reti wifi e collegarsi
#1
Salve a tutti, ho bisogno di una mano.
Sto sviluppando un software in C (con interfaccia grafica) per il mio raspberry (con raspbian) e volevo implementare questa funzione. Vorrei avere una pagina nella quale posso effettuare uno scan delle reti wifi (ho un dongle inserito nel Pi). Lo scan viene effettuato (al momento) con una pipe:

Codice:
FILE *pf;
char cmd[100];
sprintf(cmd, "iwlist wlan0 scan | grep ESSID > /home/pi/Desktop/scanout.txt"); // creo il comando
pf=popen(cmd,"r"); // lancio il comando
if (!pf)
return -1;
int pclose(FILE *pf);


Come potete vedere lancio il comando iwlist wlan0 scan | grep ESSID e salvo l'output in un file di testo "scanout.txt"
Così nel file di testo ho una lista di ESSID (anche se un po' disordinata)

Successivamente voglio far vedere gli ESSID all'utente, L'utente quindi ne seleziona uno (quindi a questo punto il mio programma deve tenersi in memoria l'essid selezionato) e poi inserisce la password (il programma si tiene in memoria la pw)

Arrivati quindi a questo punto, lancio il comando che deve far collegare la macchina alla rete. 
Io ho fatto così:

Codice:
sprintf(internet,"ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev\n update_config=1\n country=IT\n network={\n ssid=\"%s\"\n psk=\"%s\"\n}\0",ssid,psk);

Ho appena creato una stringa con all'interno il contenuto del file wpa_supplicant.conf
E ora la vado a copiare con una pipe nella path giusta

Codice:
FILE *fp;
fp=fopen("/etc/wpa_supplicant/wpa_supplicant.conf","w");
if (fp==0) return;
fwrite(&internet,sizeof(internet),1,fp);
fclose(fp);


Arrivati a questo punto faccio riavviare la macchina.

Questo è il metodo che ho usato ed è "funzionante". Lo metto tra virgolette perchè a quanto pare non sempre funziona e non riesco a capire che problema ci sia. 
Siccome non sono molto pratico con il Raspberry chiedo a voi, sto facendo qualcosa di strano?
C'è un modo più semplice di fare tutto ciò?

grazie mille in anticipo
Risposta
#2
se ha un interfaccia grafica, perché non usi la procedura base di linux?
[Immagine: WwDgoGcpW8cA2-5QYnqSzU4MUqqpO8x6Vomm8POG...mLBNBJ_ssZ]
Heart Libro  | Blog EnricoSartori.it | Idea YouTube
Se un utente ti è stato utile, aumenta la sua reputazione! premi il Pollicione! 
Risposta
  


Vai al forum:


Navigazione: 2 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect