BLE-读取服务的多个特征值

时间:2019-04-24 16:29:02

标签: delphi bluetooth-lowenergy firemonkey

我正在Delphi中开发一个使用Bluetooth LE与智能设备通信的应用程序。 该设备具有大约11种服务,有时单个服务最多具有19个特征。 我能够发现所有服务和特征。

但是在循环中读取多个特征值时,我陷入了困境。 之间的间隔很短:

BluetoothLE.ReadCharacteristic(ConnectedDevice,GattCharacteristic);

BluetoothLECharacteristicRead 事件。

在请求下一个值之前,如何确保已正确收到上一个值? 有什么地方可以安全地使用Delphi进行操作吗?

预先感谢您的帮助

1 个答案:

答案 0 :(得分:0)

触发OnServicesDiscovered事件时,必须存储此服务的索引(当前设备上可用服务列表中的索引)。之后,您应该访问当前服务的可用特性列表(在OnServicesDiscovered事件中有一个特性列表:AServiceList[CurrentServiceIndex].Characteristics),并使用OnCharacteristicRead事件执行读取值,该事件是单独触发的要读取该值的一个特征。在OnCharacteristicRead事件中,有 ACharacteristic参数,其中包含当前的特征信息。

使用低功耗蓝牙: http://docwiki.embarcadero.com/RADStudio/Rio/en/Using_Bluetooth_Low_Energy