在 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"},
};
我的问题:
- 当我收到状态码时12、如何获取相应的字符串?
- 有没有比使用结构更好的方法?
- 我应该使用“char *”而不是“String”吗?
- 理想情况下,我想将消息引用列表移动到 .h 文件,这会产生影响吗?
我认为必须有一个简单的解决方案,但作为 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];
}
我有一个字符串状态消息列表。每条状态消息都分配有一个单独的整数状态代码,如下所示:
{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"},
};
我的问题:
- 当我收到状态码时12、如何获取相应的字符串?
- 有没有比使用结构更好的方法?
- 我应该使用“char *”而不是“String”吗?
- 理想情况下,我想将消息引用列表移动到 .h 文件,这会产生影响吗?
我认为必须有一个简单的解决方案,但作为 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];
}