什么是“没有匹配函数可调用'println(decode_results *)'”?

时间:2019-06-08 16:41:47

标签: arduino

我有一个示例代码,我想将变量打印到日志中,特别是一个名为&results的变量,我在void loop()的末尾在代码中写了一行以打印变量到串行打印输出。

这不是完整的代码,但至少是很大一部分。

{
  Serial.begin(9600);
  Serial.println("IR Receiver Button Decode"); 
  irrecv.enableIRIn(); // Start the receiver

}/*--(end setup )---*/


void loop()   /*----( LOOP: RUNS CONSTANTLY )----*/
{
  if (irrecv.decode(&results)) // have we received an IR signal? &results is 
  the variable
  Serial.println(&results)   //<-- My line of code

  {
    translateIR(); 
    irrecv.resume(); // receive the next value
  }  
}/* --(end main loop )-- */

我希望输出是变量的内容,但是在编译时会吐出no matching function for call to "println(decode_results*)"

1 个答案:

答案 0 :(得分:0)

您不能简单地使用Arduino的print打印C结构。您只能打印简单的C数据类型,例如float,String,int等。因此,您需要分别打印结构的每个字段。我不知道decode_results,但是您可以使用类似以下的内容来打印其字段:

{
    Serial.begin(9600);
    Serial.println("IR Receiver Button Decode");
    irrecv.enableIRIn(); // Start the receiver

} /*--(end setup )---*/

void loop() /*----( LOOP: RUNS CONSTANTLY )----*/
{
    if (irrecv.decode(&results)) // have we received an IR signal? &results is the variable
    {
        Serial.print("Results: ");
        Serial.print(results.field1); // first field
        Serial.print(" , ");
        Serial.println(results.field2); // second field
    }
    translateIR();
    irrecv.resume(); // receive the next value
} /* --(end main loop )-- */