我需要通过蓝牙低功耗4.0在iOS设备之间和某些外围设备之间提供通信,该设备具有板载蓝牙模块。
外围设备与DORJI DBM01蓝牙LE 4.0模块组装在一起,允许使用READ属性(UUID = 0xFFF4)和WRITE属性(UUID = 0xFFF1)的一个特性与之通信。 DORJI DBM01的技术手册在这里:http://dorji.com/docs/data/DBM01.pdf
我成功地在iOS设备(使用Core Bluetooth Framework)和上述外围设备之间建立了蓝牙LE连接,但是具有READ属性的特性没有通知属性( CBCharacteristicPropertyNotify in Core蓝牙框架)。因此我必须使用某种无限循环来扫描和读取具有READ属性的特征的新信息(通过调用CBPeripheral实例的方法 - readValueForCharacteristic:
)而不是订阅到一个特征值(通过调用方法setNotifyValue:forCharacteristic:
)。
是否可以添加通知属性来读取外围设备的特性(例如,由构建外围设备的工程师或添加一些在外围设备上运行的低级代码)或通知属性是BLE模块的一个组成部分(DORJI DBM01) )如果不使用其他BLE模块就无法添加它?
答案 0 :(得分:2)
DBM01基于德州仪器CC2540,与许多其他BLE到串行模块一样,它们可以实现通知,因此从技术上讲,它绝对可以实现。
但是,这需要DBM01的固件支持它,并且您当然会遇到在现有模块中升级所述固件的问题。除非模块上有未记录的功能,否则我怀疑在没有触及固件的情况下会有改变模块行为的方法。
另一种选择可能是(但这实际上取决于您的情况)切换中央和外围角色,以便在BLE模块写入数据时通知iOS应用程序。据我了解,这需要在硬件中完成(特定引脚上的电平需要更改)。