C++ Serial.print in arduino不写入变量
我在arduino开发,但我在连载方面有问题 我的代码:C++ Serial.print in arduino不写入变量,c++,arduino,C++,Arduino,我在arduino开发,但我在连载方面有问题 我的代码: void send(String prefix, String cmd, String param) { Serial.print("@"); Serial.print(prefix); Serial.print(":"); Serial.print(cmd); if (param.length() > 0) { Serial.print("="); Seria
void send(String prefix, String cmd, String param) {
Serial.print("@");
Serial.print(prefix);
Serial.print(":");
Serial.print(cmd);
if (param.length() > 0) {
Serial.print("=");
Serial.print(param);
}
Serial.print(";");
}
void sendComand(String cmd, String param)
{
send("CMD", "xxx", "param");
}
结果:
@:;@:;@:;@:;@:;@:;@:;@:;@:;@:;
有什么问题吗?在进行其他测试时,我相信问题出在我代码的另一部分,但会影响其他部分。在循环方法中,我实现了一个“看门狗”代码,以警告软件硬件处于活动状态。但当我在watchDogTimeHardware变量中放入一个新值时,看起来内存已经损坏
unsigned long watchDogTimeHardware = 0L;
void setup()
{
Serial.begin(9600);
cmd.reserve(64);
}
void loop()
{
if (millis() > watchDogTimeHardware) {
watchDogTimeHardware = millis() + 1000L; // HERE IS THE PROBLEM
sendComand(OUT_WATCH_DOG, "");
}
}
我不知道发生了什么Serial.print函数支持打印字符串类型的变量,因此您的代码应该可以工作。当您尝试打印变量时,它没有打印任何内容,这意味着您没有打印您认为自己是的内容。
您确定正在调用您认为正在调用的send函数吗?是否只有一个函数(包括在您加载的任何库中)。 打印要发送的每个参数的长度,我怀疑它们都是零,否则它会崩溃,因为它们是空的
如果这没有帮助,那么我建议您将此帖子移至Arduino SO,并发布一个最简单的完整示例。我发现了问题。我评论了cmd.reserve(64)一切都起作用了。我将此代码用于尝试优化,但效果不佳。您实际执行的代码是什么?这些只是定义您确定
sendComand
是调用send()
的唯一方法吗?您的sendComand
实际上不使用任何参数。您使用硬编码字符串“CMD”和“param”调用send,而不是参数值。这看起来不像是对您问题的回答,但是问题的一些扩展不,这是一个单独的问题,我发布了这个答案,因为原始问题受到我代码的另一部分的影响。如果这是真的,那么它表明你在某个地方溢出了变量,但是由于你没有发布完整的代码,没有人可以检查。