Передача массива uint32_t uids через adafruit BTLE

У меня есть эскиз *******, который прослушивает RFID-теги и получает их uid и сохраняет их в массиве ********

Это проект *******_uno с adaFruit BTLE и в качестве adafruit NFC/RFID Shield

Массив запускается следующим образом:

******** 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("");
 }

Не то, чтобы этот блок кода печатал Serial Monitor:

Кажется, это классическая карточка Mifare # 347161076 Запись в BTLE: 0x31 0x36 0x38 0x38 0x34

Но приложение BTLE видит

16884

"как кардид?

Кажется очевидным, что это связано с каким-то странным преобразованием байтов на ********being, обработанным методом BTLEserial.print().

Поскольку я нахожу id, я храню до шести из них в массиве элементов выше. Я хотел бы отправить весь массив с помощью синего зуба на свое устройство, как строку, разделенную запятой.

Пожалуйста, помогите преобразовать этот ******** в строку или другой объект, который может обрабатываться BTLE

1 ответ

Я понял это, используя этот метод:

int radix =10;
char buffer[33];

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

}

licensed under cc by-sa 3.0 with attribution.