0

我正在尝试用 C 语言为 telosb 编写一个命令接口,规则是:“shift+:”开始一个新命令,“Esc”结束一个命令。那么我应该如何区分“shift”和“:”的组合呢?非常感谢。

4

1 回答 1

0

保持 MSP430 上的接口简单。您不像在 PC 上那样拥有无限的资源。如果您希望使用字符组合来表示命令,则需要执行字符串比较(这比检查带有 if-else 结构的每个单独字符要容易得多)。我曾经使用以下类型的命令结构开发这些接口:

struct command
{
    char *command;
    char *params;
    int numOfParams;
};

struct command commandList[] = 
{
    { "help", null, 0 },
    { "reset", "%x", 1 }
};

然后我会让我的 UART 处理程序查找有效命令——一个带有有效分隔符(例如,换行符)的命令。读取换行符后,您可以开始解析命令并使用 commandList 条目(通过 strcmp)验证它。commandList 包含命令、预期参数的类型(使用 sscanf 验证参数)和预期参数的数量。

此过程也可以扩展为比较字节数组(在您的情况下使用特殊字符,例如十六进制的 ESC)。

我希望这可以帮助您入门。

于 2013-11-21T19:55:22.213 回答