Questo forum utilizza i cookies
Questo forum fa uso di cookie per migliorare l'esperienza utente. I cookie sono piccoli file di testo memorizzati sul tuo browser. I cookie impostati dal forum possono essere utilizzati solo su questo sito e non costituiscono rischio per la sicurezza, vengono utilizzati unicamente per memorizzare le tue preferenze. Navigando sul sito accetti che RaspberryItaly installi i cookie sul tuo browser.
Per maggiori informazioni consulta l'informativa sui Cookie di RasberryItaly

Un cookie verra memorizzato nel browser indipendentemente dalla scelta per evitare che questa domanda ti venga posta di nuovo. Sarai in grado di modificare le impostazioni dei cookie in qualsiasi momento utilizzando il link nel footer.
  • 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: 1 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect