Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Serial.print in arduino不写入变量_C++_Arduino - Fatal编程技术网

C++ Serial.print in 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

我在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("=");
        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,而不是参数值。这看起来不像是对您问题的回答,但是问题的一些扩展不,这是一个单独的问题,我发布了这个答案,因为原始问题受到我代码的另一部分的影响。如果这是真的,那么它表明你在某个地方溢出了变量,但是由于你没有发布完整的代码,没有人可以检查。