NFC系列NTAG2x标签读写函数说明

一、动态库简介

动态库OUR_MIFARE.dll用VC开发,编译成32位Release实体或64位Release实体,适用于WIN2000、XP、2003、win7、win8、win10的32或64位编译和运行环境。本文档下面的源代码例子是Vb6的调用格式。

本动态库是本公司USB接口NFC系列NTAG2x卡读写器的配套文件,必须和读写器一起使用。

OUR_MIFARE.dll支持在软件运行中可以随时更换USB接口。本公司免驱型和有驱型读写器使用的OUR_MIFARE.dll不同,但函数的调用一样,如果客户程序开发好了,免驱型和有驱型互换时,只需更换对应的OUR_MIFARE.dll。

推荐使用动态调用的方法使用本动态库。

本说明使用设备的淘宝链接:​​https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-17663462238.11.4b8ae728rekhH0&id=545110725733​

Ntag2x卡结构说明

二、易用函数

我们把复杂的NTAG2x卡认初始化、读、写过程集成转化为更简单的函数调用操作,即使是从未接触过一卡通开发的软件开发人员,写起程序来也毫不困难,一点都不浪费开发时间。开发人员不再需要花大量时间去了解NTAG2x卡的内部机制,我们将它封装成几个函数:1、初始化NTAG2x卡;2、轻松读NTAG2x卡;3、轻松写NTAG2x卡,只需十分钟就可轻松搞定NTAG2x卡!。

初始化NTAG2x卡

函数名:piccinit_ntag

功能

设置NTAG2x是否要认证卡密码才能读写卡(出厂状态的卡不需要认证卡密码就可以读、写),也可以用此函数修改卡片认证密码。

VB声明

Declare Function piccinit_ntag Lib "OUR_MIFARE.dll" (ByVal ctrlword As Byte, ByVal serial As Long, ByVal picckey As Long, ByVal piccdata As Long) As Byte

输入

1、ctrlword 控制字,取值请参看示例。

2、serial只需指向一个至少已分配了7个char空间的可写数组 unsigned char *指针,serial的下标由0开始。

3、picckey指向存放认证密码的数组4个字节。

4、piccdata初始化卡的信息共16个字节,每个字节的取值请参看示例。

返回

0

初始化卡成功

8

寻卡错误,根本就没有卡在感应区,*serial无效。

12

卡片密码认证失败。

14

设置失败,可能需要验证密码。

22

动态库或驱动程序异常,解决方法是退出程序,拔出IC卡读写器,重装驱动程序再插上IC卡读写器重试,或者重新拷贝动态库OUR_MIFARE.dll到正确的位置。

23

没有连上USB 读写器。

24

操作超时。可能是电脑中毒导致USB帧传递调度缓慢,或者是IC卡读写器有问题,解决方法是重启电脑或重新拔插IC卡读写器。

其他

见函数返回代码表:

轻松读NTAG2x卡:

函数名:piccreadex_ntag

功能

超强读卡,使用此函数可以一次读取多个连续页(最多12个)的信息,并且返回卡序列号。

VB声明

Declare Function piccreadex_ntag Lib "OUR_MIFARE.dll" (ByVal ctrlword As Byte, ByVal serial As Long, ByVal picckey As Long, ByVal blockaddr As Byte, ByVal blocksize As Byte, ByVal piccdata As Long) As Byte

输入

1、ctrlword:控制字,取值16表示要先认证卡密码,取值0表示不认证卡密码。

2、serial:只需指向一个至少已分配了7个char空间的可写数组 unsigned char *指针,serial的下标由0开始。

3、picckey:指向存放认证密码的数组4个字节。

4、blockaddr:读起始页地址。

5、blocksize:本次读取的页数,最大取值12。

6、piccdata:是指向下标个数不小于48的字节数组,用于存放本次读取的数据,每个页4个字节。

返回

返回unsigned char值,并将本次从卡内读取的数据传值到*piccdata指向的数组中。

0

操作成功,读出的数据有效。

8

寻卡错误,根本就没有卡在感应区,*serial无效。

12

卡片密码认证失败。

13

读卡失败,可能需要验证密码。

23

没有连上USB 读写器

其他

见函数返回代码表:

例子及注释

请要本公司网站下载各种开发工具的例子源代码,本函数的声明和输入参数格式可以直接套用,谢谢使用

轻松写NTAG2x卡

函数名:piccwriteex_ntag

功能

超强写卡,使用此函数可以一次性写多个连续页(最多11个)数据到页地址大于3的用户数据页。Ntag2x卡0、1、2、3前面4个页保存了UID序列号、制造商信息、卡类型及容量等信息不可改写。

VB声明

Declare Function piccwriteex_ntag Lib "OUR_MIFARE.dll" (ByVal ctrlword As Byte, ByVal serial As Long, ByVal picckey As Long, ByVal blockaddr As Byte, ByVal blocksize As Byte, ByVal piccdata As Long) As Byte

输入

1、ctrlword:控制字,取值16表示要先认证卡密码,取值0表示不认证卡密码。

2、serial:只需指向一个至少已分配了7个char空间的可写数组 unsigned char *指针,serial的下标由0开始。

3、picckey:指向存放认证密码的数组4个字节。

4、blockaddr:写起始页地址,取值大于3。

5、blocksize:本次写入的页数,最大取值11。

6、piccdata:是指向下标个数不小于44的字节数组,用于存放本次要写入卡片的数据,数据写入到从从blockaddr开始的页内,每个页4个字节。

返回

返回unsigned char值,并将piccdata数组内的数据写入卡内。

0

操作成功。

8

寻卡错误,根本就没有卡在感应区,*serial无效。

12

卡片密码认证失败。

