Arduino从SD卡读取数据库文件

时间:2013-09-04 15:51:26

标签: database search arduino

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

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

我认为你可以从使用结构和数组的混合实现look-table类型的结构开始。 因为我不知道用户将要输入的输入格式 让我们看一下简单的情况,其中type和sub-type都是1到100之间的数字。 在这种情况下,可以使用简单的2D阵列,阵列的每个元素对应于引脚映射。 现在这个引脚排列映射可以是位图。因为我不太了解您正在做什么样的映射。 例如,假设您有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 - >从子类型--->获取引脚输出