读取 mifare 卡块并将其块的一部分与一些文本进行比较
read mifare card block and compare part of its block with some text
我正在使用RC522读取一个Mifare卡块,我在一个块中写了"RhytonUser001"。
Arduino是这样读取的:
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] 是 returns 来自 card 的 ascii 字符。
我需要将其转换为真正的字符,然后将其转换为字符串,因为我想拆分该字符串。
我也试过这个(没有拆分):
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
}
更新:
示例:
在上面的代码中,请想想:
回读块[j] = 082 104 121 116 111 110 085 115 101 114 048 048 049
我可以得到它并将它转换为 char,所以它变成了:RhytonUser001
然后我想拆分它String sth = split(***, 'User');
然后获取 sth[0]
并将其与 Rhyton 进行比较以检查它是否是 Rhyton
但是当我尝试这样做时,我得到了一个错误。
根据 this link 中给出的信息,我无法拆分字符(因为它不是字符串)。那么如何比较 readbackblock[j] 与 Rhyton 或任何其他文本?
您可以通过连接 16 个字符来构建 String
对象。
String strBlock = "";
for (int j=0 ; j<16 ; j++) //print the block contents
{
char c = readbackblock[j];
lcd.print(c);
strBlock += c;
}
然后,你可以使用substring
来提取不同的部分。
String strFirst6 = strBlock.substring( 0, 6 );
if ( strFirst6 == "Rhyton" ) {
...
注意字符串的实际长度。如果你试图读到最后,这是未定义的行为。上面的代码假设 16 个字符中的 none 将为 0。
我正在使用RC522读取一个Mifare卡块,我在一个块中写了"RhytonUser001"。
Arduino是这样读取的:
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] 是 returns 来自 card 的 ascii 字符。 我需要将其转换为真正的字符,然后将其转换为字符串,因为我想拆分该字符串。
我也试过这个(没有拆分):
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
}
更新:
示例:
在上面的代码中,请想想:
回读块[j] = 082 104 121 116 111 110 085 115 101 114 048 048 049
我可以得到它并将它转换为 char,所以它变成了:RhytonUser001
然后我想拆分它String sth = split(***, 'User');
然后获取 sth[0]
并将其与 Rhyton 进行比较以检查它是否是 Rhyton
但是当我尝试这样做时,我得到了一个错误。
根据 this link 中给出的信息,我无法拆分字符(因为它不是字符串)。那么如何比较 readbackblock[j] 与 Rhyton 或任何其他文本?
您可以通过连接 16 个字符来构建 String
对象。
String strBlock = "";
for (int j=0 ; j<16 ; j++) //print the block contents
{
char c = readbackblock[j];
lcd.print(c);
strBlock += c;
}
然后,你可以使用substring
来提取不同的部分。
String strFirst6 = strBlock.substring( 0, 6 );
if ( strFirst6 == "Rhyton" ) {
...
注意字符串的实际长度。如果你试图读到最后,这是未定义的行为。上面的代码假设 16 个字符中的 none 将为 0。