0

以下は参考用の私のコードです。Rx_Buf には、Rfid_Tag[][] からの 2 つの値のいずれかが含まれます。別の関数から値を取得しているので、見つけて確認したいです。問題は、それが機能していないことです。Rfid_Tag[][] の値が異なります。つまり、破損しています。定義されたグローバル変数がどのように壊れているのかわかりません。const を宣言しようとしましたが、extern はまだ同じ問題です。これをスタンドアロン プログラムとして実行すると完全に動作しますが、main.c からこの関数を呼び出すと動作しません。誰でもこれで私を助けてくれませんか。

ありがとう

#define NUMBER_OF_RFID_TAGS 2
#define RFID_DATA_LENGTH    17

unsigned char  Rfid_Tag[NUMBER_OF_RFID_TAGS][RFID_DATA_LENGTH]= {
    {0x96,0x12,0xf1,0x6e,0xda,0x57,0x98,0x02,0x00,0xe1,0x50,0x00,0x00,0x00,0x00,0x00,0x11},
    {0x96,0x72,0xe9,0x6e,0xda,0x2f,0x98,0x02,0x00,0xe1,0x50,0x00,0x00,0x00,0x00,0x00,0x11}
};

int RFID_check(char *Rx_Buf)
{
    //unsigned char ucRfidReceivedData[RFID_DATA_LENGTH]= *Rx_Buf; //{0x00,0x01,0x2,0x03,0x04,0x5,0x06,0x07,0x8,0x09,0x0A,0xB,0x0C,0x0D,0xE,0x0F,0x10}; 
    unsigned count = 0;
    int found = false;

    for(int i = 0; i < NUMBER_OF_RFID_TAGS; i++){
        count = 0;
        for(int j = 0; j < RFID_DATA_LENGTH; j++){
            if(Rfid_Tag[i][j] == Rx_Buf[j]){
                count++;
                //PORTR.DIR = 0xff;
                //PORTR.OUTTGL = 0xff;
            }

        }
        if(count == RFID_DATA_LENGTH){

            found = true;
            break;
        }
    }

    if(found == true){
        PORTR.DIR = 0xff;
        PORTR.OUTTGL = 0x0f;
        RFID_accept();

    }
    else{
        RFID_error();
        PORTR.DIR = 0xff;
        PORTR.OUTTGL = 0x00;
    }


    return 0;
}
4

0 に答える 0