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

Arduino BLE数据读取出现随机尾字符问题求解

解决Arduino BLE特征值读取末尾随机字符问题

问题核心是C语言字符串必须以\0(空字符)作为终止标记,你当前读取的字节数组没有添加这个终止符,Serial.print((char*)value)会持续从内存中读取直到遇到\0,因此会附带后续的随机内存内容。

以下是两种可行的解决方案:

方案一:手动添加字符串终止符

调整数组分配逻辑,多预留1字节存储\0,读取完成后手动添加终止符:

void incomingCharacteristicWritten(BLEDevice central, BLECharacteristic characteristic) {
  int dataLen = characteristic.valueLength();
  // 多分配1字节用于存放字符串终止符
  byte value[dataLen + 1];
  incomingDataCharacteristic.readValue(value, dataLen);
  // 在数据末尾添加终止符,确保字符串正确截断
  value[dataLen] = '\0';
  
  Serial.print("Characteristic event, written: ");
  Serial.print((char *) value);
}

方案二:使用Arduino String类简化处理

直接利用String类自动处理终止符的特性,代码更简洁:

void incomingCharacteristicWritten(BLEDevice central, BLECharacteristic characteristic) {
  String receivedData = incomingDataCharacteristic.value();
  
  Serial.print("Characteristic event, written: ");
  Serial.print(receivedData);
}

内容的提问来源于stack exchange,提问作者universe123

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:05:24