我试图让我的中央(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);
}
断点表示正在执行的代码和日志显示“发出挑战”,以正确的外围,它只是外围从来没有收到它。
代码外围接收:
-(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:类型:]并通过接收我的意思是外围didUpdateValueForCharacteristic回调。 – Hester