C++ Arduino-程序a avr/pgmspace.h出现故障
我试图在静态字符上使用progmem来节省一些有价值的空间。一切似乎都很好,但串行和液晶显示一些奇怪的换行符,而不是我的文字 我想做的是: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
...
#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的,我在那里学到了它