【发布时间】:2017-10-05 01:03:06
【问题描述】:
我正在使用一个 arduino feather BLE 板并尝试创建一个可以通过 BLE 将数据发送到板的 iOS 应用程序。我可以连接,但无法访问 txCharacteristic
func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
guard let characteristics = service.characteristics else {
return
}
for characteristic in characteristics {
if characteristic.properties.contains(.write) || characteristic.properties.contains(.writeWithoutResponse) {
writableCharacteristic = characteristic
}
// if(characteristic.uuid == CBUUID(string: "6e400002-b5a3-f393-e0a9-e50e24dcca9e"))
// {
// txCharacteristic = characteristic
// }
var txUUID = CBUUID(string: "6e400002-b5a3-f393-e0a9-e50e24dcca9e")
let temp = characteristic.uuid.uuidString;
switch characteristic.uuid {
case txUUID:
txCharacteristic = characteristic;
break;
default:
break;
}
peripheral.setNotifyValue(true, for: characteristic)
}
}
此代码有效,但仅发现以下 UUID:
temp String "00001532-1212-EFDE-1523-785FEABCD123"
temp String "00001531-1212-EFDE-1523-785FEABCD123"
temp String "00001534-1212-EFDE-1523-785FEABCD123"
我发现这些 UUID 是 DFU UUID。我怎样才能发现 txCharacteristic?
添加了关于我如何调用discoverCharacteristics() 的更多信息:
extension SimpleBluetoothIO: CBPeripheralDelegate {
func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) {
guard let services = peripheral.services else {
return
}
targetService = services.first
if let service = services.first {
targetService = service
peripheral.discoverCharacteristics(nil, for: service)
}
}
【问题讨论】:
-
您确定在正确的设备上提供正确的服务吗?你打电话给
discoverServices和discoverCharacteristics的参数是否正确?尝试下载 BLE 浏览器并检查它所看到的内容。 -
您好,感谢您的帮助。我调用了 discoverServices(nil) 来发现所有服务。我在上面的问题中添加了调用 discoverCharacteristics() 的代码。
标签: ios swift arduino bluetooth-lowenergy adafruit