WEB 读写 NDEF 数据
NFC 标签 NDEF 格局介绍
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 相干技术文档。
友我科技 WEB 插件 NDEF 接口
友我科技 IC 卡读卡器 WEB 插件零碎反对 NDEF 格局的写入和读取,反对的卡有 M1 卡,NTAG 等 NFC 标签。有 4 个接口能够用于 NDEF 的操作。
减少记录到 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:无
革除所有 NDEF 记录,此函数不操作标签
NDEF_ClearAllRecords()
参数:无
回调函数返回后果:
FunctionID=52,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
将列表写到 NFC 标签
NDEF_Write()
参数:无,此函数将列表的所有 NDEF 记录写入到标签中
回调函数返回后果:
FunctionID=53,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
从 NFC 标签读 NDEF 记录
NDEF_Read()
参数:无
回调函数返回后果:
FunctionID=54,
Result:数字,函数执行后的返回值, 如果 >=0,则 result 值也作为返回的 NDEF 记录的顺序号
UID:自定义的序号,
CardNo:所操作的卡的卡号
strData:NDEF 记录的字符串值
valData:NDEF 类型 URI
# NDEF 的 javascript 操作示例代码
一个 NFC 标签能够存储多个 NDEF 记录,NDEF 记录数量与本身的数据大小和标签容量的大小无关。所以咱们能够在一个 NFC 标签中存储多个 NDEF 记录。
减少一条 NDEF 记录到列表,留神此时数据只是在内存中,并没有写入到标签。
function AddToList()
{
var uri;
var Payload;
uri = 1; // 1 示意网址,Payload ="youwokeji.com.cn";// 写入的 NDEF 数据,因为 uri= 1 表明是 www., 所以此处网址不必减少 www.
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();}
读取,读取 NFC 标签中所有的 NDEF 记录
function ReadContent()
{
rfidreader.Repeat=0;
rfidreader.NDEF_Read();}
4 个 NDEF 接口将全副用回调函数返回所有的数据:
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;
}
}
);
参考资料: IC 卡读卡器 web 开发指南.