C# Android NfcV读取标记始终位于0x00之前
我对NFC-V标签读取有问题。标签类型为标签it HF-I Plus(TMS37112)。以下是我用来读取数据的代码:C# Android NfcV读取标记始终位于0x00之前,c#,android,xamarin,nfc,iso-15693,C#,Android,Xamarin,Nfc,Iso 15693,我对NFC-V标签读取有问题。标签类型为标签it HF-I Plus(TMS37112)。以下是我用来读取数据的代码: private void GetTagInfo(Tag tag){ String[] techList = tag.GetTechList(); for (int i = 0; i < techList.Length; i++) { if(techList[i].Contains("NfcV")){
private void GetTagInfo(Tag tag){
String[] techList = tag.GetTechList();
for (int i = 0; i < techList.Length; i++) {
if(techList[i].Contains("NfcV")){
NfcV nfcv = NfcV.Get (tag);
nfcv.Connect ();
var response = nfcv.Transceive(new byte[] {
(byte)0x00,
(byte)0x23,
(byte)0x00,
(byte)0x01 });
}
}
}
private void GetTagInfo(Tag-Tag){
String[]techList=tag.GetTechList();
对于(int i=0;i
用c#写,但不是这里的目的(在Xamarin上工作)
不管我使用什么作为第一个块号,我的数据前都有一个0x00。这正常吗?您看到的是标志字节。该字节是每个NFC-V响应帧的一部分,提供有关命令状态的信息。如果此字节为0x00(或可能为0x80),则命令已成功执行,剩余字节包含命令的响应参数/数据(在您的情况下,读取多个块命令请求从块零开始的一个块) 如果设置了标志字节的第0位,则表示执行错误,第二个字节将按照ISO/IEC 15693-3标准中的定义对错误信息进行编码 因此,典型的NFC-V命令帧(使用
NfcV.transceive()
进行交换时)如下所示:
+-------+--------------+--------------------------------+-------------------------+
| FLAGS | COMMAND CODE | [ADDRESS, if Addressed_flag=1] | COMMAND PARAMETERS/DATA |
+-------+--------------+--------------------------------+-------------------------+
+-------+--------------------------+
| FLAGS | RESPONSE PARAMETERS/DATA |
+-------+--------------------------+
响应框架如下所示:
+-------+--------------+--------------------------------+-------------------------+
| FLAGS | COMMAND CODE | [ADDRESS, if Addressed_flag=1] | COMMAND PARAMETERS/DATA |
+-------+--------------+--------------------------------+-------------------------+
+-------+--------------------------+
| FLAGS | RESPONSE PARAMETERS/DATA |
+-------+--------------------------+
经过一些搜索,我在这里看到,在readSingleBlock的第370行和ReadMultipleBlock的第395行,他避免读取第一个字节。这正常吗?非常感谢你的回答,迈克尔。我找了一段时间来获取nfc-v协议的文档,以检查这个字节是否正常,我仍然没有找到它。所以你的回答对我来说是非常宝贵的。而且你的说明非常明确。