Pregunta

Actualmente estoy desarrollando una aplicación dirigida al HP IPAQ 210. Parte de esta aplicación requiere que la radio WLAN esté habilitada/encendida para conectarse a un punto de acceso preconfigurado. Actualmente estoy usando el IPAQ SDK (a través de P/Invoke) para habilitar la radio WLAN, pero tengo problemas para determinar de manera confiable cuándo la radio ha establecido una conexión con el punto de acceso preferido. Actualmente estoy monitoreando la propiedad Microsoft.WindowsMobile.Status.SystemState.WifistateConnected, pero preferiría suscribirme a un evento que se notificará cuando se establezca la conexión.

He mirado un poco en la biblioteca OpenNetCF, y parece haber cosas prometedoras en 2.3, pero estamos atrapados en 2.2 por el momento.

¿Existe una forma confiable de determinar el estado de conexión?

¿Fue útil?

Solución

Es feo, y no es un evento, pero si todo lo demás falla, podría intentar verificar el estado de hardware WiFi leyendo su clave de registro:

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

Otros consejos

Entonces, en caso de que alguien más ocurra sobre esto, he encontrado que el método de clave de registro descrito anteriormente en su mayoría confiable, pero necesitaba un método más confiable. Me mudé a usar la biblioteca OpenNetCF 2.2 NetworkInformation para monitorear la propiedad CurrentIpAddress de la WirelesszeroConFigInterface. Todavía estoy usando los iPaqutils para administrar la potencia de radio WLAN (he encontrado que falta el control de radio OpenNetCF 2.2 y el dispositivo solo tendrá una sola entrada de red WiFi), pero así es como monitoreo la dirección IP de la interfaz de la interfaz de la interfaz :

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();                          
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top