HarmonyOS鸿蒙Next中使用MifareClassicTag.readSingleBlock方法读M1卡时,一直报3100204错误,读之前已经卡片已经验证成功,请问怎么解决?
HarmonyOS鸿蒙Next中使用MifareClassicTag.readSingleBlock方法读M1卡时,一直报3100204错误,读之前已经卡片已经验证成功,请问怎么解决?
这是代码,请查看一下,帮忙看看是哪里出了问题:
onPageShow(): void {
// 读取nfc标签
if (nfcTagElementName != undefined) {
// 调用tag模块中前台优先的接口,使能前台应用程序优先处理所发现的NFC标签功能
let techList: number[] = [tag.NFC_A, tag.NFC_B, tag.NFC_F, tag.NFC_V,tag.NDEF,tag.NDEF_FORMATABLE,tag.MIFARE_CLASSIC];
try {
tag.on('readerMode', nfcTagElementName, techList, (error : BusinessError, tagInfo : tag.TagInfo)=>{
if (!error) {
// 获取特定技术类型的NFC标签对象
if (tagInfo == null || tagInfo == undefined) {
hilog.error(0x0000, 'testTag', 'readerModeCb tagInfo is invalid');
return;
}
if (tagInfo.uid == null || tagInfo.uid == undefined) {
hilog.error(0x0000, 'testTag', 'readerModeCb uid is invalid');
return;
}
if (tagInfo.technology == null || tagInfo.technology == undefined || tagInfo.technology.length == 0) {
hilog.error(0x0000, 'testTag', 'readerModeCb technology is invalid');
return;
}
console.log("mifareClassic: tag found tagInfo = ", JSON.stringify(tagInfo));
this.tagInfo = JSON.stringify(tagInfo)
// 执行读写接口完成标签数据的读取或写入数据到标签
// use the IsoDep technology to access this nfc tag.
let mifareClassic : tag.MifareClassicTag | null = null;
// getMifareClassic
for (let i = 0; i < tagInfo.technology.length; i++) {
if (tagInfo.technology[i] == tag.MIFARE_CLASSIC) {
try {
mifareClassic = tag.getMifareClassic(tagInfo);
console.log("mifareClassic, mifareClassic", JSON.stringify(mifareClassic))
} catch (error) {
hilog.error(0x0000, 'testTag', 'readerModeCb getIsoDep error = %{public}s', JSON.stringify(error));
return;
}
}
}
if (mifareClassic == undefined) {
hilog.error(0x0000, 'testTag', 'readerModeCb getIsoDep is invalid');
return;
}
if(mifareClassic == null){
return;
}
try {
mifareClassic.connect()
console.info("mifareClassic tag connect success");
} catch (businessError) {
console.error("mifareClassic tag connect businessError: " + businessError);
}
let tagSize : number = mifareClassic.getTagSize();
this.cardSize = tagSize +'B';
let getType : tag.MifareClassicType = mifareClassic.getType();
try {
let key =[0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
let sectorCount : number = mifareClassic.getSectorCount();
this.sectorCount = sectorCount // 扇区数
for (let i = 0 ; i < sectorCount; i++) {
// 验证扇区
mifareClassic.authenticateSector(i, key, true, (err : BusinessError)=>{
if (err) {
console.error(`mifareClassic, 第${i}块扇区验证失败, errCode: ${err.code}, message: ${err.message}`);
} else {
console.info(`mifareClassic , 第${i}块扇区验证成功`);
// 验证扇区成功 获取扇区的第一个块号
let blockIndex : number | undefined = mifareClassic?.getBlockIndex(i)
if(blockIndex != undefined){
mifareClassic?.readSingleBlock(blockIndex, (err : BusinessError, data : number[])=>{
if (err) {
console.error(`mifareClassic,第${blockIndex}块 读取失败 : ` + err.code + "," + err.name);
} else {
console.info(`mifareClassic,第${blockIndex}块mifareClassic readSingleBlock AsyncCallback data: ` + data);
}
});
mifareClassic?.readSingleBlock(blockIndex+1, (err : BusinessError, data : number[])=>{
if (err) {
console.error(`mifareClassic,第${blockIndex} + 1块 读取失败 : ` + err.code + "," + err.name);
} else {
console.info(`mifareClassic,第${blockIndex}+1块mifareClassic readSingleBlock AsyncCallback data: ` + data);
}
});
mifareClassic?.readSingleBlock(blockIndex+2, (err : BusinessError, data : number[])=>{
if (err) {
console.error(`mifareClassic,第${blockIndex} + 2块 读取失败 : ` + err.code + "," + err.name);
} else {
console.info(`mifareClassic,第${blockIndex} + 2块mifareClassic readSingleBlock AsyncCallback data: ` + data);
}
});
mifareClassic?.readSingleBlock(blockIndex+3, (err : BusinessError, data : number[])=>{
if (err) {
console.error(`mifareClassic,第${blockIndex} + 3块 读取失败 : ` + err.code + "," + err.name);
} else {
console.info(`mifareClassic,第${blockIndex} + 3块mifareClassic readSingleBlock AsyncCallback data: ` + data);
}
});
}
}
});
}
} catch (err) {
console.error(`mifareClassic authenticateSector Promise errCode: ${err.code}, " + "message: ${err.message}`);
}
} else {
hilog.info(0x0000, 'testTag', 'readerModeCb readerModeCb error %{public}s', JSON.stringify(error));
}
});
foregroundRegister = true;
} catch (error) {
hilog.error(0x0000, 'testTag', 'on readerMode error = %{public}s', JSON.stringify(error));
}
}
}
更多关于HarmonyOS鸿蒙Next中使用MifareClassicTag.readSingleBlock方法读M1卡时,一直报3100204错误,读之前已经卡片已经验证成功,请问怎么解决?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
https://developer.huawei.com/consumer/cn/forum/topic/0203172772218129232?fid=0109140870620153026
可以参考下这个代码
更多关于HarmonyOS鸿蒙Next中使用MifareClassicTag.readSingleBlock方法读M1卡时,一直报3100204错误,读之前已经卡片已经验证成功,请问怎么解决?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
我的代码逻辑基本上和你上面说的一样,根据你说的做了调整,还是一样无法读出,请再帮忙看一下代码:
try {
mifareClassic.connect()
console.info("mifareClassic tag connect success");
} catch (businessError) {
console.error("mifareClassic tag connect businessError: " + businessError);
}
// see 'tag.TagInfo' at 'js-apis-nfcTag.md', obtains the 'mifareClassic' correctly.
// byte[] keybyte = new byte[]{0x01, (byte) 0x11, (byte) 0x18,0x3F,0x12, (byte) 0x11};
// let key = [0x01, 0x11, 0x18, 0x3F, 0x12, 0x11]
try {
let key =[0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
let sectorCount : number = mifareClassic.getSectorCount();
this.sectorCount = sectorCount // 扇区数
for (let i = 0 ; i < sectorCount; i++) {
mifareClassic.authenticateSector(i, key, true, (err : BusinessError) => {
if (err) {
console.error(`mifareClassic, 第${i}块扇区验证失败, errCode: ${err.code}, message: ${err.message}`);
} else {
console.info(`mifareClassic , 第${i}块扇区验证成功`);
// 验证扇区成功 获取扇区的第一个块号
let blockCount : number | undefined = mifareClassic?.getBlockCountInSector(i)
if(blockCount != undefined){
for(let j = 0 ; j < blockCount ; j++){
mifareClassic?.readSingleBlock(j, (err : BusinessError, data : number[]) => {
if (err) {
console.error(`mifareClassic第${i}扇区,第${j}块 读取失败 : ${err.code},${err.name}`);
} else {
console.info(`mifareClassic第${i}扇区,第${j}块mifareClassic readSingleBlock AsyncCallback data: ${data}`);
}
});
}
}
}
});
}
} catch (err) {
console.error(`mifareClassic authenticateSector Promise errCode: ${err.code}, " + "message: ${err.message}`);
}
运行打印:
12-23 22:17:33.144 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo I mifareClassic: tag found tagInfo = {"uid":[176,118,177,36],"technology":[1,8,7],"tagRfDiscId":2,"extrasData":[{"Sak":8,"Atqa":"0400"},{"Sak":8,"Atqa":"0400"},{}]}
12-23 22:17:33.146 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo I mifareClassic, mifareClassic {}
12-23 22:17:33.147 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo I mifareClassic tag connect success
12-23 22:17:33.158 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo I mifareClassic , 第1块扇区验证成功
12-23 22:17:33.166 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo I mifareClassic , 第2块扇区验证成功
12-23 22:17:33.177 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo I mifareClassic , 第3块扇区验证成功
12-23 22:17:33.186 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo I mifareClassic , 第14块扇区验证成功
12-23 22:17:33.195 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo I mifareClassic , 第7块扇区验证成功
12-23 22:17:33.203 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo I mifareClassic , 第12块扇区验证成功
12-23 22:17:33.211 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo I mifareClassic , 第8块扇区验证成功
12-23 22:17:33.219 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo I mifareClassic , 第10块扇区验证成功
12-23 22:17:33.232 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo I mifareClassic , 第6块扇区验证成功
12-23 22:17:33.242 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo I mifareClassic , 第15块扇区验证成功
12-23 22:17:33.250 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo I mifareClassic , 第5块扇区验证成功
12-23 22:17:33.271 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第1扇区,第0块 读取失败 : 3100204,Error
12-23 22:17:33.278 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo I mifareClassic , 第4块扇区验证成功
12-23 22:17:33.287 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo I mifareClassic , 第11块扇区验证成功
12-23 22:17:33.296 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo I mifareClassic , 第13块扇区验证成功
12-23 22:17:33.316 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第1扇区,第1块 读取失败 : 3100204,Error
12-23 22:17:33.323 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo I mifareClassic , 第0块扇区验证成功
12-23 22:17:33.332 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo I mifareClassic , 第9块扇区验证成功
12-23 22:17:33.357 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第1扇区,第2块 读取失败 : 3100204,Error
12-23 22:17:33.380 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第1扇区,第3块 读取失败 : 3100204,Error
12-23 22:17:33.403 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第2扇区,第1块 读取失败 : 3100204,Error
12-23 22:17:33.428 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第2扇区,第0块 读取失败 : 3100204,Error
12-23 22:17:33.453 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第2扇区,第3块 读取失败 : 3100204,Error
12-23 22:17:34.987 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第3扇区,第0块 读取失败 : 3100204,Error
12-23 22:17:34.987 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第3扇区,第1块 读取失败 : 3100204,Error
12-23 22:17:34.988 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第3扇区,第3块 读取失败 : 3100204,Error
12-23 22:17:34.988 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第2扇区,第2块 读取失败 : 3100204,Error
12-23 22:17:34.988 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第14扇区,第0块 读取失败 : 3100204,Error
12-23 22:17:34.988 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第14扇区,第1块 读取失败 : 3100204,Error
12-23 22:17:34.989 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第3扇区,第2块 读取失败 : 3100204,Error
12-23 22:17:34.989 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第14扇区,第3块 读取失败 : 3100204,Error
12-23 22:17:34.990 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第7扇区,第0块 读取失败 : 3100204,Error
12-23 22:17:34.990 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第7扇区,第2块 读取失败 : 3100204,Error
12-23 22:17:34.991 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第7扇区,第3块 读取失败 : 3100204,Error
12-23 22:17:34.991 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第10扇区,第0块 读取失败 : 3100204,Error
12-23 22:17:34.991 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第10扇区,第2块 读取失败 : 3100204,Error
12-23 22:17:34.991 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第12扇区,第0块 读取失败 : 3100204,Error
12-23 22:17:34.991 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第10扇区,第1块 读取失败 : 3100204,Error
12-23 22:17:34.991 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第7扇区,第1块 读取失败 : 3100204,Error
12-23 22:17:34.991 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第12扇区,第1块 读取失败 : 3100204,Error
12-23 22:17:34.993 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第15扇区,第1块 读取失败 : 3100204,Error
12-23 22:17:34.993 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第14扇区,第2块 读取失败 : 3100204,Error
12-23 22:17:34.993 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第6扇区,第3块 读取失败 : 3100204,Error
12-23 22:17:34.994 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第6扇区,第1块 读取失败 : 3100204,Error
12-23 22:17:34.994 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第15扇区,第3块 读取失败 : 3100204,Error
12-23 22:17:34.994 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第15扇区,第0块 读取失败 : 3100204,Error
12-23 22:17:34.994 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第10扇区,第3块 读取失败 : 3100204,Error
12-23 22:17:34.995 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第5扇区,第0块 读取失败 : 3100204,Error
12-23 22:17:34.995 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第5扇区,第2块 读取失败 : 3100204,Error
12-23 22:17:34.995 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第5扇区,第3块 读取失败 : 3100204,Error
12-23 22:17:34.996 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第12扇区,第2块 读取失败 : 3100204,Error
12-23 22:17:34.997 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第5扇区,第1块 读取失败 : 3100204,Error
12-23 22:17:34.997 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第11扇区,第1块 读取失败 : 3100204,Error
12-23 22:17:34.997 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第4扇区,第0块 读取失败 : 3100204,Error
12-23 22:17:34.997 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第11扇区,第0块 读取失败 : 3100204,Error
12-23 22:17:34.998 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第4扇区,第1块 读取失败 : 3100204,Error
12-23 22:17:34.998 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第4扇区,第3块 读取失败 : 3100204,Error
12-23 22:17:34.998 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第4扇区,第2块 读取失败 : 3100204,Error
12-23 22:17:35.000 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第13扇区,第0块 读取失败 : 3100204,Error
12-23 22:17:35.000 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第8扇区,第0块 读取失败 : 3100204,Error
12-23 22:17:35.000 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第0扇区,第1块 读取失败 : 3100204,Error
12-23 22:17:35.000 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第8扇区,第2块 读取失败 : 3100204,Error
12-23 22:17:35.000 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第13扇区,第3块 读取失败 : 3100204,Error
12-23 22:17:35.001 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第13扇区,第2块 读取失败 : 3100204,Error
12-23 22:17:35.001 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第11扇区,第2块 读取失败 : 3100204,Error
12-23 22:17:35.002 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第9扇区,第0块 读取失败 : 3100204,Error
12-23 22:17:35.002 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第11扇区,第3块 读取失败 : 3100204,Error
12-23 22:17:35.002 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第0扇区,第3块 读取失败 : 3100204,Error
12-23 22:17:35.002 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第6扇区,第0块 读取失败 : 3100204,Error
12-23 22:17:35.002 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第9扇区,第2块 读取失败 : 3100204,Error
12-23 22:17:35.002 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第0扇区,第0块 读取失败 : 3100204,Error
12-23 22:17:35.002 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第6扇区,第2块 读取失败 : 3100204,Error
12-23 22:17:35.003 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第15扇区,第2块 读取失败 : 3100204,Error
12-23 22:17:35.003 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第0扇区,第2块 读取失败 : 3100204,Error
12-23 22:17:35.003 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第8扇区,第3块 读取失败 : 3100204,Error
12-23 22:17:35.003 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第12扇区,第3块 读取失败 : 3100204,Error
12-23 22:17:35.003 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第9扇区,第1块 读取失败 : 3100204,Error
12-23 22:17:35.003 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第9扇区,第3块 读取失败 : 3100204,Error
12-23 22:17:35.004 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第8扇区,第1块 读取失败 : 3100204,Error
12-23 22:17:35.005 15371-15371 A03D00/com.kim...nfcdemo/JSAPP com.kimliu.nfcdemo E mifareClassic第13扇区,第1块 读取失败 : 3100204,Error
第二层for循环里面,读取数据时,你使用j直接读取,参考安卓代码:
`mifareClassic.readBlock(mifareClassic.sectorToBlock(i) + j);
鸿蒙nfc读写数据的api功能,基本与安卓的类似,你可以参考你原先安卓的读写代码,逻辑结构不用变,将api替换下名称替换下即可。你上面的代码,应该是有些问题。
安卓代码:
private void readM1Card(Tag tag) {
MifareClassic mifareClassic = MifareClassic.get(tag);
try {
mifareClassic.connect();
int sectorCount = mifareClassic.getSectorCount();
for (int i = 0; i < sectorCount; i++) {
if (mifareClassic.authenticateSectorWithKeyA(i, MifareClassic.KEY_DEFAULT)) {
int blockCount = mifareClassic.getBlockCountInSector(i);
for (int j = 0; j < blockCount; j++) {
byte[] data = mifareClassic.readBlock(mifareClassic.sectorToBlock(i) + j);
// 处理读取到的数据
String dataStr = new String(data);
Toast.makeText(this, "Sector " + i + ", Block " + j + ": " + dataStr, Toast.LENGTH_SHORT).show();
}
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
mifareClassic.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
尝试下参考上面安卓代码,你的mifareClassic.authenticateSector之后,
- let sectorCount : number = mifareClassic.getSectorCount();
- 然后再进行for循环
错误码3100204通常表示操作权限不足或卡片状态异常。建议您按照以下步骤排查:
-
确保卡片已正确验证,且使用的密钥与卡片匹配。
-
检查读卡器与卡片的连接是否稳定,避免信号干扰。
-
确认使用的块地址合法,且该块未被设置为不可读。
-
尝试重新初始化卡片,再进行读取操作。
如果问题依旧,建议查看HarmonyOS官方文档或联系技术支持获取更详细的指导。