-1

私は現在、Arduino Unoを使用して制御されたIRリモコンに関連する問題に悩まされています。

私は配列に含まれる生データ信号を持っています:

Samsung_power[68] = {4500, 243, .... and so on};

Samsung のリモコンには非常に多くの機能があるため、0 ~ 20 の範囲の値など、UART からコマンドを受信する場合よりもはるかに簡単だと思います。テーブルを検索すると、適切な生データ配列が選択されます。

そう:

FunctionArray[20] = {Samsung_power, Channel_1, Channel_2, Channel_3.. etc};

ただし、コンパイラがそうさせてくれることは決してないので、ここで何かが完全に間違っていると想像できます:)。ですから、この特定の問題を解決する方法について、あなたの何人かがアイデアを持っていることを願っていました。

疑似コード:

receive = UART_READ();
sendRawDataToIRLED(FunctionArray[receive]);
4

4 に答える 4

3

補助構造体を宣言したくない場合は、少なくともデータ配列のサイズを格納する配列が必要であり、その長さを関数に渡します。sizeof を便利に使用して、それらが正しく計算されるようにすることができます。arduinoで次のコードを試してみましたが、ビルドされます:

#include "Arduino.h"

//bii:#entry_point()
void setup(){
}
void sendRawDataToIRLED(int array[], int len){
//your code here
}
void loop()
{
    int Samsung_power[] = {4500, 243, 23};
    int Channel_1[] = {450, 23, 233, 44, 55};
    int* FunctionArray[2] = {Samsung_power, Channel_1};
    int sizeArray[] = {sizeof(Samsung_power)/sizeof(int), sizeof(Channel_1)/sizeof(int)};
    int index = 0;//whatever your index
    sendRawDataToIRLED(FunctionArray[index], sizeArray[index]);
}
于 2014-02-03T16:46:31.810 に答える
1

関数の配列は実行できませんが、POINTER TO FUNCTION の配列は実行できます。ただし、配列内の関数には同じ入力パラメーターが必要です。

関数ポインターの配列を使用するにはどうすればよいですか? を参照してください。

于 2014-02-03T16:04:19.767 に答える
0

struct構造体の配列にyour を保持する配列を最初のフィールドとして持つa を定義しますSamsung_power

于 2014-02-03T16:00:43.530 に答える