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++ Arduino-程序a avr/pgmspace.h出现故障_C++_Arduino_Avr_Progmem - Fatal编程技术网

C++ Arduino-程序a avr/pgmspace.h出现故障

C++ Arduino-程序a avr/pgmspace.h出现故障,c++,arduino,avr,progmem,C++,Arduino,Avr,Progmem,我试图在静态字符上使用progmem来节省一些有价值的空间。一切似乎都很好,但串行和液晶显示一些奇怪的换行符,而不是我的文字 我想做的是: ... #include <avr/pgmspace.h> const static char PROGMEM textSDFailed[] = "Filesys failed"; const static char PROGMEM textSDAvailable[] = "Filesys is

我试图在静态字符上使用progmem来节省一些有价值的空间。一切似乎都很好,但串行和液晶显示一些奇怪的换行符,而不是我的文字

我想做的是:

...
#include <avr/pgmspace.h>
const static char PROGMEM textSDFailed[]        = "Filesys failed";
const static char PROGMEM textSDAvailable[]     = "Filesys is avail.";
...
lcd.print(textSDFailed);
...
。。。
#包括


有人能帮我吗?

您可以使用带有progmem字符串的
打印。progmem字符串的重载
打印
已将
\uuuu FlashStringHelper*
作为参数。这通常是给你的

对于重复使用的演员我做

#define FSH_P const __FlashStringHelper*
那我就这样用

  lcd.print((FSH_P) textSDFailed);
如果可以,请直接使用F宏:

  lcd.print(F("Filesys failed"));

您可以使用带有progmem字符串的
打印
。progmem字符串的重载
打印
已将
\uuuu FlashStringHelper*
作为参数。这通常是给你的

对于重复使用的演员我做

#define FSH_P const __FlashStringHelper*
那我就这样用

  lcd.print((FSH_P) textSDFailed);
如果可以,请直接使用F宏:

  lcd.print(F("Filesys failed"));


您需要特殊的函数来访问progmem。在上面查找尼克·金门的页面。我会给你发一个链接,但我总是因为发链接而被骂。如果你直接给它一个字符串,lcd.print能工作吗?那是什么东西?这是某种预处理器宏吗?通常在这一点上,应该有一个变量名或一个
*
查看F宏<代码>lcd.print(F(“文件系统失败”)直接从打印机打印Flash@FalcoGer是的,它的progmem think.@datafiddler不能用uno的lcd.print(F(textsdfiled))编译。您需要特殊的函数来访问progmem。在上面查找尼克·金门的页面。我会给你发一个链接,但我总是因为发链接而被骂。如果你直接给它一个字符串,lcd.print能工作吗?那是什么东西?这是某种预处理器宏吗?通常在这一点上,应该有一个变量名或一个
*
查看F宏<代码>lcd.print(F(“文件系统失败”)直接从打印机打印Flash@FalcoGer是的,这是程序思考。@datafiddler不能用uno的lcd.print(F(textsdfiled))编译。谢谢。我只是想知道为什么不能使用smt-like-lcd.print(F(textSDFailed))@Lukᚊvec,这不是演员阵容。它是来自Arduino core的宏,它将字符串存储在PROGMEM中,并将其强制转换为
\uuuu FlashStringHelper
。他们没有解释如何使用VAR并将其打印成tru progmem,但你让我更清楚了。FSH_P表示smt。或者我把它改名为什么?:)@Lukᚊvec,我链接到了F宏部分,但文章的其余部分是关于PROGMEM的,我从那里学到了它。我只是想知道为什么不能使用smt-like-lcd.print(F(textSDFailed))@Lukᚊvec,这不是演员阵容。它是来自Arduino core的宏,它将字符串存储在PROGMEM中,并将其强制转换为
\uuuu FlashStringHelper
。他们没有解释如何使用VAR并将其打印成tru progmem,但你让我更清楚了。FSH_P表示smt。或者我把它改名为什么?:)@Lukᚊvec,我链接到了F宏部分,但本文的其余部分是关于PROGMEM的,我在那里学到了它