我尝试使用CoreBluetooth去写入一个特定的、已知的特征。我认为这应该是可能的,因为我曾经使用过德州仪器的BLE工具,可以在连接的外设上选择“写入值”操作,然后只需输入特征UUID和要写入的值,它就能顺利执行。
据我理解,为了做到这一点,我必须调用
[peripheral writeValue:data forCharacteristic:...];
使用已配置正确UUID的CBCharacteristic
对象。
我尝试创建一个具有正确UUID和权限的CBMutableCharacteristic
,并且我知道这是外围设备配置文件中存在的特征,但当我尝试在外围设备上执行任何读/写操作时,会出现以下崩溃:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CBMutableCharacteristic peripheral]: unrecognized selector sent to instance 0x1ed57690'
这是我用来设置和写入特征的代码:
NSString *characteristicUUIDstring = @"fff1";
CBUUID *characteristicUUID = [CBUUID UUIDWithString:characteristicUUIDstring];
char dataByte = 0x10;
NSData *data = [NSData dataWithBytes:&dataByte length:1];
CBMutableCharacteristic *testCharacteristic = [[CBMutableCharacteristic alloc] initWithType:characteristicUUID properties:CBCharacteristicPropertyRead|CBCharacteristicPropertyWrite value:data permissions:CBAttributePermissionsReadable|CBAttributePermissionsWriteable];
[peripheral writeValue:data forCharacteristic:testCharacteristic type:CBCharacteristicWriteWithResponse];
CBMutableCharacteristic
和CBMutableService
接口,那么它们的存在意义是什么? - Dan F