如何使TXPOPETH计算与RSSI的距离
how to get txPower to calculate distance from RSSI
我从Google代码中获得了此代码:
void QBluetoothDeviceDiscoveryAgent::deviceDiscovered(const QBluetoothDeviceInfo &info)
QBluetoothDeviceInfo::rssi().
但是如何获得rssi距离'qbluetoothservicediscoveryagent的距离?我尝试了qbluetoothservicediscoveryagent ServiceInfo;Quint I = ServiceInfo.device()。rssi();
在这里i = -43
如何将其转换为距离?我得到了链接了解IBEACON距离但是如何获得发射器功率呢?根据公式计算距离?
确保您了解qbluetoothdeviceinfo :: rssi()的含义。调用此功能将立即使用最后一个存储的值返回,当设备被扫描最后一个时。如果您只收到一个广告包,则恰好在E.X.-90dB,然后立即连接,此功能将继续返回-90,直到您断开连接并再次扫描。连接的设备通常不会发送广告包装,因此您可以通过QT阅读的RSSI在连接期间不会更新。
至于接近度,获得良好的值并不容易。要准确地从RSSI转换为几何距离,您必须知道发件人的原始/预期信号 - 强度(或1M距离)。设备之间的值将有所不同。更糟糕的是,在实践中,它也可能因巨大的利润而有所不同,具体取决于发件人的电池级,发件人/接收器的物理方向,彼此质量,各个零件的质量,来自其他RF设备的随机干扰....
BLE-Folk有一个博客,解释了您应该如何做到这一点。您可以在这里阅读。链接的文章不读取或假设发件人的理论最大RSSI,而是倾向于随着时间的推移收集多个RSSI-VALUE( 做一些均值/模式过滤),并使用与先前的当前均值值价值以确定您是否正在接近或远离发件人。再加上您必须收集的现实世界数据,再加上文档阅读和常识性的微调,您可能可以为许多甚至大多数发件人设备开发一个接近计算紧邻。最后,这是您要"校准"的数量的数量与较高或更低的TX功率级别变化的设备之间的权衡。
缺点 - 您无法为市场上的所有可能设备测试,正如我之前所说,不同的设备具有不同的TX功率级别。通过这种方法,您可以开发一种算法,以对具有相等的信号配置的设备进行相当不错的测量,但其他设备似乎远远不远。该文章的作者谈到了为不同供应商创建不同的配置文件,但这并不是真的会有所帮助(考虑两个相同的信标("大/小"),一个是大型供应商,一个是针对小型室内地点 - 仅用RSSI,您就无法可靠地确定是否可以可靠地确定除非他们通过差距或以其他方式识别自己,否则您靠近小型信标或中等范围(如果您打算在MacOS或iOS上部署)。
此外,为Android Ble开发的Joyride做好准备。一些供应商知道,他们的实施情况非常糟糕和破碎,他们甚至在所有rom上都禁用了HCI-Logging-feature,以将其隐藏起来。其他人可能会像以太网一样被吹入Win98。
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 用C++程序计算圆锥体的体积、球体的体积、八边形的面积和两点之间的距离
- 计算所有对之间的曼哈顿距离
- 如何使用发送数据包所花费的时间计算两个节点之间的距离?
- Levenshtein 两个文件的距离花费了太多时间
- 两个有符号数字之间的距离
- 计算车辆之间的距离并设置速度,使距离保持不变,例如 5 米
- 计算两个迭代器之间的距离时"Vector Iterators Incompatible"
- 浮动距离为80位长双精度
- 查找彼此之间具有不同最小距离的随机数
- 相同字符之间的最小距离
- 如何根据距离矩阵确定节点?
- 如何排列二进制字符串以最小化它们之间的距离
- 曼哈顿距离比曼哈顿距离+线性冲突效果更好
- 使用C++中的链表对与原点的距离、x 和 y 坐标进行排序
- 应该如何编写用于计算最近点距离的C++函数?
- 有效地计算像素到其对应核线的距离
- 堆和堆栈之间的距离
- std::使用迭代器映射查找距离,程序不会终止
- 如何使TXPOPETH计算与RSSI的距离