通过adafruit BTLE传递一组uint32_t uids

时间:2014-09-12 12:40:09

标签: arduino nfc mifare uint32-t btle

我有一个arduino草图,它会侦听RFID标签,并获取他们的uid并将它们存储在uint32_t

的数组中

这是一个带有adaFruit BTLEadafruit NFC/RFID Shield

的arduino_uno项目

阵列的启动方式如下:

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

然后在我的循环();

我发现了一个像这样的身份:

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

&#34;作为cardid?

很明显,这是由BTLEserial.print()方法处理的uint32_tbeing上的一些奇怪的字节转换。

当我找到id时,我将在上面的items数组中存储多达六个。我想通过蓝牙将整个阵列发送到我的设备,作为逗号分隔的字符串。

请帮助将此uint32_t转换为可由BTLE处理的字符串或其他对象

1 个答案:

答案 0 :(得分:0)

我通过使用这种方法弄明白了:

int radix =10;
char buffer[33];

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

}