完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ti技术你们好,我最近在想用cc2541主机模式去连接从机并且读出其数据。
在SimpleBLECentral源代码基础之上进行修改, 发现uuid 服务 if ( simpleBLEDiscState == BLE_DISC_STATE_SVC ) [ // Service found, store handles if ( pMsg->method == ATT_FIND_BY_TYPE_VALUE_RSP && pMsg->msg.findByTypeValueRsp.numInfo > 0 ) [ simpleBLESvcStartHdl = pMsg->msg.findByTypeValueRsp.handlesInfo[0].handle; simpleBLESvcEndHdl = pMsg->msg.findByTypeValueRsp.handlesInfo[0].grpEndHandle; ] // If procedure complete if ( ( pMsg->method == ATT_FIND_BY_TYPE_VALUE_RSP && pMsg->hdr.status == bleProcedureComplete ) || ( pMsg->method == ATT_ERROR_RSP ) ) [ if ( simpleBLESvcStartHdl != 0 ) [ // Discover characteristic //simpleBLEDiscState = BLE_DISC_STATE_CHAR7; simpleBLEDiscState = BLE_DISC_STATE_CHAR; req.startHandle = simpleBLESvcStartHdl; req.endHandle = simpleBLESvcEndHdl; req.type.len = ATT_BT_UUID_SIZE; req.type.uuid[0] = LO_UINT16(SIMPLEPROFILE_CHAR7_UUID); req.type.uuid[1] = HI_UINT16(SIMPLEPROFILE_CHAR7_UUID); GATT_DiscCharsByUUID( simpleBLEConnHandle, &req, simpleBLETaskId ); // GATT_ReadUsingCharUUID( simpleBLEConnHandle, &req, simpleBLETaskId ); ] ] else if ( simpleBLEDiscState == BLE_DISC_STATE_CHAR ) [ // Characteristic found, store handle if ( pMsg->method == ATT_READ_BY_TYPE_RSP && pMsg->msg.readByTypeRsp.numPairs > 0 ) [ simpleBLECharHdl = BUILD_UINT16( pMsg->msg.readByTypeRsp.dataList[0], pMsg->msg.readByTypeRsp.dataList[1] ); LCD_WRITE_STRING( "Simple Svc Found", HAL_LCD_LINE_1 ); simpleBLEProcedureInProgress = FALSE; ] simpleBLEDiscState = BLE_DISC_STATE_IDLE; // osal_start_timerEx( simpleBLETaskId, GUA_READ_CHAR1_EVT, 1000 ); ] 在这里找到对应的特征值句柄了 0x0037 之后在按键添加开启notify功能 if ( keys & HAL_KEY_SW_6 ) [ attWriteReq_t req; req.handle = 0x0038; //char6的CCC的特征值句柄,这里写死可通过btool获取到 req.len = 2; req.value[0] = 0x01;//LO_UINT16(GATT_CLIENT_CFG_NOTIFY); //0x0001为开notify req.value[1] = 0x00;//HI_UINT16(GATT_CLIENT_CFG_NOTIFY); req.sig = 0; req.cmd = 0; //osal_memcpy(req.value,ValueBuf,2); GATT_WriteCharValue( simpleBLEConnHandle, &req, simpleBLETaskId ); 最后显示 static void simpleBLECentralProcessGATTMsg( gattMsgEvent_t *pMsg )处理函数 else if ( ( pMsg->method == ATT_WRITE_RSP ) || ( ( pMsg->method == ATT_ERROR_RSP ) && ( pMsg->msg.errorRsp.reqOpcode == ATT_WRITE_REQ ) ) ) [ if ( pMsg->method == ATT_ERROR_RSP) [ uint8 status = pMsg->msg.errorRsp.errCode; LCD_WRITE_STRING_VALUE( "Write Error", status, 10, HAL_LCD_LINE_1 ); ] else [ // After a succesful write, display the value that was written and increment value LCD_WRITE_STRING_VALUE( "Write sent:", simpleBLECharVal++, 10, HAL_LCD_LINE_1 ); ] simpleBLEProcedureInProgress = FALSE; ] 进入此函数之后返回Write Error 3; 这里是设置错误了吗?请大神帮忙看看 |
|
相关推荐
1 个讨论
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
702 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
613 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1075 浏览 1 评论
771 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
535 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
183浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
145浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
8浏览 13评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
136浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
130浏览 12评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-2 20:52 , Processed in 0.952606 second(s), Total 45, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号