首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(BlueTooth启用设备) ios

(BlueTooth启用设备) ios
EN

Stack Overflow用户
提问于 2015-05-21 07:55:23
回答 1查看 119关注 0票数 2

如果特征中有多个属性,如何读取和写入值?

例如,LED颜色为RGB:

Characteristic: LED彩色UUID: 7A5A0011-D04B-48EB-B3FA-32EB4F0FFAC4 LED颜色和强度的RGB格式。名称绿色名称蓝色格式无符号8位整数访问读取,写入值0- 255格式无符号8位整数访问读取,写入值0- 255名称红色格式无符号8位整数访问读取,写入值0- 255

那么如何读取/写入RGB的值呢?使用下面的代码,我只得到一个值

代码语言:javascript
复制
if ([service.UUID isEqual:[CBUUID UUIDWithString:LED_Service_UUID]]){
        for (CBCharacteristic *aChar in service.characteristics) {
            /********* Characteristic: LED Link***************/

            NSLog(@"%@",aChar.UUID);

            if ([aChar.UUID isEqual:[CBUUID UUIDWithString: LED_CHAR_COLOR_UUID]]) {
                [peripheral readValueForCharacteristic:aChar];
                NSLog(@"%@%@%@",aChar.value,aChar.value,aChar.value);
       }
EN

回答 1

Stack Overflow用户

发布于 2015-05-22 11:47:44

代码语言:javascript
复制
if ([aChar.UUID isEqual:[CBUUID UUIDWithString: LED_CHAR_COLOR_UUID]]) 
{
    _colorCharacteristic = aChar; //It's a property, save it
   [peripheral readValueForCharacteristic:aChar];
}

这应该触发委托方法:peripheral:didUpdateValueForCharacteristic:error:

在里面,它:

代码语言:javascript
复制
if ([characteristic UUID] isEqual:[CBUUID UUIDWithString: LED_CHAR_COLOR_UUID]])
{
    NSData *valueData = [characteristic value];
}

对于每个组成部分(红色、绿色、蓝色、强度):

代码语言:javascript
复制
int aComponent;
NSData *aComponentData = [valueData subdataWithRange:NSMakeRange(0, 2)]; //Range to be defined for each components
[aComponentData getBytes:&aComponent length:sizeof(aComponent)];
NSLog(@"aComponent: %d", aComponent);

然后可以使用UIColor从每个组件创建一个colorWithRed:green:blue:alpha:

要编写,您必须再次拥有一个看起来尊重所使用的格式的NSData

代码语言:javascript
复制
uint8_t colorValues [] = {redValue, greenValue, blueValue, intensityValue};
NSData *data = [NSData dataWithBytes:colorValues length:sizeof(colorValues)];
[_peripheral writeValue:yourValueData forCharacteristic:_colorCharacteristic type: CBCharacteristicWriteWithResponse];` //(or  `CBCharacteristicWriteWithoutResponse` depending on the doc of your device).
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30367781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档