2009-02-11 3 views
1

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

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

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

ответ

1

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

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

Просто добавить к этому: значение будет содержать следующие битовые маскируется свойства: 2 - WiFiStatePowerOn 8 - WiFiStateConnecting 16 - WiFiStateConnected Обратите внимание, что они являются стандартными на WM5, но без документов для WM6 (но они, похоже, работают). Кроме того, обертки SystemState в .NET кажутся ненадежными. – bjanaszek

+0

Да. И 4 - «Сети доступны». 1 Кажется, что нужно установить все время, может быть, это означает, что «доступно оборудование Wi-Fi»? – Sam

1

Таким образом, в случае, если кто-то натыкается это, я нашел метод ключа реестра, описанный выше, в основном надежный, но мне нужен более надежный метод. Я перешел к использованию библиотеки 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++; 
} 
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

Это, кажется, не связано с вопросом. –

Смежные вопросы