Frage

Ich entwickle derzeit eine App, die für den HP IPAQ 210 abzielt. Ein Teil dieser App erfordert, dass das WLAN-Radio aktiviert/betrieben wird, um eine Verbindung zu einem vorkonfigurierten Zugangspunkt herzustellen. Ich verwende derzeit das IPAQ SDK (über P/Invoke), um das WLAN -Radio zu aktivieren, aber ich habe Probleme, zuverlässig zu bestimmen, wann das Radio eine Verbindung mit dem bevorzugten Zugangspunkt hergestellt hat. Ich überwache derzeit die Microsoft.WindowsMobile.status.SystemState.WifistateConnected -Eigenschaft, aber ich würde es vorziehen, ein Ereignis zu abonnieren, das benachrichtigt werden soll, wenn die Verbindung hergestellt wird.

Ich habe mich in der OpenNETCF -Bibliothek ein wenig umgesehen, und es scheint vielversprechende Dinge in 2.3 zu geben, aber wir stecken momentan auf 2.2.

Gibt es einen zuverlässigen Weg, um den Verbindungsstatus zu bestimmen?

War es hilfreich?

Lösung

Es ist hässlich und es ist kein Ereignis, aber wenn alles andere fehlschlägt, können Sie versuchen, den WiFi -Hardware -Status durch das Lesen des Registrierungsschlüssels zu überprüfen:

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

Andere Tipps

Falls jemand anderes in diesem Fall die oben beschriebene Registrierungsschlüsselmethode für größtenteils zuverlässig beschrieben hat, brauchte ich jedoch eine zuverlässigere Methode. Ich habe die OpenNETCF 2.2 -Netzwerkinformationsbibliothek verwendet, um die CurrentIPAddress -Eigenschaft der WirelesszeroconfigInterface zu überwachen. Ich verwende immer noch die IPAQUTILs für die Verwaltung der WLAN -Funkleistung (ich habe festgestellt :

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();                          
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top