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

ESP32 Arduino IDE下BLE notify回调uint8_t*类型pData十六进制打印问题

ESP32 BLE Notify回调全量十六进制数据打印修改方案

原代码仅打印第一个字节的原因是*pData 仅获取了指针指向的首个uint8_t元素,你需要循环遍历length长度的所有数据字节逐个打印即可,修改后的代码如下:

static void notifyCallback( 
  BLERemoteCharacteristic* pBLERemoteCharacteristic, 
  uint8_t* pData,
  size_t length,
  bool isNotify) 
{
  Serial.print("data length: ");
  Serial.println(length);
  Serial.print("data: ");
  // 循环遍历所有接收字节
  for (size_t i = 0; i < length; i++) {
    // 不足两位的十六进制数前面补0,格式更统一
    if (pData[i] < 0x10) {
      Serial.print("0");
    }
    Serial.print(pData[i], HEX);
    // 字节之间加空格分隔,可读性更好,不需要可以删除此行
    Serial.print(" ");
  }
  Serial.println();
}

如果不需要补0和空格分隔的最简修改版本如下:

static void notifyCallback( 
  BLERemoteCharacteristic* pBLERemoteCharacteristic, 
  uint8_t* pData,
  size_t length,
  bool isNotify) 
{
  Serial.print("data length: ");
  Serial.println(length);
  Serial.print("data: ");
  for (size_t i = 0; i < length; i++) {
    Serial.print(pData[i], HEX);
  }
  Serial.println();
}

内容的提问来源于stack exchange,提问作者황영진

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:15:04