STM32
直播中

fejlkel

8年用户 975经验值
擅长:制造/封装
私信 关注
[问答]

如何提高BLE_MeshLightingLPN的发送数据长度?

我自己的理解,发送程序运行到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)

袁钧质

2024-3-15 15:41:32
不同的模型ID,对应不同的数据格式。 比方说BLEMesh_SetRemotePublication(GENERIC_ONOFF_SERVER_MODEL_ID,x,x,x,x,x) 操作的是 Generic OnOff 模型, 应用字节只有2个字节,加上操作码2个字节,总共为4个字节(这是标准)。  如果需要传输更多的字节,则一定是基于更多字节的模型和状态进行消息控制的。比方说用户自定义模型。
基本概念补充消息: Mesh网络中的所有通信都是通过发送消息来完成的(消息操作状态)。  
状态: 状态是表示元素状态的值(暴露状态的元素称为server。 例如,最简单的server是 Generic OnOff  server,表示开启或关闭)。
    •模型:模型定义了节点的基本功能。(•一个节点可能包含多个模型。 模型定义了所需的状态、作用于这些状态的消息以及任何相关行为。
举报

吕钢格

2024-3-15 16:30:08
要提高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协议栈的配置或者适配你所使用的硬件平台。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分