完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我自己的理解,发送程序运行到Generic_Publish函数中:
result =BLEMesh_SetRemotePublication(GENERIC_ONOFF_SERVER_MODEL_ID,srcAddress ,GENERIC_ON_OFF_SET_UNACK,generic_Buff, 2,MOBLE_FALSE, MOBLE_FALSE); 数据长度小于等于4时可以发送成功,当发送大于4个字节时就会报错,发送失败! 目前设置都是官方例程默认的。 我要怎么提高发送数据的有效长度? |
|
相关推荐
2个回答
|
|
不同的模型ID,对应不同的数据格式。 比方说BLEMesh_SetRemotePublication(GENERIC_ONOFF_SERVER_MODEL_ID,x,x,x,x,x) 操作的是 Generic OnOff 模型, 应用字节只有2个字节,加上操作码2个字节,总共为4个字节(这是标准)。 如果需要传输更多的字节,则一定是基于更多字节的模型和状态进行消息控制的。比方说用户自定义模型。
基本概念补充:消息: Mesh网络中的所有通信都是通过发送消息来完成的(消息操作状态)。 •状态: 状态是表示元素状态的值(暴露状态的元素称为server。 例如,最简单的server是 Generic OnOff server,表示开启或关闭)。 •模型:模型定义了节点的基本功能。(•一个节点可能包含多个模型。 模型定义了所需的状态、作用于这些状态的消息以及任何相关行为。 |
|
|
|
要提高BLE_MeshLightingLPN的发送数据长度,可以尝试以下几种方法:
1. 修改数据长度参数:在调用BLEMesh_SetRemotePublication函数时,可以将参数generic_Buff的长度从2改为大于4的值。例如,改为6或8等更大的值。这样可以增加一次发送的数据长度,但需要确保接收端能够正确解析和处理更长的数据。 2. 修改MTU(Maximum Transmission Unit)大小:MTU是一个BLE连接中可以传输的最大数据包大小。默认情况下,MTU大小为23字节。可以尝试修改MTU大小,使其能够容纳更大的数据包。要修改MTU大小,需要在初始化BLE连接时进行设置,具体方法取决于使用的BLE协议栈和开发环境。 3. 使用分片(Fragmentation)机制:如果要发送的数据长度超过MTU的限制,可以使用分片机制将数据分成多个小的数据包进行传输。接收端可以根据分片信息将这些小数据包组装成完整的数据。要使用分片机制,需要在发送端和接收端都进行相应的配置和处理。 需要注意的是,增加数据长度可能会影响传输的稳定性和速率,并且需要确保设备的接收端能够正确处理更长的数据。这些操作可能需要修改BLE协议栈的配置或者适配你所使用的硬件平台。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1810 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1631 浏览 1 评论
1098 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
737 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1687 浏览 2 评论
1945浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
750浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
584浏览 3评论
604浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
568浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 13:34 , Processed in 1.093264 second(s), Total 82, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号