ObjectiveC:按特定顺序读取特征
我对客观C编程相当陌生,所以请原谅,如果这是一个非常简单的问题。ObjectiveC:按特定顺序读取特征
我通过蓝牙连接到外围设备,并希望能够以特定顺序读取设备特性。从一个特征返回的值将决定下一个要读取的特征。
目前,如果我发现一个新的特征相应代码
[peripheral discoverCharacteristics:@[[CBUUID UUIDWithString:MyUUID_1]] forService:service];
我可以正确地发现特性,可以读出值。我的问题在于,如果在发现第一个特征之后,然后尝试使用与上述相同的代码发现第二个特征,但是使用MyUUID_2。
当didDiscoverCharacteristicsForService方法被称为服务既具有MyUUID_1和MyUUID_2特性。因此,当循环访问方法中的if循环时,第一个特征会再次使用。
有没有办法从服务清除所发现的特点,因此,唯一的特点didDiscoverCharacteristicsForService内循环通过被称为由discoverCharacteristics
的想法通话所需的特性如下:为了能够读/写特征,您需要有有效的CBService
和CBCharacteristic
的实例。
当您拨打discoverServices
和discoverCharacteristics
方法时,您将收回CBService
和CBCharacteristics
的实例。您可以依赖这些实例(也称为有效),直到外设断开连接。因此,一旦发现某个特征,就可以保留对该特征的引用,并在回调之外读取/写入其值。didDiscoverCharacteristicsForService:
如果您希望能够以预定义顺序读取特征,则首先需要在两个步骤:
- 发现您对服务感兴趣的所有特征。
- 一旦你发现了所有这些特征,请阅读第一个特征并等待答案。
- 然后阅读第二个,然后等待答案。
一种方式做这将是包装内NSOperations
这些步骤,你可以创建一个新的委托协议,以帮助您或使用“NSNotificationCenter”
@protocol MyBLEProtocol <NSObject>
- (void) didFinishReadFirstCharacteristic;
- (void) didFinishReadSecondCharacteristic;
@end
非常感谢您的回复,并为这样做的速度。 您的意思是我应该发现服务,然后使用discoverCharacteristics调用发现我可能需要的所有特征。然后在回调didDiscoverCharacteristicsForService里面按照我想要的顺序读取它们? Then –
您不必读'didDiscoverCharacteristicsForService'中的特征。您可以使用委托或NSOperations包装所有内容。我会尽力更新我的第一篇文章。 – yageek
因此,我的问题是,呼叫可能是FFF1 - > FFF2 - > FFF3,而第二次可能是FFF5 - > FFF3 - > FFF2 –