2009-02-11 7 views
1

Je développe actuellement une application ciblée pour le HP IPAQ 210. Une partie de cette application nécessite que la radio WLAN soit activée/mise sous tension pour se connecter à un point d'accès préconfiguré. J'utilise actuellement le SDA IPAQ (via P/Invoke) pour activer la radio WLAN, mais j'ai des problèmes pour déterminer de manière fiable quand la radio a établi une connexion avec le point d'accès préféré. Je surveille actuellement la propriété Microsoft.WindowsMobile.Status.SystemState.WiFiStateConnected, mais je préférerais m'abonner à un événement pour être averti lorsque la connexion est établie. J'ai regardé un peu dans la bibliothèque OpenNETCF, et il semble y avoir des choses prometteuses dans 2.3, mais nous sommes bloqués sur 2.2 pour le moment.Surveillance de la connexion radio WLAN sous Windows Mobile 6/C#

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

Répondre

1

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); 
+0

Juste pour ajouter à ceci: la valeur contiendra les propriétés masquées de bits suivantes: 2 - WiFiStatePowerOn 8 - WiFiStateConnecting 16 - WiFiStateConnected Notez que ce sont standard sur WM5, mais sans-papiers pour WM6 (mais ils semblent fonctionner). En outre, les wrappers SystemState dans .NET semblent être peu fiables. – bjanaszek

+0

Oui. Et 4 est "Réseaux disponibles". 1 Semble être réglé tout le temps, peut-être qu'il signifie "matériel wifi disponible"? – Sam

1

Ainsi, au cas où quelqu'un d'autre arrive sur Ceci, j'ai trouvé la méthode de clé de registre décrite ci-dessus pour la plupart fiable, mais j'avais besoin d'une méthode plus fiable. Je suis passé à l'utilisation de la bibliothèque OpenNETCF 2.2 NetworkInformation pour surveiller la propriété CurrentIPAddress de WirelessZeroConfigInterface. J'utilise toujours l'IPAQUtils pour gérer la puissance de la radio WLAN (j'ai trouvé que le contrôle radio OpenNETCF 2.2 faisait défaut et l'appareil n'aurait qu'une seule entrée sur le 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++; 
} 
0
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();       
} 
+0

Cela ne semble pas être lié à la question. –

Questions connexes