乐鑫技术交流
直播中

张明

7年用户 997经验值
私信 关注
[问答]

如何为Serial.printf() 编写一个简单的包装函数?

我已经成功地将 Serial.prinft() 用于我的调试输出。现在,我在#ifdef DEBUG_MODE ... #endif 预处理器指令之间划了界线。
为了让代码阅读起来更清晰、更简洁,我决定为 Serial.printf() 编写一个简单的包装函数。这个函数看起来像这样:
代码:全选debugPrintf(const char *format, ...) {
  if (DEBUG_MODE) {
    va_list args;
    va_start(args, format);
    Serial.printf(format, args);
    va_end(args);
  }
}

这个问题是,文本(printf() 的第一个参数)打印得很好,但是之前替换/格式化的所有值/占位符现在都替换为任意数字。
示例:
而不是像这样的东西
代码:全选Taillights (TL)       : 254 (received value: 254)
Sidelights (SL)       : 0 (received value: 0)
Reversing Lights (REV): 0 (received value: 0)
Indicator L (IL)      : 0 (received value: 0)
Indicator R (IL)      : 0 (received value: 0)

我明白了:
代码:全选Taillights (TL)       : 1073741664 (received value: 1073741648)
Sidelights (SL)       : 1073741664 (received value: 1073741648)
Reversing Lights (REV): 1073741664 (received value: 1073741648)
Indicator L (IL)      : 1073741664 (received value: 1073741648)
Indicator R (IL)      : 1073741664 (received value: 1073741648)

我只想将我自己的函数的参数直接传递给 Serial.printf(),但似乎有问题。我在整个 Web 上进行了搜索,但只能找到看起来基本上与我正在做的一样的解决方案。
有任何想法吗?

更多回帖

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