Saya membaca blok kartu Mifare menggunakan RC522, saya menulis "RhytonUser001" di satu blok.

Arduino membacanya dengan cara ini:

byte readbackblock[18];//This array is used for reading out a block. The MIFARE_Read method requires a buffer that is at least 18 bytes to hold the 16 bytes of a block.

for (int j=0 ; j<16 ; j++) //print the block contents
{
    char c = readbackblock[j];
    lcd.print(c);
}

Readbackblock[j] adalah karakter ascii yang kembali dari kartu. Saya perlu mengubahnya menjadi Karakter aslinya, lalu mengubahnya menjadi String karena saya ingin membagi string itu.

Saya juga mencoba ini (tanpa split):

     char d = readbackblock[0] + readbackblock[1] + readbackblock[2] + readbackblock[3] + readbackblock[4] + readbackblock[5];
     if(d == "Rhyton"){
      digitalWrite(7, HIGH);
     } else {
      digitalWrite(6, HIGH); // always this happens
     }

PEMBARUAN:
contoh:
dalam kode di atas tolong pikirkan:
readbackblock[j] = 082 104 121 116 111 110 085 115 101 114 048 048 049
saya bisa mendapatkannya dan mengubahnya menjadi char sehingga menjadi: RhytonUser001
lalu saya ingin membaginya String sth = split(***, 'User');
dan dapatkan sth[0] dan bandingkan dengan Rhyton untuk memeriksa apakah itu Rhyton atau bukan
tetapi ketika saya mencoba melakukan ini saya mendapatkan kesalahan. berdasarkan informasi yang diberikan dalam tautan ini Saya tidak dapat membagi char (karena bukan string). Jadi bagaimana saya bisa membandingkan readbackblock[j] dengan Rhyton atau teks lainnya?

0
Alireza Sabahi 19 September 2019, 17:59

1 menjawab

Jawaban Terbaik

Anda dapat membuat objek String dengan menggabungkan 16 karakter.

String strBlock = "";
for (int j=0 ; j<16 ; j++) //print the block contents
{
    char c = readbackblock[j];
    lcd.print(c);
    strBlock += c;
}

Kemudian, Anda dapat menggunakan substring untuk mengekstrak berbagai bagian.

String strFirst6 = strBlock.substring( 0, 6 );
if ( strFirst6 == "Rhyton" ) {
    ...

Berhati-hatilah dengan panjang senar yang sebenarnya. Ini adalah perilaku yang tidak ditentukan jika Anda mencoba membaca sampai akhir. Kode di atas menganggap bahwa tidak satu pun dari 16 karakter akan menjadi 0.

1
manuell 22 Oktober 2019, 10:56