你好,
在我的应用程序中,我定义了自定义配置文件,它有一个定制服务这个服务有两个自定义特征(1,2). 第二个特征用于向客户端发送字节数组通知. 我遵循sample128示例(顺便说一句,这是一个很好的文档)编写了我的应用程序。我已为配置计时器5秒每次它在计时器中断处理程序中过期时,我都会调用发送消息()发送一个20字节的数组。同时,在我的客户端应用程序(BLE Scanner mobile app)上,当我为Characteristic 2启用通知时,我可以看到20字节以5秒的间隔不断到达。
下一步,我将发送64字节每次我的计时器过期的时候我就出去。但是我在我的客户端应用程序(BLE Scanner mobile app)上注意到,当我为Characteristic 2启用通知时,我看到应用程序上只显示了20个字节。但是,如果我显式地读取特征2,我会看到所有的64字节。
- 是BTLE的限制。通知只能发送20字节吗?
- 或者这是我使用的客户端应用程序的限制?
- 我对申请表所做的修改如下,但我不知道还需要做什么。
到目前为止,我努力实现的目标如下:
第1步:将ATT\u MTU大小增加到67
在app\u template\u proj.c文件中应用程序配置函数(…)
功能,我增加了:
...
...
//最大传输单元大小
cmd->max\u mtu=67;//23
...
...
第二步:增加总大小
的参数attmdb\添加\服务()
功能。
在模板\u task.c中,在模板\u创建\u数据库\u请求\u处理程序()
功能。
...
...
nb_att_16=4;//4个UUID16属性声明类型
nb_att_32=0;//0 UUID32属性声明类型
nb_att_128=2;//2个UUID128属性声明类型
状态=attmdb\ U add\ U service(&(红色_环境红\u shdl),
任务XXXX,
注意,附件16,
注意,附件32,
注意,附件128,
121/(见下文计算);
//关贸总协定数据库的总数据部分=58个数据字节:
//16主要服务声明
//+19特征1声明
//+1特性1的值声明
//+19特征2声明
//+64特性2的值声明
//+2特征2的客户端配置声明
//=总共121个数据字节
...
...
嗨,维克拉姆席翁,
我想这篇文章是对前一篇文章的补充……问题是你可以从手机上读取64字节的数据库,但是你不能启用通知并接收所有64字节的数据。通知和指示仅支持外围设备的当前MTU,即使您在广告过程中更改了MTU,您的客户端也必须接受它才能传输通知包中的所有有效负载。在app\u configuration\u func()中设置MTU后,您必须调用GATT\u EXC\u MTU\u CMD,以便通知中央执行您设置的MTU。至于是否符合外围设备的建议,则由中央决定。您可以在app\u sps\u device\u project.c文件的DSPS应用程序中找到如何发出gattc\u exc\u mtu cmd。
谢谢你的对话
真 的!成功了。
我实现了,而不是使用
gattc\u exc\u mtu\u cmd()
GSPS应用程序的功能(请参阅RW-BLE-GATT第4.3节:配置中的更多信息)-是.pdf)从应用程序连接函数()
调用后函数应用程序模板启用()
就像GSPS应用程序中给出的那样。android手机应用(BLE扫描器)已经接受了关税及贸易总协定
由设备发送的请求,当我为特征2启用通知时,我开始看到64字节。结论:可以发送和接收大于20字节的通知。
谢谢你的帮助。
看起来不错。谢谢分享。