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

使用GATT_Notification发送数据,但APP收不到。

hi, all,

      我想做一个数据通信的应用,应用是这样的:

       有一个遥控器,上面有几个按键,我按一个按键,就使用GATT_Notification功能发一串固定的数据出去,APP收到此数据再做解析。

      目前我的遥控器中跟BTool连接正常,按下按键后,Btool也可以看到由GATT_Notification函数发出的数据。但跟APP连接就收不到任何数据。但这个APP跟另外一个遥控器(第三方的)是可以连接,数据收发也是正常的。 我对比了服务都是一样的。

      请问,这种情况下,我该从哪方面查找问题呢? 

      多谢。

 

 

 

jack shen:

回复 Yan:

hi , Yan,

     我有用SmartRF跟踪过数据,但是未连接情况下,SmartRF是能够跟踪到广播数据的,但是连接成功后,SmartRF就跟踪不到通信数据了,不知道是何原因?

      notification是需要通过对方APP把遥控器的Notify功能打开才会发送,但我用Btool是可以正常接收的。没有更改过Nofify的功能。所以是不是可以说明Notify功能是打开的?

      没错,我用的Keyfob的Smiplekey的服务。不知道是否可以在此服务上设计。

 

jack shen

 

Yan:

回复 jack shen:

Hi Jack,

你可以在simplekey服务上开发.

sniffer能抓到广播包, 但是抓不到连接的通信数据, 是因为sniffer只能在一个channel上监听, 刚好建立连接的那个广播包没有在这个channel上, 导致后面包抓不到.

你可以修改代码, 把广播包固定在一个channel上发, 然后sniffer设置里面也选定这个channel, 这样就每次都抓到连接以后的包了. 只是测试的话这不会影响任何功能.

代码修改你可以在 perihperal.c, 里面void GAPRole_Init( uint8 task_id ) 函数里面gapRole_AdvChanMap 这个变量改成 37, 或38, 或39任意一个, 然后snffer软件里面也选择同一个channel就行.

notify肯定需要先打开notify功能才能发送, 不然是不会起作用. 默认都是关闭的. 请确信你的代码正确.

sky fang:

回复 Yan:

ios app端不知道怎么打开notification,因为在那边不知道怎么看到搜索得到handle,更没法对这个handle加一写一,从而打开notify

Yan:

回复 sky fang:

Hi Sky,

过程一般是一样的, 你可以尝试先用IOS通过你的characteristic的UUID去知道到对应的characteristic的信息, 包括handle.

这个过程叫做characteristic discovery.

sky fang:

回复 Yan:

HI Yan,

 问题是这样的, 我看到keyfob 那边完成4k数据传输的协议是置

noti.handle = 58 ;

GAPRole_GetParameter(GAPROLE_CONNHANDLE,&noti_cHandle);                                   GATT_Notification( noti_cHandle, &noti, FALSE );

然后在ios 那边用重力加速计 x  的uuid辨识;我想问一下,这个58是怎么来的??

Yan:

回复 sky fang:

Hi Sky,

不知道你用的是哪个keyfob的工程? 什么是完成4k数据传输的协议?

这个是不是已经是被修改过的工程, 并不是TI提供的原始工程?

正常情况下attribute handle不是这样指派的, 是通过底下的库运行的是后动态分配的, 而不是写死58这样. 

GAPRole_GetParameter(GAPROLE_CONNHANDLE,&noti_cHandle);  GATT_Notification( noti_cHandle, &noti, FALSE );   这两个函数看上去调用正常, 但一般noti.handle应该从attribute的表格中去读取, 而不是手动写, 因为很有可能下次重新启动的时候handle就不是58了. 所以很有可能导致后面操作失败.

一般会这么去取: noti.handle = xxxAttrTbl[XXX_VALUE_IDX].handle;

赞(0)
未经允许不得转载:TI中文支持网 » 使用GATT_Notification发送数据,但APP收不到。
分享到: 更多 (0)