繁体   English   中英

在 Windows Mobile 6/C# 中监控 WLAN 无线电连接

[英]Monitoring WLAN Radio Connection in Windows Mobile 6/C#

我目前正在开发针对 HP IPAQ 210 的应用程序。此应用程序的一部分需要启用/打开 WLAN 无线电以连接到预配置的接入点。 我目前正在使用 IPAQ SDK(通过 P/Invoke)来启用 WLAN 无线电,但我无法可靠地确定无线电何时与首选接入点建立连接。 我目前正在监视 Microsoft.WindowsMo​​bile.Status.SystemState.WiFiStateConnected 属性,但我更愿意订阅在建立连接时收到通知的事件。

我在 OpenNETCF 库中环顾了一下,在 2.3 中似乎有一些有希望的东西,但我们暂时停留在 2.2 上。

有没有可靠的方法来确定连接状态?

它很丑,也不是事件,但如果所有其他方法都失败了,您可以尝试通过读取它的注册表项来检查 Wifi 硬件状态:

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

因此,万一其他人发生这种情况,我发现上述注册表项方法最可靠,但我需要一个更可靠的方法。 我已经转而使用 OpenNETCF 2.2 NetworkInformation 库来监视 WirelessZeroConfigInterface 的 CurrentIPAddress 属性。 我仍在使用 IPAQUtils 来管理 WLAN 无线电功率(我发现缺少 OpenNETCF 2.2 无线电控制,并且该设备只有一个 WiFi 网络条目),但这是我监视接口 IP 地址的方法:

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();                          
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM