0

我有一个 arduino 草图,它监听 RFID 标签,并获取它们的 uid 并将它们存储在一个数组中uint32_t

这是一个带有adaFruit BTLEadafruit NFC/RFID Shield的 arduino_uno 项目

数组是这样启动的:

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

然后在我的循环()中;

我找到一个像这样的 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

“作为卡片?

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

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

请帮助将此 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 回答