You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在nrfcloud扩展显示位数,实现0-32000整数数据上传?

解决nrf52 DK向nrfcloud上传16位整数的方案

你现在要解决的核心问题是把原来8位无符号整数(0-255,对应0xFF)的传输逻辑,改成支持16位无符号整数(0-65535)的传输,需要从GATT特征定义、代码数据打包、nrfcloud解析规则三个方面调整,具体步骤如下:

1. 修改GATT特征的数据长度定义

首先要调整你用来发送通知的GATT特征,把原来的1字节存储改成2字节:

  • 找到项目中定义特征值的变量,原来的uint8_t m_char_value = 0;要改成uint16_t m_char_value = 0;,这样就能容纳0-65535的数值了。
  • 接着在添加特征的代码段里,把特征属性的长度参数更新为2字节:
    ble_gatts_attr_t attr_char_value = {
        .p_uuid = &YOUR_CHARACTERISTIC_UUID, // 替换成你实际使用的特征UUID
        .p_attr_md = &attr_md,
        .init_len = sizeof(m_char_value), // 现在是2字节
        .max_len = sizeof(m_char_value),
        .p_value = (uint8_t *)&m_char_value
    };
    
    这里要确保max_len不小于2,否则发送超过1字节的数据会触发错误。

2. 调整数据上传的字节打包逻辑

蓝牙GATT传输是按字节流发送的,16位整数需要拆成两个字节(nrfcloud默认用小端字节序解析):

  • 假设你要发送的数值是uint16_t sensor_val = 32000;,可以这样打包:
    uint8_t tx_data[2];
    tx_data[0] = sensor_val & 0xFF; // 低字节
    tx_data[1] = (sensor_val >> 8) & 0xFF; // 高字节
    
  • 然后在调用ble_gatts_hvx发送通知时,把hvx_params里的p_data指向tx_data,len设置为2:
    ble_gatts_hvx_params_t hvx_params = {
        .handle = m_char_handles.value_handle,
        .type = BLE_GATT_HVX_NOTIFICATION,
        .offset = 0,
        .p_data = tx_data,
        .len = sizeof(tx_data)
    };
    ret_code_t err_code = ble_gatts_hvx(m_conn_handle, &hvx_params, &len);
    
    如果你用的是nrfconnect SDK的封装函数,也要确保发送的字节数设置为2。

3. 更新nrfcloud的Payload解析器

最后要让nrfcloud正确解析收到的2字节数据:

  • 登录nrfcloud后台,找到你的设备,进入Payload Formatters页面。
  • 原来的解析代码是把单字节转成uint8,现在要改成解析双字节的uint16,小端序的解析代码如下:
    function decodeUplink(input) {
        // 小端字节序转16位无符号整数
        const sensorValue = (input.bytes[1] << 8) | input.bytes[0];
        return {
            data: {
                value: sensorValue
            },
            warnings: [],
            errors: []
        };
    }
    
    保存后,nrfcloud就能正确显示0-65535的数值了。

4. 测试验证

烧录修改后的代码到nrf52 DK,尝试发送几个测试值(比如0、256、32000、65535),查看nrfcloud上的显示是否和你发送的一致,确认不会再出现到0xFF就重置的问题。

内容的提问来源于stack exchange,提问作者M. Suarez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:34:19