Domanda

Attualmente sto sviluppando un app mirati per la HP IPAQ 210. Parte di questa applicazione richiede la radio WLAN sia abilitato / alimentato a collegarsi ad un punto di accesso pre-configurato. Attualmente sto usando l'SDK IPAQ (tramite P / Invoke) per attivare la radio WLAN, ma sto avendo problemi attendibilmente determinare quando la radio ha stabilito un collegamento con il punto di accesso preferito. Attualmente sto monitorando la proprietà Microsoft.WindowsMobile.Status.SystemState.WiFiStateConnected, ma io preferirei di sottoscrivere un evento per essere avvisati quando viene stabilita la connessione.

Ho guardato un po 'intorno nella biblioteca OpenNETCF, e sembra che ci sia cose promettenti in 2.3, ma siamo bloccati sul 2.2 per il momento.

C'è un modo affidabile per determinare lo stato di connessione?

È stato utile?

Soluzione

E 'brutto, e non è un evento, ma se tutto il resto fallisce, si potrebbe cercare di controllare lo stato dell'hardware Wifi con la lettura di essa la chiave di registro:

int key = (int)Registry.GetValue("HKEY_LOCAL_MACHINE\\System\\State\\Hardware", "WiFi", -1);

Altri suggerimenti

Quindi, nel caso in cui nessun altro accade su questo, ho trovato il metodo chiave di registro descritto in precedenza per lo più affidabili, ma avevo bisogno di un metodo più affidabile. Ho spostato a utilizzare il OpenNETCF 2.2 libreria NetworkInformation di monitorare la proprietà CurrentIPAddress del WirelessZeroConfigInterface. Sto ancora utilizzando i IPAQUtils per la gestione della potenza radio WLAN (ho trovato il radiocomando OpenNETCF 2,2 a mancare e il dispositivo avrà solo una singola voce di rete WiFi), ma ecco come posso monitorare l'indirizzo IP dell'interfaccia :

NetworkInterface[] netIntfs = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface ni in netIntfs)
{
    if (ni is WirelessZeroConfigNetworkInterface)
    {
       wzcni = (WirelessZeroConfigNetworkInterface)ni;
    }
}

while (wzcni.CurrentIpAddress.ToString() == "0.0.0.0" && tryCount < 10)
{
    wzcni.Refresh();
    System.Threading.Thread.Sleep(3000);
    tryCount++;
}
System.Windows.Forms.Button Btn = new System.Windows.Forms.Button();
if (flag == true)
{
    for (int i = 0; i < node; i++)
    {
        Btn = new Button();
        Btn.Height = 25;
        Btn.Width =30;
        Btn.ForeColor = Color.Blue;
        Btn.BackColor = Color.Brown;                 
        Btn.AutoSize = false;
        x = rd.Next(130, 800);
        y = rd.Next(130, 500);
        Btn.Location = new Point(x, y);
        Console.WriteLine(x + "," + y);
        Btn.Text = "U" + i.ToString();
        Btn.Name = "U" + i.ToString();
        m_streamWriter.WriteLine("{0} {1} {2}",
                                 Btn.Name.ToString(),
                                 Btn.Location.X.ToString(),
                                 Btn.Location.Y.ToString());
        Btn.Click += new System.EventHandler(this.Btn_Click);
        this.Controls.Add(Btn);                    
    }
    flag = false;
    m_streamWriter.Dispose();
    startConvert();
    get_combo1();                          
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top