2013-02-11 4 views
0

에 데이터 보내기. 나는 핵심 블루투스 프레임 워크를 사용하는 응용 프로그램에서 일하고 있습니다. 응용 프로그램은 시작, 잠금, 문 잠금 해제와 관련이 있습니다. 애플이 제공 한 예제 덕분에 거의 끝났다. 그것은 심장 박동 모니터와 온도 센서입니다.코어 블루투스 프레임 워크 Xcode

나는 2 개의 질문이 있습니다. 1 : 심장 박동 모니터 앱이 주변 기기에서 데이터를 읽는 반면 내 경우에는 startButton이 눌린 주변 기기에 신호를 보내야합니다. 그래서 내 질문은 writeValueForCharacteristicdiscoverCharacteristics 방법으로 사용해야하는지 여부입니다.

2 : 너무 친절

- (IBAction) startButtonPressed: (id) sender { 

} 
- (IBAction) lockDoors: (id) sender { 

} 
- (IBAction) unLockDoors: (id) sender { 

} 

코드가 주어진다 여기에 버튼 코드를 도와합니다.

- (void) peripheral:(CBPeripheral *) peripheral didDiscoverServices:(NSError *)error 
{ 
    if (error) 
    { 
     NSLog(@"Discovered services for %@ with error: %@", peripheral.name, [error localizedDescription]); 
     return; 
    } 
    for (CBService * service in peripheral.services) 
    { 
     NSLog(@"Service found with UUID: %@", service.UUID); 

    if([service.UUID isEqual:[CBUUID UUIDWithString:@"1809"]]) 
    { 
     /* Car Start Service - discover 

     CAR_START_CHARACTERISTIC_UUID, 
     LOCK_DOOR_CHARACTERISTIC_UUID, 
     UNLOCK_DOOR_CHARACTERISTIC_UUID, 
     TRUNK_CHARACTERISTIC_UUID 
     ALARM_CHARACTERISTIC_UUID 

     */ 
     [peripheralManager discoverCharacteristics:[NSArray arrayWithObjects:[CBUUID UUIDWithString:@"2A1E"], [CBUUID UUIDWithString:@"2A1C"], [CBUUID UUIDWithString:@"2A21"], [CBUUID UUIDWithString:@"2A1F"],[CBUUID UUIDWithString:@"2A1G"],nil] forService:service]; 
    } 
    else if([service.UUID isEqual:[CBUUID UUIDWithString:@"180A"]]) 
    { 
     /* Device Information Service - discover manufacture name characteristic */ 
     [peripheralManager discoverCharacteristics:[NSArray arrayWithObject:[CBUUID UUIDWithString:@"2A29"]] forService:service]; 
    } 
    else if ([service.UUID isEqual:[CBUUID UUIDWithString:CBUUIDGenericAccessProfileString]]) 
    { 
     /* GAP (Generic Access Profile) - discover device name characteristic */ 
     [peripheralManager discoverCharacteristics:[NSArray arrayWithObject:[CBUUID UUIDWithString:CBUUIDDeviceNameString]] forService:service]; 
    } 
} 

}

- (void) peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error 
{ 

    if (error) 
    { 
     NSLog(@"Discovered characteristics for %@ with error: %@", service.UUID, [error localizedDescription]); 
     return; 
    } 
    if([service.UUID isEqual:[CBUUID UUIDWithString:@"1809"]]) { 
     for (CBCharacteristic * characteristic in service.characteristics) 
     { 
      /* Set Car Start */ 
      if([characteristic.UUID isEqual:[CBUUID UUIDWithString:@"2A1C"]]) 
      { 
       self.carStartCharacteristic = characteristic; 
       NSLog(@"Found Car Start Characteristic"); 
      } 
      /* Set Lock Doors */ 
      if([characteristic.UUID isEqual:[CBUUID UUIDWithString:@"2A1E"]]) 
      { 
       self.lockDoorsCharacteristic = characteristic; 
       NSLog(@"Found Lock Doors Characteristic"); 
      }  
      /* Set Un Lock Doors */ 
      if([characteristic.UUID isEqual:[CBUUID UUIDWithString:@"2A11"]]) 
      { 
       self.unLockDoorsCharacteristic = characteristic; 
       NSLog(@"Found UnLock Doors Characteristic"); 
      } 
      /* Set Trunk Open */ 
      if([characteristic.UUID isEqual:[CBUUID UUIDWithString:@"2A13"]]) 
      { 
       self.trunkCharacteristic = characteristic; 
       NSLog(@"Found Trunk Characteristic"); 
      } 
      /* Set Alarm */ 
      if([characteristic.UUID isEqual:[CBUUID UUIDWithString:@"2A14"]]) 
      { 
       self.alarmCharacteristic = characteristic; 
       NSLog(@"Found Alarm Characteristic"); 
      } 

     } 
    }if([service.UUID isEqual:[CBUUID UUIDWithString:@"180A"]]) 
    { 
     for (CBCharacteristic * characteristic in service.characteristics) 
     { 
      /* Read manufacturer name */ 
      if([characteristic.UUID isEqual:[CBUUID UUIDWithString:@"2A29"]]) 
      {     
       [peripheralManager readValueForCharacteristic:characteristic]; 
       NSLog(@"Found a Device Manufacturer Name Characteristic - Read manufacturer name"); 
      }   
     } 
    } 

    if ([service.UUID isEqual:[CBUUID UUIDWithString:CBUUIDGenericAccessProfileString]]) 
    { 
     for (CBCharacteristic *characteristic in service.characteristics) 
     { 
      /* Read device name */ 
      if([characteristic.UUID isEqual:[CBUUID UUIDWithString:CBUUIDDeviceNameString]]) 
      {     
       [peripheralManager readValueForCharacteristic:characteristic]; 
       NSLog(@"Found a Device Name Characteristic - Read device name"); 
      } 
     } 
    } 

} 

답변

0
  1. 당신은 모두를 사용합니다. 이전에 연결되어 있지 않다면 스캔하여 서비스를 찾은 다음 특성을 찾습니다. 일단 완료되면, writeValueForCharacteristic을 쓰고 자하는 값으로 버튼에서 호출 할 것입니다.

    • (IBAction를) startButtonPressed (ID) 송신기 { [주연 writeValue : yourNSData forCharacteristic : yourCBCharacteristic 유형 : yourWriteType]; }
관련 문제