c - 为串行端口设备存储字符串命令的最优雅方式?

标签 c serial-port

假设我正在与串行端口设备通信,并且有大量命令 (74) 用于控制此类设备。存储和使用它们的最佳方式是什么?

当然我可以按以下方式组织它们:

static char *cmd_msgs[] =
{
    "start",
    "stop",
    "reset",
    "quit",
    "",
    "",
    "",
    "",
    ...
};

或人类可读:

char cmd_start_str[] = "start";
...
char cmd_quit_str[] = "quit";

有人可以指出处理此类任务的工作示例吗?

最佳答案

第一种方法很好 - 不要使用大量具有唯一名称的全局变量,它们很难引用,尤其是当您想遍历它们时。这就是字符串数组的用途(您的第一种方式)。如果你想要人类可读的代码(你应该想要的),使用一个合理命名的枚举,它的值对应于实际的命令字符串。所以做一些像

const char *cmds[] = {
    "command 1",
    "command 2",
    "Print Hello World",
    "Explode House"
};

enum {
    COMMAND_ONE,
    COMMAND_TWO,
    COMMAND_SAYHELLO,
    COMMAND_BOOM
};

这样你就可以通过索引数组轻松引用你的命令,但是你仍然可以通过编写 cmds[COMMAND_SAYHELLO] 等来获得他的可读性。

关于c - 为串行端口设备存储字符串命令的最优雅方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12128949/

相关文章:

c#:与设备通信期间数据缓冲区发生奇怪的偏移

c# - SerialPort 没有收到任何数据

c - 在C中重新分配内存时出现奇怪的问题

c++ - 监视器数量变化时的通知是什么?

c++ - Arduino C++,奇怪的数组行为

c++ - WriteFile 到串口总是超时,写入的字节数为零

java - Java从串口读取文件

java - 与 USB 驱动程序通信

c++ - 如何在运行时制作 mex 函数 printf?

c - 如何以小端顺序发送数据 C