从BLE设备获得响应

时间:2016-12-08 09:24:03

标签: ios swift3 bluetooth-lowenergy response

我很擅长使用蓝牙设备。到目前为止一切都很完美。但有一个问题我不知道如何处理。 我有一个led灯设备,我可以改变从颜色到速度,闪烁,褪色等所有东西。 现在我想读取当前的设备状态(例如,设备是打开还是关闭)。我有一个设备文件说:

  

查询:   a)发送订单:【0XEF】+【0X01】+【0X77】   b)控制器响应:   【0X66】+【8bit设备名称(0x14)】+【8bit开关】+【8bit模式值】+【8bit运行/暂停状态】+【8bit速度值】+【8bit红色数据】+【8bit绿色】数据】+【8位蓝色数据】+【8位温暖】+【8位版本号码】+【0X99】

如何获得控制器响应? didWriteValueFor函数只是返回我,或者写入调用是否成功。

1 个答案:

答案 0 :(得分:2)

如果特征支持通知您可以转向使用该行的notyfying:

peripheral.setNotifyValue(true, for: characteristic)

将具有该特性的外设的委托设置为正确的文件非常重要,在我的情况下它是:

peripheral.delegate = self

在此之后,当某些内容发生变化时,外围设备将在您的代码中触发此方法:

func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
    //data is in characteristic.value
}

如果您的特性不支持notyfying,您可以尝试将数据写入外设,响应类型设置为.withReponse,如下所示:

peripheral.writeValue(data, for: characteristic, type: .withResponse)

请记住设置外围代理,之后外围设备将在每次成功写入后触发此方法:

    //write response
    func peripheral(_ peripheral: CBPeripheral, didWriteValueFor characteristic: CBCharacteristic, error: Error?) {
        //data is in characteristic.value
    }