读取范围内所有BLE设备的RSSI值

时间:2017-09-16 23:36:04

标签: android bluetooth-lowenergy estimote rssi

我正在做一个应用程序,需要确保所有BLE信标(estimote)的信号强度通过神经网络进行处理,我想将该RSSI存储在一个阵列中,该阵列将被发送到用C#实现的服务器,i&已经用wifi实现了它并想获得类似的结果,这是我的Wifi代码:

 ListaWifi = ObjWifi.getScanResults();
    rssi = new int[2];
    for (int i = 0; i < 2; i++) {
        rssi[i] = ListaWifi.get(i).level;
    }

此外,我希望数据始终具有相同的顺序:

int[] ret = new int[3];
for (int i = 0; i < tam; i++) {
            switch ((BSSID[i])) {
                case "9c:d6:43:94:ee:3f":
                    ret[0] = rssi[i];
                    break;
                case "9c:d6:43:94:f1:63":
                    ret[1] = rssi[i];
                    break;
                case "9c:d6:43:94:f1:99":
                    ret[2] = rssi[i];
                    break;
                default:
                    break;
            }
  }

有没有办法连续监控BLE信标的数据并以与wifi相同的方式存储??

1 个答案:

答案 0 :(得分:1)

我认为RSSI值包含在广告包中。我不知道任何C#,所以我无法帮助你从数据包中获取该值的具体细节(但它应该是可能的)。

然而,你是第二个规定,他们总是按照相同的顺序,需要一些搞乱。那些广告包是通过空中无特定顺序和多次广播的(信标不相互通信并协调其包)。您可以做的一个解决方案是监听一段固定的时间,收集所有广告包,然后按地址排序(您可能会从同一地址获得多个,因此可能会平均RSSI值)。我不知道为什么你要求它们处于相同的顺序,所以这可能不是你没有说过的问题的最佳解决方案。