2

我参与了一个项目,该项目使用 arduino 作为电气面板的测试设备,就像这样。

用户将通过键盘输入“类型”数字,并根据输入,设备应该能够重新分配引脚模式。

除了我已经到了涉及太多可能类型的地步之外,其他一切似乎对我来说都完美无缺。目前,我能够使用 switch-case 语句完成所需的过程,因为对于原型,我决定只包含 10 种类型。

主要目标是设备应该能够区分具有子类型(100+)的多个(1-100)类型。所以总共可能有数百个项目需要存储在设备中,这就是为什么我决定使用 SD 卡来保存数据。

我对编程并不陌生,所以我可以轻松掌握概念,但我现在最大的问题是我不知道实现这个过程的最佳方法。

我要求的只是某种流程来实现对 sd 卡上的文件的查询并返回值(需要分配的引脚号,以便设备允许在某些引脚上输入并在某些引脚上发送输出.) 不需要特定的行,但非常感谢查询和返回值的示例。谢谢!

PS。该设备将不会连接到任何其他其他平台。

4

2 回答 2

0

您可以在 SD 卡 ( http://arduino.cc/en/Reference/SD ) 上存储一些数据,但它不是可编译的代码,因此您必须以 ASCII 格式存储一些数据结构。

另一个建议是使用不同型号的 Arduino,例如 Arduino Due,它有高达 512KB 的用于代码的闪存(普通 Arduino 有 32KB)。

这并不能解决您的根本问题,即大型 switch 语句。看看这些想法:

于 2013-09-06T00:27:24.590 回答
0

我认为您可以从使用结构和数组的混合来实现查找表类型的结构开始。由于我不知道用户将输入的输入格式让我们寻找简单的情况,其中类型和子类型都是 1 到 100 之间的数字。在这种情况下,可以使用简单的二维数组,数组的每个元素对应引脚映射。现在这个引脚映射可以是位图。因为我不知道你在做什么映射的太多信息。例如,假设您有 8 个引脚,每个引脚都可以输入或输出,为此您可以使用 8 位,每个位号本身对应于引脚号,位值对应于输入或输出。如果您有两个以上的状态,那么您可以使用两位而不是一位来获得 4 四个可能的值。

但是,如果用户输入是字符串形式。在这种情况下,您将需要使用结构数组来创建类似数据结构的映射,并通过它搜索特定的引脚。

    struct first_level_map
    {
      string type;
      uint8_t firs_level_id;
    }

    struct second_level_map
    {
      string subtype;
      uint8_t pin_out;
    }

    struct first_level_map type_array[100];
    struct second_level_map subtype_array[100];

    struct first_second_map
    {
      uint8_t second_level_id;
      struct second_level_map subtype_array[100];
    }
   struct first_second_map first_second_map_array[100];

输入用户输入--->获取first_level_id ---->索引first_second_map_array---->获取second_level_id-->从子类型--->获取引脚输出

于 2013-09-06T13:27:49.217 回答