2015-11-27 62 views
1

BLE是否支持ping操作,即向其他设备发送消息并接收其状态?BLE是否支持Ping?

我想在Android上编写一个应用程序,它会ping每个附近的设备并计算发送时间和接收答案之间的时间,有可能吗?

+0

不知道你喜欢做什么。你可以扫描nerby设备,他们甚至会给你一个RSSI值。哪些可以用来计算距离 – woley

+0

我不想使用RSSI来计算距离我想要使用到达时间(ToA) – Radko

回答

3

正如您在评论中指出的那样,您喜欢使用到达时间或到达时间差算法来计算基于蓝牙的距离。

据我所知,这是目前在蓝牙环境中更理想的方法。由于无线电信号以轻微的速度传播(一纳秒内约为29.979厘米),您将需要较高的采样分辨率才能获得准确的结果。每毫微克的偏差都会导致大约30厘米的误差。

随着WiFi,这是用专用芯片组完成的。据我所知,这是目前不可能与Android,因为它需要很多低级支持(芯片组和操作系统)

希望这会有所帮助!

这里有一些来源

+0

当然这会有很大的帮助。 所以,我的第一个计划失败了。 是否有可能从android创建一个特殊的灯塔?特别的,因为有了信标信号,我想添加信号的ID,使附近的设备能够识别每个信号。 – Radko

+0

这应该是可能的。查看BLE GATT协议,可以读取/写入其他设备的特性(参数)。你将需要一个设备在外设模式和一个在中央模式。这应该是一个很好的开始https://www.youtube.com/watch?v=vUbFB1Qypg8 – woley

0

你可以很容易地看到发现的时间戳每个设备在onScanResult方法:

@Override 
public void onScanResult(int callbackType, ScanResult result){ 

Long lastSeen = result.getTimestampNanos(); 
//rest of your code 

} 

查看Android Documentation。您可以使用此时间戳和开始扫描的时间来获取每个设备的近似响应时间。