1

Mac OS X 용 CoreWLan 프레임 워크를 사용하여 액세스 포인트에서 RSSI 값을 읽습니다.CoreWLan - CWNetwork와 CWInterface 간의 RSSI 값 차이

나는 두 가지 방법으로 그것을 할 수 있습니다 : 네트워크 인터페이스 사용 (즉 나의 네트워크에 연결되어있는)

currentInterface = [CWInterface interface]; 
[currentInterface rssivalue]; 

를 사용

그러나

currentInterface = [CWInterface interface]; 
networks = [[currentInterface scanForNetworksWithName:@"mySSID" error:nil] allObjects]; 
[networks[0] rssiValue]; 

을, 그것은 보인다 이 두 가지 방법 (인터페이스가 네트워크에 연결되어 있기 때문에 동일한 값을 제공해야 함)은 다른 결과를 제공합니다. 후자의 방법은 인터페이스 방법보다 3-5 dB의 값을 지속적으로 제공하는 것 같습니다.

왜 이러한 불일치가 발생하고 있습니까? 어느 것이 더 "합법적"입니까?

답변

1

현재 인터페이스 (첫 번째 경우)의 rssiValue 속성은 집계 rssi를 제공합니다. 스캔 결과 (두 번째 경우)의 rssiValue가의 스캔 순간에 rssi 값 을 제공합니다. 그 이유는 일반적으로 첫 번째가 두 번째보다 적습니다. 그러나 때로는 간섭으로 인해 스캔 결과에서 매우 낮은 rssi 값을 볼 수 있습니다.

또 다른 점이 있습니다. 동일한 SSID를 가진 액세스 포인트가 거의 없을 수 있으며,이 경우 네트워크 [0]가 현재 연결된 하나의 결과가 될지 확신 할 수 없습니다. 먼저 bssid 값을 확인해야합니다.

+0

감사합니다. 그리고 네, 우선 BSSID를 확인합니다. 코드 단순화를 단순화로 사용했습니다. 전체 RSSI는 평균을 의미합니까? 그렇다면 얼마나 많은 평균이 소요됩니까? –

+0

모든 문서는 "현재 집계 RSSI 측정을위한 인터페이스를 동적으로 쿼리합니다"라고 말합니다. 그래서 아마 평균 값입니다. 확실히 말할 수는 없지만, 연결이 성립 된 이후 각 스캔 결과에서 rssi 값이 필요하다고 생각합니다. – cody