蓝牙连接问题
各位大神,小弟我有些问题需要请教下
1、主从机连接后simpleBLECharHdl这个值一直为零,弄得我通信不了,是哪里问题呢?
2、从机使用的是特征值7为通知,那我在主机中使能通知的话在设置时的handle应该为多少呢
是handle= 0x0039么?(特征值7得句柄值为0x0038)
3、希望回复大神留下联系方式,以便今后即使沟通,谢谢!
在线等回复,谢谢!
yongcai,
你是用simpleBLECentral和SmipleBLEPeripheral吗?
特征值的handle其实未必是定死的。
最好的方法是遍历特征值并取得其handle。
如果你知道你自己定义的特征值7的UUID(你肯定知道),那么就可以通过这个特征值查找到相应的handle,而不是你自己去估计。你可以用这个API:GATT_DiscCharsByUUID(),在gatt.h里面。
我是在读写数据的时候发现的
attWriteReq_t writeReq;
writeReq.handle = simpleBLECharHdl;
writeReq.len = SIMPLEPROFILE_CHAR6_LEN;
writeReq.sig = 0;
writeReq.cmd = 0;
osal_memcpy(writeReq.value,ver_data,SIMPLEPROFILE_CHAR6_LEN);
GATT_WriteCharValue( simpleBLEConnHandle, &writeReq, simpleBLETaskId );
发现这个simpleBLECharHdl为零,但是我已经发现设备了,为什么这个值会为零呢,他要是零的话我就没法读写数据了,这个东西困惑好久了,不知怎么解决哎,上面海催着要程序,弄得我 哎
以下为主机使能通知的程序
if(events & ENABLE_NOTICE_EVT ) //使能通知
{
writeReq.handle = 0x0039;//1C;
writeReq.len = 2;
writeReq.value[0] = 0x01;
writeReq.value[1] = 0x00;
writeReq.sig = 0;
writeReq.cmd = 0;
GATT_WriteCharDesc( simpleBLEConnHandle, &writeReq, simpleBLETaskId );
其中writeReq.handle 怎么确定,我在从机中已经把特征值7作为notify形式了,这个writeReq.handle 应该是多少呢?
dear Y大神:
读取特征值1,需要使用GATT_ReadUsingCharUUID取得句柄以后,在用GATT_ReadCharValue取得特征值,还是直接用GATT_ReadCharValue获取特征值?
谢谢!