Мониторинг радиосвязи WLAN в Windows Mobile 6 / C # - PullRequest
1 голос
/ 12 февраля 2009

В настоящее время я разрабатываю приложение, предназначенное для HP IPAQ 210. Часть этого приложения требует включения / включения радиомодуля WLAN для подключения к предварительно настроенной точке доступа. В настоящее время я использую IPAQ SDK (через P / Invoke) для включения радио WLAN, но у меня возникают проблемы с надежным определением, когда радио установило соединение с предпочтительной точкой доступа. В настоящее время я наблюдаю за свойством Microsoft.WindowsMobile.Status.SystemState.WiFiStateConnected, но я бы предпочел подписаться на событие, чтобы получать уведомления при установлении соединения.

Я немного осмотрел библиотеку OpenNETCF, и в 2.3 есть многообещающие вещи, но на данный момент мы застряли на 2.2.

Есть ли надежный способ определения состояния соединения?

Ответы [ 3 ]

1 голос
/ 08 мая 2009

Итак, на случай, если кто-нибудь еще столкнется с этим, я нашел описанный выше метод ключа реестра в основном надежным, но мне нужен более надежный метод. Я перешел к использованию библиотеки OpenNETCF 2.2 NetworkInformation для наблюдения за свойством CurrentIPAddress WirelessZeroConfigInterface. Я все еще использую 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++;
}
1 голос
/ 19 февраля 2009

Это ужасно, и это не событие, но если ничего не помогает, вы можете попробовать проверить состояние оборудования Wifi, прочитав его ключ реестра:

int key = (int)Registry.GetValue("HKEY_LOCAL_MACHINE\\System\\State\\Hardware", "WiFi", -1);
0 голосов
/ 14 июля 2012
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();                          
}
...