Question

Je développe actuellement une application ciblée pour le HP IPAQ 210. Une partie de cette application nécessite la radio WLAN doit être activé / alimenté à se connecter à un point d'accès préconfiguré. J'utilise actuellement le SDK IPAQ (via P / Invoke) pour activer la radio WLAN, mais je vais avoir du mal à déterminer de manière fiable lorsque la radio a établi une connexion avec le point d'accès privilégié. Je surveillent actuellement la propriété Microsoft.WindowsMobile.Status.SystemState.WiFiStateConnected, mais je préférerais souscrire à un événement pour être informé lorsque la connexion est établie.

Je l'ai regardé autour un peu dans la bibliothèque OpenNETCF, et il semble y avoir des choses prometteuses dans 2.3, mais nous sommes coincés sur 2.2 pour le moment.

Yat-il un moyen fiable de déterminer l'état de la connexion?

Était-ce utile?

La solution

Il est laid, et il n'y a aucun événement, mais si tout le reste échoue, vous pouvez essayer de vérifier l'état du matériel Wifi en lisant c'est la clé de Registre:

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

Autres conseils

Alors, au cas où quelqu'un d'autre arrive sur ce, j'ai trouvé la méthode clé de Registre décrit ci-dessus pour la plupart fiables, mais je avais besoin d'une méthode plus fiable. Je suis passé à l'aide de la bibliothèque OpenNETCF 2.2 NetworkInformation pour surveiller la propriété CurrentIPAddress du WirelessZeroConfigInterface. J'utilise toujours les IPAQUtils pour gérer la puissance radio WLAN (je l'ai trouvé le contrôle radio OpenNETCF 2.2 à défaut et l'appareil n'aura une seule entrée de réseau WiFi), mais voici comment je surveille l'adresse IP de l'interface :

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();                          
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top