完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
各位好:
本人初次接触BLE,很多基础东西不太明白,最近在搞主机和从机连接的DEMO,主机和从机用的都是ti官方的keyfob板,从机下载的是官方给的keyfob代码,主机用的SimpleBLECentral代码,在主机里添加了keyfob端的服务UUID,但keyfob广播包里发送了3个服务UUID: // Proximity Profile Service UUIDs //#define LINK_LOSS_SERVICE_UUID 0x1803 //#define IMMEDIATE_ALERT_SERVICE_UUID 0x1802 //#define TX_PWR_LEVEL_SERVICE_UUID 0x1804 我在Central代码里添加了LINK_LOSS_SERVICE_UUID如下: static void simpleBLECentralStartDiscovery( void ) [ uint8 uuid[ATT_BT_UUID_SIZE] = [ LO_UINT16( LINK_LOSS_SERVICE_UUID ), // Link Loss Service (Proximity Profile) HI_UINT16( LINK_LOSS_SERVICE_UUID ) ]; .....] 主机怎样通过服务UUID查找到从机的,这个流程哪里有说明?? 接下来我又分别添加从机另外两个服务UUID,主机都能查找到从机,主机通过这三个UUID查找从机有没有区别,handle分配是不是不同?? 稍微修改下按键,主机已经能和从机连接,但是我想让主机向从机写数据,把keyfob的报警功能打开,我在GATT查找函数加了个写入函数,但是有错: static void simpleBLEGATTDiscoveryEvent( gattMsgEvent_t *pMsg ) [ attReadByTypeReq_t req_LLAlertLevel; req_LLAlertLevel.handle = LLAlertLevelHdl; req_LLAlertLevel.len = 1; req_LLAlertLevel.value[0] = PP_ALERT_LEVEL_HIGH; req_LLAlertLevel.sig = 0; req_LLAlertLevel.cmd = 0; GATT_WriteCharValue( simpleBLEConnHandle, *req_LLAlertLevel, simpleBLETaskId ); 写入时必须要操作的handle才可以吗,主机读写有没有什么范例代码可以参考??API上说明好像不是很清楚 |
|
相关推荐
3个回答
|
|
写操作需要handle.其实simpleBLEGATTDiscoveryEvent的例子中的处理很清晰啊,只是这里是读取的是SIMPLEPROFILE_CHAR1_UUID。
发现完成就开始获得相应的UUID的handle.如下例子。 而读写操作在simpleBLECentral_HandleKeys里也有。调用的GATT_WriteCharValue()和 GATT_ReadCharValue(). // 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_CHAR; req.startHandle = simpleBLESvcStartHdl; req.endHandle = simpleBLESvcEndHdl; req.type.len = ATT_BT_UUID_SIZE; req.type.uuid[0] = LO_UINT16(SIMPLEPROFILE_CHAR1_UUID); req.type.uuid[1] = HI_UINT16(SIMPLEPROFILE_CHAR1_UUID); 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; ] |
|
|
|
@ethan
您好。 请问,是不是处于Broadcast的设备的广播信息和处于Peripheral的设备广播时候的信息有所不同啊?? 要怎么区分嘞?? 还有一个就是,请问一下,知不知道cc2540能不能在主和从模式之间切换。 |
|
|
|
shenzhenqide 发表于 2018-6-21 18:31 请教下,如何使用GATT_ReadCharValue(). 获得数据呢? 他获得的值在什么地方返回? |
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
684 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
600 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1055 浏览 1 评论
741 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
525 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
163浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
127浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
127浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
123浏览 12评论
GD32F303RCT6配置PA4 ADC引脚,将PA2代替key功能,PA2连接时无法实现预期功能,为什么?
28浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 14:06 , Processed in 0.778608 second(s), Total 54, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号