我正在使用Bluejay框架编写一个应用程序,它将连接到我的BLE设备。我有一个服务,可以在固件启动完成时流式传输数据。
我正在调用这个方法:
func listenLiveSignals()
{
let requestedChar = CharacteristicIdentifier(uuid: NotioModel.signalLiveData, service: ServiceIdentifier(uuid: NotioModel.SignalsService))
bluejay.listen(to: requestedChar, multipleListenOption: .replaceable) {[weak self] (result: ReadResult<NotioSignals>) in
print("Signals update")
switch result {
case .success(let signals):
self?.liveSignals = signals
case .failure(let err):
print("Error: \(err)")
}
}
}在日志中我得到了这个
Queue will start Bluejay.ListenCharacteristic...
Will start listening to Characteristic: 9AFABEDB-50F5-4766-8EE1-709073D6EB08, Service: 9AFAABCD-50F5-4766-8EE1-709073D6EB08 on NOTIOFE46EEBB.
Listening to Characteristic: 9AFABEDB-50F5-4766-8EE1-709073D6EB08, Service: 9AFAABCD-50F5-4766-8EE1-709073D6EB08 on NOTIOFE46EEBB.
Queue has removed Bluejay.ListenCharacteristic because it has finished.
Queue is empty, nothing to update.这是我用来连接外围设备的代码。
func connect(_ peripheral: PeripheralIdentifier) {
self.bluejay.connect(peripheral, timeout: .seconds(15)) { connectionResult in
switch connectionResult {
case .success:
print("Connection attempt to: \(peripheral.description) is successful")
case .failure(let error):
print("Error: \(error)")
}
}
}我的项目也连接到加载了BlinkyLed服务的北欧开发板,并且使用相同的代码连接到上面的按钮服务,它工作得很好,这对我来说有点令人费解。
如果有人知道为什么Bluejay这样做,让我知道,或者如果你需要更多的核心,也让我知道。
发布于 2021-03-18 22:24:03
问题出在固件方面,BLE设备需要我告诉它激活数据流。XD很重要的一点是记录API,即使它是一个固件。
https://stackoverflow.com/questions/66681959
复制相似问题