TI中文支持网
TI专业的中文技术问题搜集分享网站

关于蓝牙4.0的特征值属性的问题,请各位指点一下、

我用协议栈自带的SimpleBLEPeripheral工程,修改了特征值2的权限,把它从原来的只读改为了可读可写,然后烧进板子之后,用手机连接板子,然后对特征值2进行写操作,操作结果失败,返回错误代码10。请问可能的原因有哪些?

相关代码如下:

// Characteristic 2 Declaration
{ { ATT_BT_UUID_SIZE, characterUUID },
GATT_PERMIT_READ , 0,
&simpleProfileChar2Props //读写
},

// Characteristic Value 2
{ { ATT_BT_UUID_SIZE, simpleProfilechar2UUID },
GATT_PERMIT_READ | GATT_PERMIT_WRITE, 0, &simpleProfileChar2 },

// Characteristic 2 User Description
{ { ATT_BT_UUID_SIZE, charUserDescUUID },
GATT_PERMIT_READ, 0, simpleProfileChar2UserDesp },

相关变量内容如下:

// Simple Profile Characteristic 2 Properties
static uint8 simpleProfileChar2Props = GATT_PROP_READ | GATT_PROP_WRITE;

// Characteristic 2 Value
static uint8 simpleProfileChar2 = 0;

// Simple Profile Characteristic 2 User Description
static uint8 simpleProfileChar2UserDesp[17] = "Characteristic 2\0";

请大神解答一下,谢谢。

change tsai:

simpleGATTprofile.c

// Simple Profile Characteristic 2 Propertiesstatic uint8 simpleProfileChar2Props = GATT_PROP_READ;  

是否修改对GATT_PROP_READ | GATT_PROP_WRITE;

Kai Xiang xu:

回复 change tsai:

你说的那里我修改了。

找到问题了。。。原来是读写属性的回调函数里没有做相应的修改,所以导致写入不成功。

不过现在又有一个问题 了,那就是假如一个属性的权限是只写的,我用开发板做主机就不能发现这个属性,不知道是怎么回事。。。再加一个读的属性(也就是修改为可读可写的)就能被发现(这里是根据UUID来进行发现的)、请问这是怎么回事?

书上有部分内容提到,具有只读属性的特性值只能通过该特性的UUID来获取其句柄,但是我就是这样操作的,然而。。。。还是来看看代码吧:

simpleBLEDiscState = BLE_DISC_STATE_CHAR; req.startHandle = simpleBLESvcStartHdl; req.endHandle = simpleBLESvcEndHdl; req.type.len = ATT_BT_UUID_SIZE; req.type.uuid[0] = LO_UINT16(Charac_UUID[charr]); req.type.uuid[1] = HI_UINT16(Charac_UUID[charr]);

GATT_ReadUsingCharUUID(simpleBLEConnHandle, &req, simpleBLETaskId);//通过发送某个特性的UUID来获得这个特性值的句柄

这就是我的特性发现代码,这里我是想对各个特性单独进行发现,所以我将特性的UUID放到数组里了,用一个charr变量控制。

请高手指点。

赞(0)
未经允许不得转载:TI中文支持网 » 关于蓝牙4.0的特征值属性的问题,请各位指点一下、
分享到: 更多 (0)