에 데이터 보내기. 나는 핵심 블루투스 프레임 워크를 사용하는 응용 프로그램에서 일하고 있습니다. 응용 프로그램은 시작, 잠금, 문 잠금 해제와 관련이 있습니다. 애플이 제공 한 예제 덕분에 거의 끝났다. 그것은 심장 박동 모니터와 온도 센서입니다.코어 블루투스 프레임 워크 Xcode
나는 2 개의 질문이 있습니다. 1 : 심장 박동 모니터 앱이 주변 기기에서 데이터를 읽는 반면 내 경우에는 startButton
이 눌린 주변 기기에 신호를 보내야합니다. 그래서 내 질문은 writeValueForCharacteristic
을 discoverCharacteristics
방법으로 사용해야하는지 여부입니다.
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");
}
}
}
}