Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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
Pointers 二维字符数组PROGMEM Arduino_Pointers_Multidimensional Array_Arduino - Fatal编程技术网

Pointers 二维字符数组PROGMEM Arduino

Pointers 二维字符数组PROGMEM Arduino,pointers,multidimensional-array,arduino,Pointers,Multidimensional Array,Arduino,我解决问题的第一个方法是尝试制作字典/哈希表,但有人告诉我这是个坏主意。我被派去了。现在我的问题是,我正在用触摸屏制作一个菜单系统。我需要每个按钮都有不同的语言版本,所以有一个存储当前语言的内存位置,0-英语,1-西班牙语,2-法语。当我打开系统时,它将这个值读入一个名为lang的字符/字节变量 我希望我的代码是这样工作的(LANG_SOUND是一个常量值7): 我上面提到的PROGMEM页面创建字典的方式有点不同。我现在的问题是上面的代码不起作用。这可能是因为8不是用于8个字符串元素,而是每个

我解决问题的第一个方法是尝试制作字典/哈希表,但有人告诉我这是个坏主意。我被派去了。现在我的问题是,我正在用触摸屏制作一个菜单系统。我需要每个按钮都有不同的语言版本,所以有一个存储当前语言的内存位置,0-英语,1-西班牙语,2-法语。当我打开系统时,它将这个值读入一个名为
lang
的字符/字节变量

我希望我的代码是这样工作的(LANG_SOUND是一个常量值7):

我上面提到的PROGMEM页面创建字典的方式有点不同。我现在的问题是上面的代码不起作用。这可能是因为8不是用于8个字符串元素,而是每个字符串最多8个字符,我不确定我是否有点搞砸了指针

那么,上面的问题是什么,如何解决?此外,我必须按照链接中所示的方式创建dictionary/string_表,还是可以像上面那样创建?(对我来说,上面的方法似乎更简单,因为我将拥有大约40个菜单屏幕和大量文本。)

您不必使用“PROGMEM” 嗯,你真的不用
PROGMEM
。如果您现在想避免这种麻烦,只需从
字典
中删除
PROGMEM
属性,然后使用如下方法:

screen.print(dictionary[lang][LANG_SOUND], CENTER, 23);
但是,如果您有大量这样的数据,则可能需要使用
PROGMEM
。但是如果你想现在就开发你的应用程序的其他部分,现在就忽略
PROGMEM
部分

使用
PROGMEM
不幸的是,您必须使用与该示例中几乎完全相同的
PROGMEM
,即为每个
PROGMEM
字符串声明一个唯一的变量。不过,您不必将表存储在
PROGMEM
中。但是像这样的台词:

prog_char dictEnglishSalami[] PROGMEM = "Salami";
prog_char dictEnglishProsecco[] PROGMEM = "Prosecco";
这将是必需的。
字典
表如下所示

const char *string_table[] = {
   dictEnglishSalami,
   dictEnglishProsecco,
   ...
   };

可以声明为
PROGMEM
,也可以不声明,但此时为什么不声明呢?

谢谢!它工作得很好!当我完成这个项目后,我将编写一个程序,使用您提到的方法将表转换为PROGMEM!酷!根据字符串表使用的内存空间大小,您可能需要更快地完成此操作。注意可用的空闲内存,一旦降至10%以下,Arduinos/AVR就会开始异常运行。如果你有奇怪的行为,那是第一件要检查的事情。
const char *string_table[] = {
   dictEnglishSalami,
   dictEnglishProsecco,
   ...
   };