0

RFIDタグをリッスンし、uidを取得して配列に保存するarduinoスケッチがありますuint32_t

これは、adaFruit BTLEadafruit NFC/RFID シールドを備えた arduino_uno プロジェクトです。

配列は次のように開始されます。

uint32_t items[]= { 0,0,0,0,0,0};

次に、私の loop(); で

次のようなIDを見つけました:

success = nfc1.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
        //
        Serial.println(success,DEC);
        if (success) {
          // Display some basic information about the card
          //Serial.println("Found an ISO14443A card");
          //Serial.print("  UID Length: ");Serial.print(uidLength, DEC);Serial.println(" bytes");
          //Serial.print("  UID Value: ");
          nfc1.PrintHex(uid, uidLength);

          if (uidLength == 4)
          {
            // We probably have a Mifare Classic card ... 
            cardid = uid[0];
            cardid <<= 8;
            cardid |= uid[1];
            cardid <<= 8;
            cardid |= uid[2];  
            cardid <<= 8;
            cardid |= uid[3]; 
            Serial.print("Seems to be a Mifare Classic card #");
            Serial.println(cardid);
            BTLEserial.print(cardid);
          }
          Serial.println("");
        }

そのコードブロックがシリアルモニターにこれを出力するわけではありません:

Mifare Classic カードのようです #347161076 BTLE
への書き込み: 0x31 0x36 0x38 0x38 0x34

しかし、BTLEアプリは見ています

16884

「カーディッドとして?

これは、メソッドによって処理される uint32_t の奇妙なバイト変換に対するものであることは明らかですBTLEserial.print()

ID を見つけたら、上記の項目配列に最大 6 つを格納しています。コンマ区切りの文字列として、ブルートゥースを介してその配列全体をデバイスに送信したいと思います。

この uint32_t を文字列または BTLE で処理できる他のオブジェクトに変換するのを手伝ってください

4

1 に答える 1

0

私はこの方法を使用してそれを理解しました:

int radix =10;
char buffer[33];

char* getStringForUI32_T(uint32_t value){
     return ultoa(value,buffer,radix);

}
于 2014-09-12T17:39:34.643 に答える