문제

현재 HP IPAQ 210을 대상으로하는 앱을 개발하고 있습니다.이 앱의 일부는 WLAN 라디오를 사용하여 전원을 켜야합니다. 현재 IPAQ SDK (P/Invoke를 통해)를 사용하여 WLAN 라디오를 활성화하고 있지만 라디오가 선호하는 액세스 포인트와 연결했을 때 안정적으로 결정하는 데 어려움을 겪고 있습니다. 현재 Microsoft.windowsmobile.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 속성을 모니터링했습니다. 나는 여전히 WLAN 무선 전원을 관리하기 위해 IPAQUTILS를 사용하고 있습니다 (OpenNETCF 2.2 라디오 컨트롤이 부족한 것으로 나타 났으며 장치에는 단일 WiFi 네트워크 항목 만 갖추고 있음). :

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 ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top