将文本从PROGMEM传递到Arduino

时间:2018-04-26 20:24:32

标签: arduino

我想将程序存储器中存储的字符串传递给函数,然后将它与最后传递给同一函数的字符串进行比较(这是在Arduino中)。弦的长度可能会有所不同。在函数中,我只想在传递的新字符串与最后一个字符串不相同时才打印。我一直在阅读这篇文章,但完全被难过了。

PSEUDO CODE

Demoprint(F("new command"));

Void Demoprint(...variable or string here. NewText){
   If (NewText != oldText) {
       Serial.print(NewText);
    }
    oldText = NewText;
   }
}

//or
const PROGMEM char1[] = "This is line 1 of code";
const PROGMEM char2[] = "This is line 2 of text";

Demoprint(char1);

有关方法的任何建议吗?指针*,解除引用,将参数传递给函数等等。这让我很困惑,任何建议都会非常感激。

1 个答案:

答案 0 :(得分:0)

  1. 您可以使用String数据类型而不是char数组。
  2. 可以使用equals()函数
  3. 将字符串相互比较
  4. 您可以将先前传递给函数的字符串存储在函数内部的静态变量中。它将在通话之间存储价值。
  5. 所以,你的功能可以看起来像:

    void myprint(String s)
    {
        static String prev_s = "";
        if (!prev_s.equals(s))
        {
            Serial.print(s);
            prev_s = s;
        }
    }
    
    //Testing:
    myprint("String 1");
    myprint("String 1");
    myprint("String 1");
    myprint("String 2");
    

    你应该得到结果:

    String 1
    String 2