Tom*_*ish 1 bluetooth objective-c ios cbperipheral cbcentralmanager
好的,所以我查看了一千个教程和其他Stack Overflow线程(所以请不要在没有回答问题的情况下列出重复)并且我无法弄清楚如何使用此功能.
我已经按照本教程:http: //code.tutsplus.com/tutorials/ios-7-sdk-core-bluetooth-practical-lesson--mobile-20741
我有一个系统,中央可以连接到外围设备并从中读取特征.
我现在正试图让我的中心重写特征中的数据,但我发现我所称的写入行被忽略了.
我已经在我的外围课程中声明了我的特点:
self.transferCharacteristic = [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:TRANSFER_CHARACTERISTIC_UUID] properties:CBCharacteristicPropertyNotify|CBCharacteristicPropertyWriteWithoutResponse|CBCharacteristicPropertyRead value:nil permissions:CBAttributePermissionsReadable|CBAttributePermissionsWriteable];
Run Code Online (Sandbox Code Playgroud)
在我的中央管理器中,我打过电话
[peripheral writeValue:[@"rewritten!" dataUsingEncoding:NSUTF8StringEncoding] forCharacteristic:characteristic type:CBCharacteristicWriteWithoutResponse];
Run Code Online (Sandbox Code Playgroud)
但这条线被忽略了.任何人都可以通过可能出错的方式与我交谈?我是否需要在外设类中添加方法?
此外,我已经尝试过使用WithResponse,但它甚至还没有从外围设备调用该方法.
小智 5
你还坚持这个问题吗?
我猜你的问题是持久的,因为你没有实现didReceiveWriteRequests方法.
// Processes write command received from a central.
- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests
{
CBATTRequest *request = [requests objectAtIndex:0];
NSData *request_data = request.value;
CBCharacteristic *write_char = request.characteristic;
//CBCentral* write_central = request.central;
//NSUInteger multi_message_offset = request.offset;
// Face commands this PWR RX to advertise serno UUID?
int total_write_requests = 0;
if ([ write_char.UUID isEqual:[CBUUID UUIDWithString:YOUR_CHARACTERISTIC_UUID]] )
{
// Read desired new_state data from central:
unsigned char *new_state = (unsigned char *)[request_data bytes];
my_new_state = new_state[0];
#endif
NSLog(@"- advertise serno UUID: %s", my_new_state ? "TRUE" : "FALSE" );
// Select UUID that includes serno of PWR RX, for advertisements:
++total_write_requests;
}
if ( total_write_requests )
{
[peripheral respondToRequest:request withResult:CBATTErrorSuccess]; // result = success
}
else
{
NSLog(@"_no_write_request_FAULT !!");
}
}
Run Code Online (Sandbox Code Playgroud)
注释掉 [peripheral respondToRequest:request withResult:CBATTErrorSuccess];,就像你的情况一样,你正在使用CBCharacteristicWriteWithoutResponse.
代码取自:iOS蓝牙LE peripheralManager didReceiveWriteRequests的示例
| 归档时间: |
|
| 查看次数: |
4392 次 |
| 最近记录: |