计算 RSSI 值
Calculate RSSI Value
我了解从 BLE RSSI 值获取距离(对我来说是粗略的)的计算和方法。但是我的代码继续 return 'nan'。这意味着我在某个时候除以零。我的 arithmetic/code 正确吗?
float RSSIA = -40.0; // Reference RSSI value at 1 meter
float RSSIn = 1; // Path-loss exponent
//−(10n log10(RSSI) − A)
[peripheral readRSSI];
NSNumber *RSSI = peripheral.RSSI;
NSLog(@"%@|RSSI|%f|(m)", characteristic.service.peripheral.name ,-(10*RSSIn*(log10([RSSI doubleValue])-RSSIA)));
RSSI
通常为负值。并且仅对大于 0 的数字定义对数。这就是为什么你得到 nan
.
反正你不需要计算对数。 Documentation 指出 RSSI
已经以分贝为单位:
The current received signal strength indicator (RSSI) of the peripheral, in decibels.
另请注意,RSSI
属性 已弃用。您应该实施 CBPeripheralDelegate
并在 peripheral:didReadRSSI:error:
方法中计算距离。尽管 RSSI
属性 可用,但在调用 [peripheral readRSSI]
后其值可能不是最新的 - 正在异步读取 RSSI。
我了解从 BLE RSSI 值获取距离(对我来说是粗略的)的计算和方法。但是我的代码继续 return 'nan'。这意味着我在某个时候除以零。我的 arithmetic/code 正确吗?
float RSSIA = -40.0; // Reference RSSI value at 1 meter
float RSSIn = 1; // Path-loss exponent
//−(10n log10(RSSI) − A)
[peripheral readRSSI];
NSNumber *RSSI = peripheral.RSSI;
NSLog(@"%@|RSSI|%f|(m)", characteristic.service.peripheral.name ,-(10*RSSIn*(log10([RSSI doubleValue])-RSSIA)));
RSSI
通常为负值。并且仅对大于 0 的数字定义对数。这就是为什么你得到 nan
.
反正你不需要计算对数。 Documentation 指出 RSSI
已经以分贝为单位:
The current received signal strength indicator (RSSI) of the peripheral, in decibels.
另请注意,RSSI
属性 已弃用。您应该实施 CBPeripheralDelegate
并在 peripheral:didReadRSSI:error:
方法中计算距离。尽管 RSSI
属性 可用,但在调用 [peripheral readRSSI]
后其值可能不是最新的 - 正在异步读取 RSSI。