我正在开发一个小型遥控器,让我可以通过互联网控制我的IR受控设备。一切正常,但我仍然需要以一种我可以轻松访问它们的方式存储代码。所以我想有一种方法可以让我有两个变量:
鉴于这两个变量,我想接收所有必要的数据。
这一般看起来都很简单,但是我找不到一种能让我通过字符串键而不是整数二进制来访问数据的方法。
在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中设置这样一个结构的最佳方法是什么?
答案 0 :(得分:3)
我目前的方法也是迭代它。我希望有一种更优雅的方式。 如果其他人需要它,我现在就是这样做的:
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;
}
}
}