NDEF格式是NFC论坛定义的一种标准数据交换格式,有了这种数据格式,各种NFC设备就可以直接读取或者写入所需要的数据,而不需要事先做约定。友我科技全系列NFC读写器都支持NDEF格式。
NDEF格式约定了很多NDEF数据类型uri,用于解析后面的数据,常用的NDEF数据类型uri有如下:
0: NDEF Text Type:
1: NDEF URI Type, http://www.:
2: NDEF URI Type, https://www.:
3:NDEF URI Type, http://:
4:NDEF URI Type, https://:
5:NDEF RTD URI Type, tel::
6:NDEF RTD URI Type, mailto::
7:NDEF RTD URI Type: sms::
NDEF数据格式URI有更多的格式定义,具体可以参考NDEF相关技术文档。
友我科技IC卡读卡器WEB插件系统支持NDEF格式的写入和读取,支持的卡有M1卡,NTAG等NFC标签。
有4个接口可以用于NDEF的操作。
NDEF_AddRecord(URI, DataStr)
参数:
URI: NDEF记录的类型,常用的类型如下:
0: NDEF Text Type:
1: NDEF URI Type, http://www.:
2: NDEF URI Type, https://www.:
3:NDEF URI Type, http://:
4:NDEF URI Type, https://:
5:NDEF RTD URI Type, tel::
6:NDEF RTD URI Type, mailto::
7:NDEF RTD URI Type: sms::
DataStr:记录的字符串值。
回调函数返回结果:
FunctionID=51,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
strData:无
FunctionID=52,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
参数:无, 此函数将列表的所有NDEF记录写入到标签中
FunctionID=53,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
FunctionID=54,
Result:数字,函数执行后的返回值,如果>=0,则result值也作为返回的NDEF记录的顺序号
UID:自定义的序号,
CardNo:所操作的卡的卡号
strData:NDEF记录的字符串值
valData:NDEF类型URI
一个NFC标签可以存储多个NDEF记录,NDEF记录数量与自身的数据大小和标签容量的大小有关。所以我们可以在一个NFC标签中存储多个NDEF记录。
增加一条NDEF记录到列表,注意此时数据只是在内存中,并没有写入到标签。
function AddToList()
{
var uri;
var Payload;
uri = 1;
Payload ="youwokeji.com.cn";
rfidreader.Repeat=0;
rfidreader.NDEF_AddRecord(uri,Payload);
}
清空所有的NDEF列表,注意是清空内存中的NDEF列表,此处也不操作NFC标签。
function ClearList()
{
rfidreader.Repeat=0;
rfidreader.NDEF_ClearAllRecords();
}
写入,将内存中的NDEF数据列表全部写入到NFC标签中。
function WriteContent()
{
rfidreader.Repeat=0;
rfidreader.NDEF_Write();
}
function ReadContent()
{
rfidreader.Repeat=0;
rfidreader.NDEF_Read();
}
rfidreader.onResult(function(resultdata)
{
switch(resultdata.FunctionID)
{
case 51:
if(resultdata.Result>0)
{
alert("增加到NDEF列表成功");
}
break;
case 52:
if(resultdata.Result>0)
{
alert("清空NDEF列表成功");
}
break;
case 53:
if(resultdata.Result>0)
{
CardNo = resultdata.CardNo;
Alert("写入成功");
}
break
case 54:
if(resultdata.Result>=0)
{
CardNo = resultdata.CardNo;
uri = resultdata.ValData;
ndefdata =resultdata.strData;
break;
}
}
);