2009-11-06 36 views
10

많은 과학자들은 무선 랜을 통해 연결 장치의 신호 강도, 도착 시간, 왕복 시간을 측정하여 추적 할 수있는 방법을 문서화 papers을 게시 한 등 내가 모든 .NET API를 사용하여 Windows에서이 값에 액세스 할 수있는 방법을 어떤 생각?C# - WLAN 신호 강도 등에 액세스하려면 어떻게해야합니까?

또는 당신은 위치 추적을 위해 이미 사용 가능한 소프트웨어 SDK를 알고 있습니까?

답변

11

안녕하세요 : 저는 여기에 이전에 제기하고 here 대답 한 질문에서 적응 코드입니다 내가

+2

안녕하세요 코디,이 예제를 확장하여 사용 가능한 무선 랜 카드 중 하나에 연결할 수 있습니까? –

+3

이 답변은 nativewifi 네임 스페이스가 http://managedwifi.codeplex.com/ – Joe

+0

에서 찾을 수 있음을 언급 했음에 틀림 없습니다. 802.11n, 802.11g와 같은 와이파이 모드를 찾을 수 있습니까? –

1

윈도우 자체는 지금 Location API 제공합니다.

+0

좋은 생각을 즐길 것이 도움이 될 것입니다 희망하지만, WLAN 추적에 대한 언급, 그들이 없다고 가정하고 우리는 느리고 부정확 한 GPS 장치를 가지고 .... –

+0

위치 API는 "기본"기술에 의존하지 않으며 모든 유형의 위치 소스에서 입력 할 수 있습니다. WLAN을 사용하려면 Windows 용 소스 "드라이버"를 작성해야합니다. 이 모든 위치 API 수있는 응용 프로그램이 소스로 활용할 수 있도록, 유사 응용 프로그램이 여러 소스를 사용할 수 있습니다. 그러나 실내 위치 확인을 위해서는 WLAN이 최상의 솔루션이 아님을 알게 될 것입니다. – andy

9

Managed Wifi API 신호 강도 정보를 제공 할 것이다.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 
using NativeWifi; 

class Program 
{ 

    static void Main(string[] args) 
    { 

     WlanClient client = new WlanClient(); 
     // Wlan = new WlanClient(); 
     try 
     { 
      foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) 
      { 

       Wlan.WlanBssEntry[] wlanBssEntries = wlanIface.GetNetworkBssList(); 

       foreach (Wlan.WlanBssEntry network in wlanBssEntries) 
       { 
        int rss = network.rssi; 
        //  MessageBox.Show(rss.ToString()); 
        byte[] macAddr = network.dot11Bssid; 

        string tMac = ""; 

        for (int i = 0; i < macAddr.Length; i++) 
        { 

         tMac += macAddr[i].ToString("x2").PadLeft(2, '0').ToUpper(); 

        } 



        Console.WriteLine("Found network with SSID {0}.", System.Text.ASCIIEncoding.ASCII.GetString(network.dot11Ssid.SSID).ToString()); 

        Console.WriteLine("Signal: {0}%.", network.linkQuality); 

        Console.WriteLine("BSS Type: {0}.", network.dot11BssType); 

        Console.WriteLine("MAC: {0}.", tMac); 

        Console.WriteLine("RSSID:{0}", rss.ToString()); 


       } 
       Console.ReadLine(); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 

     } 
    } 
} 

이 좋은 코드 느릅 나무는 MAC ADRESS RSSI SSID 모든 AP를 검색 할 수 있습니다 Windows 7의 경우

static void Main(string[] args) 
{ 
    WlanClient client = new WlanClient(); 
    foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) 
    { 
     Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList(0); 
     foreach (Wlan.WlanAvailableNetwork network in networks) 
     { 
      Console.WriteLine("Found network with SSID {0} and Siqnal Quality {1}.", GetStringForSSID(network.dot11Ssid), network.wlanSignalQuality); 
     } 
    } 
} 

static string GetStringForSSID(Wlan.Dot11Ssid ssid) 
{ 
    return Encoding.ASCII.GetString(ssid.SSID, 0, (int) ssid.SSIDLength); 
} 
+2

+1 좋은 답변입니다. 매우 명확한! –

관련 문제