请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
主题中讨论的其他器件:CC2541有一 个固定的 SimpleBLEPeripheral 器件、我使用 BTool 对其进行测试并成功获取句柄。
---------------------------------------- [61]: - 11:12:00.456 -类型 :0x04 (事件) -EventCode :0x00FF (事件) -数据长度:0x0E (14)字节 事件 :0x0509 (1289)(ATT_ReadByTypeRsp) 状态 :0x00 (0)(成功) ConnHandle :0x0000 (0) Pdualen :0x08 (8) 长度 :0x07 (7) 句柄 :0027 数据 :12:28:00:F6:36 转储(Rx): 0000:04FF 0E 0905000008072700122800F6...... '..(.. 0010:36 6 ----------------------------------
然后、我编写了一个基于 SimpleBLECentral 的应用、并刚刚修改了密钥和 LCD 部分。
#if 1 //简单配置文件服务 UUID #define SIMPLEPROFILE_SERV_UUID 0xFEE7 //按键 UUID #define SIMPLEPROFILE_CHAR1_UUID 0x36F5 #define SIMPLEPROFILE_CHAR2_UUID 0x36F6 #define SIMPLEPROFILE_CHAR3_UUID 0x36F7 #define SIMPLEPROFILE_CHAR4_UUID 0x36F8 #define SIMPLEPROFILE_CHAR5_UUID 0x36F9 #else //简单配置文件服务 UUID #define SIMPLEPROFILE_SERV_UUID 0xFFF0 //按键 UUID #define SIMPLEPROFILE_CHAR1_UUID 0xFFF1 #define SIMPLEPROFILE_CHAR2_UUID 0xFFF2 #define SIMPLEPROFILE_CHAR3_UUID 0xFFF3 #define SIMPLEPROFILE_CHAR4_UUID 0xFFF4 #define SIMPLEPROFILE_CHAR5_UUID 0xFFF5 #endif
当我运行该程序时、它停留在 GATT_ReadUsingCharUUID 上、
A.联系是成功的
b.可以运行到、
//如果过程完成 if ((pMsg->method =ATT_find_BY_TYPE_value_RSP &&) pMsg->HDR.status == bleProcedureComplete )|| (pMsg->method == ATT_ERROR_RSP)) { if ( simpleBLESvcStartHdl !=0 ) { //发现特征 simpleBLEDiscState = BLE_DISC_State_char; REQ.startHandle = simpleBLESvcStartHdl; REQ.endHandle = simpleBLESvcEndHdl; REQ.TYPE.Len = ATT_BT_UUUART_SIZE; REQ.TYPE.uuid[0]= LO_UINT16 (SIMPLEPROFILE_CHAR1_UUID); REQ.TYPE.uuid[1]= HI_UINT16 (SIMPLEPROFILE_CHAR1_UUID); GATT_ReadUsingCharUUID (simpleBLEConnHandle、&req、simpleBLETaskId); } }
c.但无法 接收下一条 ATT_READ_BY_TYPE_RSP 消息
否则,如果( simpleBLEDiscState == BLE_DISC_State_char )
{
//找到特征,存储句柄
if (pMsg->method =ATT_READ_BY_TYPE_RSP &&
pMsg->msg.readByTypeRsp.numPairs >0)
{
simpleBLECharHdl = Build_UINT16 (pMsg->msg.readByTypeRsp.pDataList[0]、
pMsg->msg.readByTypeRsp.pDataList[1]);
dump_string ("Simple Svc found"、HAL_LCD_LINE_1);
simpleBLEProcedureInProgress = false;
}
simpleBLEDiscState = BLE_DISC_State_IDLE;
}
从 UUID 获取句柄是否存在任何陷阱?
我的平台是 CC2541。
是否有任何解决方案?