使用Arduino的整数索引字符串列表



我确实有一个字符串状态消息列表。每个状态消息都有一个单独的整数状态码,如下所示:

{0, "INITIAL STATE"},
{12, "ERROR INVERTER COMMUNICATION"},
{42, "INITIAL CHARGE"},
{158, "MAINTENANCE CHARGE"},
...

事实上,列表大约有200个条目,256是最大状态码。现在我想引用从设备读取的statuscode (int)的相应字符串。我一直在寻找使用这样的结构体:

typedef struct {
int Statuscode;
String StatusString;
} StatusCodes;

和这样的定义:

StatusCodes MyStatuscodes[] = {
{0, "INITIAL STATE"},
{12, "ERROR INVERTER COMMUNICATION"},
{42, "INITIAL CHARGE"},
{158, "MAINTENANCE CHARGE"},
};

我的问题:

  • 当我得到状态码例如12,我如何得到各自的字符串?
  • 有比使用结构体更好的方法吗?
  • 我应该使用"char *"而不是"String"?
  • 理想情况下,我想将消息引用列表移动到。h文件,这会有影响吗?

我认为这一定有一个简单的解决方案,但是作为c++的新手,我正在努力寻找一个好的解决方案,除了可能转换为JSON和解析这个。

list大约有200个条目
最多256个。代码。

有比使用结构体更好的方法吗?

考虑一个const char *的数组。

考虑在一些error.cpp文件

#incldue "error.h"
const char *StatusString[STATUSSTRING_N] = {
"INITIAL STATE",
"UNUSED 1",  
...
"UNUSED 11",  
"ERROR INVERTER COMMUNICATION"
...
};

和一些error.h文件

#define STATUSSTRING_N 257
extern const char *StatusString[STATUSSTRING_N];

当我得到一个状态码例如12,我如何得到各自的字符串?

if (statuscode >= 0 && statuscode < STATUSSTRING_N) {
return StatusString[statuscode];
}

最新更新