我試圖讓我的中央(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