14

写卡失败,可能需要验证密码

20

写卡失败,页已锁定不可写

23

没有连上USB 读写器

其他

见函数返回代码表:

只读取NTAG2x卡UID

函数名:piccrequest_ul

功能

读取Ntag2x卡的出厂序列号,不管卡片是否加密都可以读取。

VB声明

Declare Function piccrequest_ul Lib "OUR_MIFARE.dll" (ByVal serial As Long) As Byte

输入

1、serial:只需指向一个至少已分配了7个char空间的可写数组 unsigned char *指针,serial的下标由0开始。

返回

返回unsigned char值,并将piccdata数组内的数据写入卡内。

0

操作成功。

8

寻卡错误,根本就没有卡在感应区,*serial无效。

23

没有连上USB 读写器

其他

见函数返回代码表:

读取NTAG2x卡内4个连续页

函数名:piccrequest_ul

功能

读取Ntag2x卡4个连续页数据,Ntag2x卡0、1、2、3前面4个页保存了UID序列号、制造商信息、卡类型及容量等信息,不需要认证卡密码都可以读出,页4开始的用户数据页如果开启了读密码保护后不能用此函数读取。

VB声明

Declare Function piccread_ul Lib "OUR_MIFARE.dll" (ByVal area As Byte, ByVal piccdata As Long) As Byte

输入

1、 area:要读取的页起始地址,

如果area取值为0、1、2、3,都表示读0-3页数据,

当area取值大于3时卡片如设置了读密码保护此函数无效;卡未启用读密码保护将读取起始页地址为area的连续四个页数据。

2、 *piccdata是指向下标个数不小于16的数组,作为返回16个字节的卡数据的缓存。

返回

返回unsigned char值,并将piccdata数组内的数据写入卡内。

0

操作成功。

8

寻卡错误,根本就没有卡在感应区,*serial无效。

13

读卡失败,请先执行读卡序列号的piccrequest_ul,或卡片已设为读密码保护,请使用piccreadex_ntag读取。

23

没有连上USB 读写器

其他

见函数返回代码表:

写NTAG2x卡1个页

函数名:piccwrite_ul

功能

写Ntag2x卡用户数据页的指定页,Ntag2x卡0、1、2、3前面4个页保存了UID序列号、制造商信息、卡类型及容量等信息不可改写,页4开始的用户数据页如果开启了密码保护后不能用此函数写。

VB声明

Declare Function piccwrite_ul Lib "OUR_MIFARE.dll" (ByVal area As Byte, ByVal piccdata As Long) As Byte

输入

1、 area:要写页的起始地址,取值大于3。

2、*piccdata是指向下标个数为4的数组,作为4个字节的写卡缓存。

返回

返回unsigned char值,并将piccdata数组内的数据写入卡内。

0

操作成功。

8

寻卡错误,根本就没有卡在感应区,*serial无效。

14

写卡失败,请先执行读卡序列号的piccrequest_ul;或可能需要验证密码,请用piccwriteex_ntag函数写卡。

20

写卡失败,页已锁定不可写

23

没有连上USB 读写器

其他

见函数返回代码表:

让读写器发出声音

函数名:pcdbeep

功能

让读写器发出声响。(暂不开放对指示灯的控制,如果有特殊要求请致电本公司)

原始声明

unsigned char __stdcall pcdbeep(unsigned long xms)

输入

xms为响声的时间长度,单位为2毫秒

返回

返回unsigned char值。

0

操作成功。

22

动态库或驱动程序异常,解决方法是退出程序,拔出IC卡读写器,重装驱动程序再插上IC卡读写器重试,或者重新拷贝动态库OUR_MIFARE.dll到正确的位置。

24

操作超时。可能是电脑中毒导致USB帧传递调度缓慢,或者是IC卡读写器有问题,解决方法是重启电脑或重新拔插IC卡读写器。

27

USB传输不稳定导致传输的字符不全。不需理会这个错误,因为基本上是不会出现这个错误的。

28

USB传输不稳定导致CRC校验错。不需理会这个错误,因为基本上是不会出现这个错误的。

其他

未知错误

例子及注释

请要本公司网站下载各种开发工具的例子源代码,本函数的声明和输入参数格式可以直接套用,谢谢使用

读取读写器的设备编号

函数名:pcdgetdevicenumber

功能

返回本读写器独一无二的设备编号,此编号固化在芯片中,并通过加密的方式传输。根据此编号可在本公司网站查询是否真正为本公司的质保产品。因为可以返回全球唯一的设备编号,所以只需增加少量的算法,本读写器也可作软件加密狗用。

原始声明

unsigned char __stdcall pcdgetdevicenumber(unsigned char *devicenumber)

输入

devicenumber只需指向一个至少已分配了4个char空间的可写数组 unsigned char *指针, serial的下标由0开始。因为此数组仅用于返回设备编号。

返回

返回unsigned char值,并将寻到的卡的序列号传值到*serial数组。

0

操作成功,* devicenumber数组中的数据有效。

22

动态库或驱动程序异常,解决方法是退出程序,拔出IC卡读写器,重装驱动程序再插上IC卡读写器重试,或者重新拷贝动态库OUR_MIFARE.dll到正确的位置。

24

操作超时。可能是电脑中毒导致USB帧传递调度缓慢,或者是IC卡读写器有问题,解决方法是重启电脑或重新拔插IC卡读写器。

28

USB传输不稳定导致CRC校验错。不需理会这个错误,因为基本上是不会出现这个错误的。

其他

未知错误

例子及注释

请要本公司网站下载各种开发工具的例子源代码,本函数的声明和输入参数格式可以直接套用,谢谢使用

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vx_13822155058

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值