J'essaie d'obtenir mon central (appareil iOS) pour communiquer avec deux périphériques (un périphérique iOS, un non). Individuellement, ils fonctionnent bien, mais je constate qu'une fois que les deux périphériques sont impliqués, seul le périphérique qui a été connecté le plus récemment peut recevoir des données du périphérique central. Est-il possible d'envoyer des données de la centrale à chaque périphérique sans déconnecter et reconnecter le périphérique?Central de communiquer avec plusieurs périphériques à la fois
Ceci est mon code écrit périphérique:
- (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);
}
points d'arrêt indiquent que le code est en cours d'exécution et les spectacles du journal « défi envoyé » à c'est juste que périphérique ne reçoit jamais le périphérique correct, il.
code pour recevoir périphérique:
-(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);
}
}
Comment gardez-vous la référence du périphérique? Comment envoyez-vous vos données aux deux périphériques (puisque je suppose que vous envoyez les mêmes données aux deux)? – Larme
S'il vous plaît montrer un peu de code – Paulw11
Il y a beaucoup de code et il est réparti de sorte qu'il est difficile de partager. Quelle partie du code est pertinente? J'envoie différentes données aux périphériques. Essentiellement, un périphérique est utilisé pour déclencher le central pour envoyer des données à un autre. Le central est toujours capable de recevoir des données de chaque périphérique, mais pas de les envoyer aux deux. Par send je veux dire [writeValue périphérique: forCharacteristic: type:] et par receive je veux dire périphérique didUpdateValueForCharacteristic callback. – Hester