Я пытаюсь подключить центральное устройство (устройство iOS) к двум периферийным устройствам (одно устройство iOS, а другое нет). Индивидуально они работают нормально, но я нахожу, что, когда я получаю оба периферийных устройства, только периферийное устройство, которое было подключено к последнему, может получать данные с центрального устройства. Есть ли способ отправить данные из центрального в каждое периферийное устройство без отключения и повторного подключения периферии?Центральная связь с несколькими периферийными устройствами сразу
Это мой код для записи периферийный:
- (void) peripheral: (CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBChatacteristic *)characteristic error:(NSError *)error{
NSString *newValue = [[NSString alloc] initWithData:characteristic.value encoding:NSUTF8StringEncoding];
NSLog(@"Received: %@ from %@", newValue, peripheral.name);
CBPeripheral *sender = peripheral;
if([newValue isEqualToString:@"ready"]){
NSData *messageValue = [@"challenge dataUsingNSUTF8StringEncoding];
[sender writeValue:messageValue forCharacteristic:_writeCharacteristic type:CBCharacteristicWriteWithResponse];
NSLog(@"Challenge sent to %@", sender.name);
}
Breakpoints указать код выполняется и бревенчатые шоу «вызов посланные» на правильный периферийный, это просто, что периферическое никогда не получает его.
Код для периферийного приема:
-(void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray<CBATTRequest *> *) requests{
for(int i=0; i<requests.count; i++){
CBATTRequest *request = requests[i];
if([request.characteristic.UUID isEqual:_writeCharacteristic.UUID]){
NSString *stringValue = [[NSString alloc] initWithData:request.value encoding:NSASCIIStringEncoding];
NSLog(@"Write Request: %@", stringValue);
}
}
Как вы относитесь к периферии? Как вы отправляете свои данные на оба периферийных устройства (так как я думаю, вы отправляете одни и те же данные для обоих)? – Larme
Просьба показать код – Paulw11
Существует довольно много кода, и оно распространяется, поэтому его сложно разделить. Какая конкретная часть кода имеет значение? Я отправляю разные данные в периферийные устройства. По сути, одно периферийное устройство используется для запуска централизованной передачи данных другому. Центральная станция всегда может получать данные от каждого периферийного устройства, а не отправлять их обоим. Посылаю, что я имею в виду [периферийное writeValue: forCharacteristic: type:], и, получая, я имею в виду периферийное didUpdateValueForCharacteristic callback. – Hester