15693电子标签读写函数说明 支持安卓调用
QQ:954486673
微信:13822155058
淘宝:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-17663462238.11.4b5724dayD5DfY&id=546736350393
- 动态库简介
动态库OUR_MIFARE.dll用VC开发,编译成32位Release实体或64位Release实体,适用于WIN2000、XP、2003、win7的32或64位、win8编译和运行环境。本文档下面的源代码例子是C++的调用格式。
本动态库是本公司USB接口IC卡读写器的配套文件,必须和读写器一起使用。
OUR_MIFARE.dll支持在软件运行中可以随时更换USB接口。本公司免驱型和有驱型读写器使用的OUR_MIFARE.dll文件不同,但函数的调用一样,如果客户程序开发好了,免驱型和有驱型互换时,只需更换对应的OUR_MIFARE.dll。
。
推荐使用动态调用的方法使用本动态库。
15693卡内部存储结构知识:
本读写器支持ISO15693 系列卡。由于各个厂商生产的15693卡的容量及功能各有一些不同,其价格及供货情况也会不一样,故用户在选用某一厂商的卡片时,应综合考虑自己的要求进行选择。目前较为多的卡片为:PHILIPS公司生产的ICODE SL20系列卡片,TI公司生产的TAG-IT卡片以及INFINEON公司生产的卡片。我公司15693读写器均支持以上卡片的所有操作。相对于各厂家的15693卡,调用函数的输入参数中会有细微的差别,开发中稍加了解即可。各卡片的特别命令,都有相对应的函数。以方便用户的使用。
15693卡没有密码认证这一功能,全部数据都可以读取。但用户仍可以用UID来加上算法来加密各块数据,以确保在非法改动各块数据时将被发现。
标签内最多可以有256个数据块,每个数据块最大可以有32字节。数据块的内容可以锁定以防止修改。
15693卡的内部结构:
数据空间 |
长度 |
锁定位 |
块1 |
4个字节 |
|
块2 |
4个字节 |
|
. |
4个字节 |
|
. |
4个字节 |
|
. |
4个字节 |
|
块64 |
4个字节 |
|
UID |
8个字节 |
厂商出厂时已锁定 |
DSFID |
1字节 |
|
AFI |
1字节 |
|
IC版本 |
3个字节 |
厂商出厂时已锁定 |
说明:
1、 UID: 全球唯一标识符,每张卡都不一样,8个字节,读写器可以用UID号来操作指定的卡。UID[0]..UID[7],其中UID[7]为E0是固定的,UID[6]为卡制造商编码(如NXP公司为04,TI公司为07,上海贝岭为23),UID[5]为产品类别代码,比如ICODE SL2 ICS20是01H,Tag-it HF-I Plus Chip为80H,Tag-it HF-I Plus Inlay为00H。UID[4]..UID[0]才是真正卡号,是制造商内部分配的号码。
2、 AFI:应用标识,可以标识一部分卡,读写器可以用AFI来选择某一部分卡。
国标中关于AFI的规定如下:
3、 DSFID:卡数据存储格式标识。
卡片的四种状态:
状态 |
说明 |
Power off |
在标签未进入到有效磁场区域时标签处于Power off状态 |
Ready |
被激活后选择表示未设立时,处理任何请求 |
Quiet |
不处理任何标签搜录指令,仅可接受直接寻址的命令 |
Select |
仅响应选择标识符设置的请求 |
关于函数调用中flags值的说明
说明:VICC(vicinity integrated circuit card)表示卡,VCD (vicinity coupling device)读写卡设备。
flags参数典型选值及说明
值(16进制) |
说明 |
值(16进制) |
说明 |
36 |
操作单张卡,需要AFI参数,低数据速率 |
02 |
不需UID,(任何select状态的卡),低数据速率 |
16 |
操作多张卡,需要AFI参数,低数据速率 |
12或32 |
不需UID,仅select状态的卡,低数据速率 |
26 |
操作单张卡, (任何AFI的卡),低数据速率 |
62 |
写卡时卡必须等待卡写成功后才返回成功,需要指定UID,(任何select状态的卡),低数据速率 |
06 |
操作单张卡, (任何AFI的卡),低数据速率 |
||
22 |
写卡时卡接到的指令时马上返回成功,需要指定UID,(任何select状态的卡),低数据速率 |
我公司增加了一条通用的可应用卡片供应商定制功能函数,同时也提供直接从读卡器本上开发出来配合卡片供应商特殊定制功能的服务。
二、易用函数
大部份软件、一卡通公司,只要使用以下二个函数完全可以达到软件需求,比如读取信息、写入信息等等。
轻松读卡:
函数名:iso15693readex
功能 |
超强读卡,使用函数可以一次性读出最多12个块的信息,并且返回卡序列号。 |
|
原始声明 |
unsigned char __stdcall iso15693readex(unsigned char ctrlword, unsigned char afi, unsigned char startblock,unsigned char blocknum, unsigned char *uid, unsigned char *revbuf) |
|
输入 |
1、ctrlword读卡的控制字,ctrlword是一个字节,相当于八个位,每个位只有0和1两种状态: 推荐使用方法如下: //先定义以下常量 #define NEEDUID 0x08 #define #define STAYQUIET 0x20 举例: //以下控制字含义:仅读指定UID号的卡,读成功后静止该卡 ctrlword = NEEDUID + STAYQUIET //以下控制字含义:可操作任何卡,操作成功后不静止该卡 ctrlword = 0 2、afi一般只需置为0。 3、startblock起始块。 4、blocknum 本次操作的块数量。 5、* uid 返回的卡序列号数组。 6、* revbuf 是指向字节数大于49的字节数组,用于存放块的数据,其中第0个字节为本次返回的有效字节数,其余为数据 |
|
返回 |
返回unsigned char值,并将卡本块的数据传值到* uid及*revbuf指向的数组中。 |
|
返 回 值 说 明 |
0 |
操作成功,读出的数据有效。 |
8 |
寻卡错误,根本就没有卡在感应区,*serial无效。 |
|
22 |
动态库或驱动程序异常,解决方法是退出程序,拔出IC卡读写器,重装驱动程序再插上IC卡读写器重试,或者重新拷贝动态库OUR_MIFARE.dll到正确的位置。 |
|
24 |
操作超时。可能是电脑中毒导致USB帧传递调度缓慢,或者是IC卡读写器有问题,解决方法是重启电脑或重新拔插IC卡读写器。 |
|
27 |
USB传输不稳定导致传输的字符不全。不需理会这个错误,因为基本上是不会出现这个错误的。 |
|
28 |
USB传输不稳定导致CRC校验错。不需理会这个错误,因为基本上是不会出现这个错误的。 |
|
其他 |
未知错误 |
|
例子及注释 |
请要本公司网站下载各种开发工具的例子源代码,本函数的声明和输入参数格式可以直接套用,谢谢使用 |
轻松写卡:
函数名:Piccwriteex15693
功能 |
超强写卡,使用些函数可以一次性写整个区的第0块、第1块、第2块信息。 |
|
原始声明 |
unsigned char __stdcall piccwriteex15693(unsigned char ctrlword, unsigned char afi, unsigned char startblock,unsigned char blocknum, unsigned char *uid, unsigned char *writebuf) |
|
输入 |
1、ctrlword读卡的控制字,ctrlword是一个字节,相当于八个位,每个位只有0和1两种状态: 推荐使用方法如下: //先定义以下常量 #define NEEDUID 0x08 #define STAYQUIET 0x20 举例: //以下控制字含义:仅读指定UID号的卡,读成功后静止该卡 Ctrlword = NEEDUID + STAYQUIET //以下控制字含义:可操作任何卡,操作成功后不静止该卡 Ctrlword = 0 2、afi一般只需置为0。 3、startblock起始块。 4、blocknum 本次操作的块数量。 5、* uid 返回的卡序列号数组。 6、* revbuf 是指向字节数大于49的字节数组,用于存放块的数据,其中第0个字节为本次写入的有效字节数,其余为数据 |
|
返回 |
返回unsigned char值,并将卡本块的数据传值到*uid指向的数组中。 |
|
返 回 值 说 明 |
0 |
操作成功,写卡数据有效。 |
8 |
寻卡错误,根本就没有卡在感应区,*serial无效。 |
|
21 |
本函数需要引用的动态库ICUSB.DLL不在当前目录下。 |
|
22 |
动态库或驱动程序异常,解决方法是退出程序,拔出IC卡读写器,重装驱动程序再插上IC卡读写器重试,或者重新拷贝动态库OUR_MIFARE.dll到正确的位置。 |
|
24 |
操作超时。可能是电脑中毒导致USB帧传递调度缓慢,或者是IC卡读写器有问题,解决方法是重启电脑或重新拔插IC卡读写器。 |
|
27 |
USB传输不稳定导致传输的字符不全。不需理会这个错误,因为基本上是不会出现这个错误的。 |
|
28 |
USB传输不稳定导致CRC校验错。不需理会这个错误,因为基本上是不会出现这个错误的。 |
|
其他 |
未知错误 |
|
例子及注释 |
请要本公司网站下载各种开发工具的例子源代码,本函数的声明和输入参数格式可以直接套用,谢谢使用 |
让读写器发出声音
函数名:pcdbeep
功能 |
让读写器发出声响。(暂不开放对指示灯的控制,如果有特殊要求请致电本公司) |
|
原始声明 |
unsigned char __stdcall pcdbeep(unsigned long xms) |
|
输入 |
xms为响声的时间长度,单位为2毫秒 |
|
返回 |
返回unsigned char值。 |
|
返 回 值 说 明 |
0 |
操作成功,。 |
21 |
本函数需要引用的动态库ICUSB.DLL不在当前目录下。 |
|
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数组中的数据有效。 |
12 |
读取设备编号失败。 |
|
9 |
有多张卡在感应区,寻卡过程中防冲突失败,*serial无效。 |
|
10 |
该卡可能已被休眠,无法选中,但卡序列号已被读出,*serial数组中的数据有效。 |
|
21 |
本函数需要引用的动态库ICUSB.DLL不在当前目录下。 |
|
22 |
动态库或驱动程序异常,解决方法是退出程序,拔出IC卡读写器,重装驱动程序再插上IC卡读写器重试,或者重新拷贝动态库OUR_MIFARE.dll到正确的位置。 |
|
24 |
操作超时。可能是电脑中毒导致USB帧传递调度缓慢,或者是IC卡读写器有问题,解决方法是重启电脑或重新拔插IC卡读写器。 |
|
28 |
USB传输不稳定导致CRC校验错。不需理会这个错误,因为基本上是不会出现这个错误的。 |
|
其他 |
未知错误 |
|
例子及注释 |
请要本公司网站下载各种开发工具的例子源代码,本函数的声明和输入参数格式可以直接套用,谢谢使用 |
三、安卓系统上使用
1、将我们提供的开发包里的文件夹及OURMIFARE_V1.aar,一起复制你的项目APP-->libs目录下,请下载: 15693-02 USB免驱型读写器安卓开发包.rar ;
2、修改APP-->src下的build.gradle文件,在buildTypes{}的后面,加入
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
同时在dependencies {}中加入
implementation fileTree(include: ['*.jar','*.aar'], dir: 'libs')
3、加入NDK工具包。
4、java的源文件中加入import com.reader.ourmifare;,就可以调用我们在AAR包里的函数了。
15693电子标签读写函数说明 支持安卓调用相关推荐
- android免root读写u盘最新方法,支持安卓Q+
android读写u盘支持安卓10以上的最新方法 本人是在写一个app需要读取u盘文件列表,网上找了好多方法,要不就是没有media权限,要不就是收不到广播,全部用不了,就这样搁置了一段时间终于又找到 ...
- Linux SPI驱动学习——调用SPI读写函数
Linux SPI驱动学习--调用SPI读写函数 博客说明 开发环境 1. 基于W25Q16型FLASH来看SPI的读写函数 附录 博客说明 撰写日期 2019.10.25 完稿日期 未完稿 最近维护 ...
- 通用GPIO驱动和apk(含jni),支持所有GPIO,支持LED控制,支持友善6410/210开发板,支持安卓2.3/4.0,内核2.6/3.0
转自:http://www.arm9home.net/read.php?tid-27259.html GPIO Driver and apk(include jni) support All GPIO ...
- Python基本语法_文件操作_读写函数详解
目录 目录 软件环境 file文件对象 open文件操作 读文件 read读取所有文件内容 readline获取一行内容 readlines读取所有文件内容 readreadlinereadlines ...
- Linux驱动总结3- unlocked_ioctl和堵塞(waitqueue)读写函数的实现 【转】
转自:http://blog.chinaunix.net/uid-20937170-id-3033633.html 学习了驱动程序的设计,感觉在学习驱动的同时学习linux内核,也是很不错的过程哦,做 ...
- 安卓调用系统相机录像并上传到后端服务器
安卓调用系统相机录像并上传到后端服务器 写在前面 一.录像上传的思路 二.添加相关权限 三.按钮设置监听,调用相机录像并回调 1.按钮设置监听: 2.调用代码 3.回调代码(划重点奥) 最后的最后: ...
- uni app实现WIFI功能(只支持安卓APP)
uni app实现WIFI功能 一.前言 二.使用 uni-WIFI 三.使用h5+ api 一.前言 最近需要在uniapp上实现WiFi功能,将个人的研究结果记录如下(都只支持安卓APP) 使用 ...
- 作业函数的定义与调用
作业函数的定义与调用 在 OneFlow 中,将训练.预测任务封装在一个函数中,统称为作业函数(job function),作业函数联系用户的业务逻辑与 OneFlow 管理的计算资源. 在 OneF ...
- 教你如何运用python实现简单文件读写函数
这篇文章主要为大家详细介绍了python实现简单文件读写函数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 python作为脚本性语言,加上它的简便易用性.会经常当作脚 ...
最新文章
- 搞 Java 怎么达到年薪 50w ?我的一些想法和经历
- Composer PHP依赖管理
- 补8-5日复习内容 STL 标准模板库的容器
- linux python pip卸载,Python pip的安装及卸载
- Kaggle知识点:数据分析EDA
- pytorh 激活函数,循环神经网络层,损失函数和优化器
- [luoguP4705]玩游戏
- 印度程序员为什么牛掰之ISAS.激发人的兴趣.探索精神.
- 使用SAP WebIDE开发SAP Fiori Worklist应用消费OData服务
- 业界资讯:adobe creative suite 5.5你准备好了吗?
- 【bzoj4940】这是我自己的发明
- pixel 1 欧版电信破解4G,安卓P亲测可用(打电话+4G上网)
- Linux系统内核升级
- 解决: 0x803f7001 在运行Microsoft Windows 非核心版本的计算机上,运行“ slui.exe 0x2a 0x803f7001 “以显示错误文本,激活win10步骤流程。
- laydate限定某天不可选
- 一剪梅·红藕香残玉簟秋
- ECMAScript标准简介
- 五寸照片尺寸像素 5寸的照片是几比几的
- 解决DELL服务器识别不到硬盘的问题
- JAVA中设置drwxr_x___权限_linux命令中chmod 777 以及drwxr-xr-x分别代表什么意思
热门文章
- SolidWorks装配体中零件的贴图无法显示的解决方法
- 数据挖掘|关联规则Apriori算法详解及其在中医医案中的应用
- android 关机闹钟 实现,安卓关机闹钟:你所不知道的关机闹钟的背后
- 微服务技术选型【转】
- 微信小程序获取手机号码
- MYSQL Workbench server status stopped 如何解决?求解
- “星光级”大势已成 “星光”技术哪家强?
- C#人民币金额大小写转换
- WIN10更新失败,win10安装组件失败解决方案
- 10本区块链热门图书(应用开发、智能合约等)免费送!