gpt4 book ai didi

arrays - 如何在 Arduino 中设置关联数据结构

转载 作者:行者123 更新时间:2023-12-04 04:57:04 25 4
gpt4 key购买 nike

我正在开发一个小型 Remote ,它可以让我控制我的 IR通过互联网控制设备。一切正常,但我仍然需要以一种可以轻松访问它们的方式存储代码。所以我想有一种方法可以有两个变量:

  • 一个“char rc_name[]”,其中包含 Remote 的名称,例如 TV、SAT 和 AMPLIFIER
  • 'char rc_function[]' 保存要执行的函数的名称,例如 POWER、VOLUME_UP 和 BUTTON_1

  • 鉴于这两个变量,我想接收所有必要的数据。
  • 'int code_type_num'
  • 'char code_value[]',例如“400555AA”
  • 'int code_type_bits

  • 总的来说,这一切看起来都很简单,但我真的找不到一种方法可以让我通过字符串键而不是整数 inex 访问数据。

    在 PHP 中,我会使用这样的东西:
    $remotes = array(
    'tv' => array(
    'POWER' => array(1, '400555AA', 32),
    'MUTE' => array(1, '400557AA', 32),
    ),
    );

    $rc_name = 'tv';
    $rc_function = 'power';
    $rc_data = $remotes[$rc_name][$rc_function];

    在 Arduino 中设置这种结构的最佳方法是什么?

    最佳答案

    我目前的方法也是迭代它。我希望有一种更优雅的方式。
    如果其他人需要它,我现在是这样做的:

    typedef struct {
    char* remote_name;
    char* function_name;
    int code_type;
    int code_bits;
    char* code_value;
    } IR_Code;

    int num_codes = 58;
    IR_Code ir_codes[58] = {
    { "amp", "power", 1, 32, "400501FE" },
    ...
    { "tv", "power", 1, 32, "20DF10EF" },
    };

    void send_defined_code(char* remote_name, char* function_name) {
    for( int i=0; i < num_codes; i++) {
    if(strcmp(remote_name, ir_codes[i].remote_name) == 0 && strcmp(function_name, ir_codes[i].function_name) == 0) {
    long unsigned int code = strtoul( ir_codes[i].code_value, 0, 16);
    Serial.print(F(" Type:"));
    Serial.print(ir_codes[i].code_type);
    Serial.print(F(" Value:0x"));
    Serial.print(code, HEX);
    Serial.print(F(" Bits:"));
    Serial.print(ir_codes[i].code_bits);
    return;
    }
    }
    }

    关于arrays - 如何在 Arduino 中设置关联数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16619734/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com