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

Using an integer indexed list of strings with Arduino

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

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

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

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

和这样的定义:

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

我的问题:

我认为必须有一个简单的解决方案,但作为 C++ 的新手,我正在努力寻找一个好的解决方案,除了可能转换为 JSON 并解析它。

list has about 200 entries
256 being the max. code.

Is there a better way than using a struct?

考虑 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];

When I get a statuscode of e.g. 12, how do I get to the respective string?

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