欢迎使用友我科技RFID读写器云服务(HF和UHF)

支持IC卡读卡器在web中应用,兼容IE,Chrome,Firefox,Safari,Opera等浏览器

安卓(Android)开发指南 WEB开发指南 在线WEB例程目录


目录
简介
支持的浏览器和版本
WEB开发指南
类YOWORFIDReader的属性
类YOWORFIDReader的回调函数:onResult
类YOWORFIDReader的方法之高频IC卡部分
类YOWORFIDReader的方法之超高频IC卡(UHF)部分

为了在BS结构下使用RFID读写器和IC卡读卡器,友我科技提供了基于ocx技术的安装包,使大家可以在web页面调用和使用IC卡读卡器,但是ocx的局限就是只能在IE浏览器中使用。 为了突破这种局限,友我科技又发布了RFID读写器云服务,他不仅支持IE浏览器,也支持Firefox,Chrome,Safari,Opera等等主流的浏览器,让软件工程师的作品无需再注明只支持IE,极大的提高用户体验。 友我科技RFID读写器云服务是为RFID读写器和IC卡读卡器为在BS结构下,更方便更容易更稳定的嵌入到各种主流的浏览器中提供的的数据流服务。 RFID读写器云服务采用js脚本,无需ocx控件嵌入,通过异步回调的方式,就可以在web端实现IC卡的读写。
目前,RFID读写器云服务支持高频IC卡,例如M1系列卡片。也支持超高频RFID卡,如6C,G2卡

在WEB浏览器下,客户可以根据需要选择适合自己的IC卡读卡器解决方案,以下是ocx插件和RFID读写器云服务的比较和下载:

方案 OCX插件 RFID读写器云服务
支持的浏览器 IE IE,Chrome,Firefox,Safari,Opera
客户端是否安装 要安装控件 要安装本地云服务程序
下载地址 yw60x控件开发包 RFID读写器云服务web开发包
测试实例 控件实例 云服务web实例
支持的高频IC卡读卡器 YW-605HAYW-607 YW-605HAYW-607
获取高频IC卡读卡器样品 YW-605HAYW-607 YW-605HAYW-607
支持的超高频UHF读卡器   YW-602U
获取超高频UHF读卡器样品   支持web开发的YW-602U

 

友我科技rfid读写器云服务的优势:
1、该系统在单机,局域网,互联网都可以使用,只要客户端安装云服务程序就行。
2、客户端同时支持net frame3.5和net frame4.0及以上。
3、客户端兼容IE,Chrome,Firefox,Safari,Opeara及其相关内核的浏览器。
4、与网页编程语言无关,不管是asp,php,jsp,aspx,html,都支持。
5、客户端采用事件驱动(回调函数),无需占用界面线程的时间。
6、客户端支持多种IC卡读卡器,可以根需求据功能自由选择。
7、单独支持64位和128位的DES加解密服务。
8、支持64位或者128位的DES加解密读写数据块,流程更少,效率更高,数据更安全。 (仅YW-607读写器支持)
9、支持高频和超高频的IC卡读卡器有相对应的卡片。

各浏览器支持的版本如下:
google Chrome V4.0及以上
Firefox V4.0及以上
IE V10.0及以上
Opera V10.0及以上
Safari V5.0及以上

下载RFID读写器云服务开发版,当前版本V2.0.2.0,有提示安装界面,有进入开发指南

下载RFID读写器云服务终端版,当前版本V2.0.2.0,有安装界面,无开发内容

RFID读写器云服务支持的RFID读写器有YW-605HAYW-607,YW-602系列等

基于RFID读写器云服务的web开发指南                                           Web开发应用实例

首先包含js文件

<script language="javascript" src="http://127.0.0.1:8008/YOWOCloudRFIDReader.js"></script>

在自己的文件中引用类:YOWORFIDReader, 如下代码创建一个读卡器的object。

try
{
var rfidreader=YOWORFIDReader.createNew();
}
catch(e)
{
alert("创建友我科技RFID云服务连接失败,请先下载安装!");
top.location = "http://www.youwokeji.com.cn/CloudReader/YOWORFIDReaderCloudForWeb.exe";
}
if(!rfidreader.TryConnect())
{
alert("浏览器不支持,请更换浏览器后重试!");
}

然后就可以使用。

类YOWORFIDReader的属性:

属性名 类型 默认值 名称 备注
Connected bool false 是否连接云服务  
Version 字符串 “” 云服务版本 云服务的版本号,如“1.0.0.0”,此版本号可以通过回调函数取得
ReaderID 数字 1 读卡器ID 此参数在使用USB接口的读卡器时可以忽略,无须设置。
UID 数字 0 自己定义的序号 自定义序号会随着回调函数返回,即可以在回调函数中确定是在哪里调用函数的。但是前提是这个序号必须是唯一的。
RequestActive 数字 1

寻卡模式

0:寻所有的卡

1:寻激活的卡

 

所有的卡,包括了halt休眠的卡,激活的卡不含halt休眠的卡。
KeyMode 数字 0

密钥类型

0:A密钥

1:B密钥

 
KeyString 字符串 "FFFFFFFFFFFF" 密钥字符串

对于高频HF的卡片:如果是16进制字符串,必须是6字节12个16进制字符。如果是普通字符串可以随意长度,不足部分自动补0x00,超出部分自动截掉。

对于超高频UHF标签:4字节16进制密码或者数字密码。

KeyStringMode 数字 0

密钥字符串的格式

0:16进制字符串

1:普通字符串

 
Repeat 数字 0

重复执行标志

0:只执行一次

1:重复执行

重复执行得情况下,如果执行成功,通过回调函数返回结果,如果失败,则不返回任何结果。

只执行一次的情况下,不管成功还是失败都会通过回调函数返回结果。

BeepOnSuccess 数字 1 如果函数执行成功,蜂鸣器Beep次数  
BeepOnFail 数字 0 如果函数执行失败,蜂鸣器Beep次数  
HaltAfterSuccess 数字 0

如果函数执行成功,是否将卡休眠

0:不休眠

1:休眠

 
DesDir 数字 0

数据加密方向

0:不加密

1:加密

2:解密

 
DesMode 数字 0

加解密原数据处理方式:

0:原数据

1:对原数据取反

2:原数据+原数据取反

对于DesMode=2时,如果原数据为8字节,则处理后的数据为16字节。所以写块操作时,如果加密写块,同时DesMode=2,则块数据只能为8字节。
DesKey 字符串 ""

DES密钥,可以为16进制字符串或者普通字符串

DesKey的字节长度只能为8或者16,为8时为64位DES加解密,等于16字节时,为128位3DES加解密。
DesKeyMode 数字 0

DesKey密钥的格式:

0:16进制字符串

1:普通字符串

 

类YOWORFIDReader的回调函数:onResult

可以做如下调用:

rfidreader.onResult(function(resultdata)
{
}

参数resultdata是一个结构,结构类型如下:

FunctionID:数字,执行的函数编号,
Result:数字,函数执行后的返回值,小于0位失败,大于0为成功。
UID:数字,执行函数前,自定义的序号,
ReaderID:数字,读卡器的ID,
CardNo:字符串,所操作的卡的卡号,16进制正常顺序,
strData:字符串,执行函数根据函数参数返回的数据,
ValData:数字,执行函数根据函数参数返回数字结果

类YOWORFIDReader的方法之高频IC卡部分:

1、寻TypeA卡的卡号,包含M1卡

RequestTypeACardNo(FormatID, OrderID)

参数:FormatID,返回的卡号格式,0:16进制(8HEX),1:10进制(10DEC).
OrderID, 卡号的现实顺序,0:正常顺序,1:倒序

回调函数返回结果:

FunctionID=0,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:所操作的卡的卡号,16进制正常顺序,
strData:字符串,执行函数根据函数参数给定的格式的卡号,

2、寻二代证的卡号,不是证件号码 (YW-607)


RequestChinaIDCardNo()

参数:无

回调函数返回结果:

FunctionID=3,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:所操作的卡的卡号,16进制正常顺序,
strData:所操作的卡的卡号,16进制正常顺序,

 

3、寻15693卡的卡号(YW-607)

Request15693CardUID()

参数:无

回调函数返回结果:

FunctionID=2,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:所操作的卡的卡号,16进制正常顺序,
strData:所操作的卡的卡号,16进制正常顺序,

4、M1卡读块,支持将读取的数据进行DES或者3DES加或者解密后送回

M1ReadBlock(blockIndex, FormatID)

如果DesDir=0则直接读块,如果DesDir=1(YW-607)或者DesDir=2(YW-607),同时指定DES的密钥,则将数据加解密后返回
参数:blockIndex,块号,绝对地址,从0开始

FormatID,格式,0:16进制字符串返回,1:普通字符串返回。

回调函数返回结果:

FunctionID=5,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:所操作的卡的卡号,16进制正常顺序,
strData:根据参数返回的块数据,

 

5、M1卡写块,支持DES或者3DES加密后写块

M1WriteBlock(blockindex,blockdata,FormatID

如果DesDir=0则直接将数据写块,如果DesDir=1(YW-607)或者DesDir=2(YW-607),同时指定DES的密钥,则将数据加解密后写块
参数:blockIndex,块号,绝对地址,从0开始

blockdata:要写入的字符串,由于M1卡的每块为16字节,故blockdata最终转换的16进制不够16字节长度,后面将补0x00,如果超过16字节,将去掉多余的字节。

FormatID,格式,0:16进制字符串返回,1:普通字符串返回。

回调函数返回结果:

FunctionID=6,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:所操作的卡的卡号,16进制正常顺序,
strData:实际写入的数据的16进制字符串,

6、M1卡读扇区,支持将读取的数据进行DES或者3DES加或者解密后送回

M1ReadSector(sectorindex, FormatID)

如果DesDir=0则直接读扇区,如果DesDir=1(YW-607)或者DesDir=2(YW-607),同时指定DES的密钥,则将数据加解密后返回
参数:blockIndex,块号,绝对地址,从0开始

FormatID,格式,0:16进制字符串返回,1:普通字符串返回。

回调函数返回结果:

FunctionID=7,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:所操作的卡的卡号,16进制正常顺序,
strData:根据参数返回的扇区数据,

7、M1卡写扇区,支持DES或者3DES加密后写扇区

M1WriteSector(blockindex,blockdata,FormatID)

如果DesDir=0则直接将数据写扇区,如果DesDir=1(YW-607)或者DesDir=2(YW-607),同时指定DES的密钥,则将数据加解密后写扇区
参数:blockIndex,块号,绝对地址,从0开始

blockdata:要写入的字符串,由于M1卡的扇区有4块和16块,可用字节为48字节和240字节

故blockdata最终转换的16进制不够字节长度,后面将补0x00,如果超过字节长度,将去掉多余的字节。

FormatID,格式,0:16进制字符串返回,1:普通字符串返回。

回调函数返回结果:

FunctionID=8,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:所操作的卡的卡号,16进制正常顺序,
strData:实际写入的数据的16进制字符串,

8、M1卡初始化钱包


M1IntialValue(blockIndex,value)

参数:blockIndex,块号,绝对地址,从0开始

value:要初始化的值

回调函数返回结果:

FunctionID=9,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:所操作的卡的卡号,16进制正常顺序,
strData:要初始化的值,
ValData:初始化后的余额,

9、M1卡获取钱包余额

M1GetValue(blockIndex)

参数:blockIndex,块号,绝对地址,从0开始

回调函数返回结果:

FunctionID=10,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:所操作的卡的卡号,16进制正常顺序,
strData:钱包余额,
ValData:钱包余额,

 

10、M1卡钱包充值

M1IncreaseValue(blockIndex,value)

参数:blockIndex,块号,绝对地址,从0开始

value:要充值的值

回调函数返回结果:

FunctionID=11,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:所操作的卡的卡号,16进制正常顺序,
strData:要充值的值,
ValData:充值后的钱包余额,

11、M1卡钱包消费,即减值

M1DecreaseValue(blockIndex,value)

参数:blockIndex,块号,绝对地址,从0开始

value:要减值的值

回调函数返回结果:

FunctionID=12,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:所操作的卡的卡号,16进制正常顺序,
strData:要减值的值,
ValData:减值后的钱包余额,

 

12、蜂鸣器鸣叫

Beep(TimeOn,TimeOff,Times)

参数:TimeOn,鸣叫的时间(*100ms)

TimeOff,:不鸣叫的时间(*100ms)

Times,:循环的次数

注:蜂鸣器函数在类属性中可以配置每次执行后的动作,一般不需要单独调用。

回调函数返回结果:

FunctionID=13,
Result:数字,函数执行后的返回值,
UID:自定义的序号,

13、获取云服务的版本

Ver()

参数:无

注:在连接云服务时,自动调用了Ver()函数,中途可以通过Version属性获取或者在回调函数中读取。

回调函数返回结果:

FunctionID=14,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
strData:版本号,

 

14、断开云服务连接

Disconnect()

参数:无

注:断开云服务连接,一般在页面的unload中调用。

15、CPU卡复位

ACPUReset()

参数:无

回调函数返回结果:

FunctionID=17,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:所操作的卡的卡号,16进制正常顺序,
strData:复位后的返回的16进制字符串
ValData:无

16、CPU卡执行COS

CPUCOS(COSHexString)

参数:COSHexString:要执行的COS指令,16进制字符串。

回调函数返回结果:

FunctionID=19,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:无
strData:执行COS后的返回的16进制字符串
ValData:执行COS指令返回的状态,10进制显示,如:9000显示为36864

 

17、执行DES或者3DES加解密算法

Des(DesData, DesDataForamt)

DES加解密函数要配合属性DesDir,DesMode,DesKey,DesKeyMode等使用
参数:DesDatag:要加解密的数据。DesDataForamt:数据的格式,0十六进制字符串,1位普通字符串

回调函数返回结果:

FunctionID=22,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:无
strData:执行加解密后的16进制字符串
ValData:无

 

类YOWORFIDReader的方法之超高频IC卡(UHF)部分:

18、UHF读卡器寻卡,符合18000-6C,G2的卡和标签

G2_Inventory(isEPC)

G2_Inventory方法通过超高频读卡器YW-602U来寻卡,目前只支持单张卡片。
参数:isEPC:是否读取EPC,isEPC=1,返回卡片的EPC。isEPC=0返回卡片的TID

回调函数返回结果:

FunctionID=23,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:根据参数返回的EPC或者TID
strData:与CardNo相同
ValData:无

19、读取UHF标签的内存区域

G2_Read(memType,StartPos, ReadLength,FormatID)

G2_Read方法读取UHF标签的内存。
需要的属性:
KeyStringMode:表明KeyString的格式,0为16进制字符串, 1为数字字符串.
KeyString:密钥字符串. 
参数:memType:内存区域,0保留区,1EPC区,2TID区,3用户区
StartPos: 内存起始地址.(必须为偶数)
ReadLength:要读取的字节长度.(必须为偶数)
FormatID: 数据返回的格式,0为16进制字符串,1为普通字符串.

回调函数返回结果:

FunctionID=24,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:标签的EPC
strData:根据参数FormatID返回的16进制字符串或者普通字符串.
ValData:无

20、写UHF标签的内存区域

G2_Write(memType,StartPos,FormatID, Data)

G2_Write方法写入UHF标签的内存。
需要的属性:
KeyStringMode:表明KeyString的格式,0为16进制字符串, 1为数字字符串.
KeyString:密钥字符串. 
参数:memType:内存区域,0保留区,1EPC区,2TID区,3用户区
StartPos: 内存起始地址.(必须为偶数)
FormatID: 数据Data的格式,0为16进制字符串,1为普通字符串.
Data: 与formatID格式对应的字符串, 如果不够偶数字节,将后面自动补0x00.

回调函数返回结果:

FunctionID=25,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:标签的EPC
strData:实际写入的16进制字符串
ValData:无

21、改写UHF标签EPC

G2_WriteEPC(EPCData)

G2_WriteEPC方法改写UHF标签的EPC,EPC的字节长度必须是偶数,并且为16进制。
需要的属性:
KeyStringMode:表明KeyString的格式,0为16进制字符串, 1为数字字符串.
KeyString:密钥字符串. 
参数:EPCData: 新的EPC,16进制,偶数个字节,否则后面补0x00.

回调函数返回结果:

FunctionID=26,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:标签的EPC
strData:新的EPC字符串
ValData:无

22、销毁UHF标签

G2_KillTag()

G2_KillTag方法销毁当前的UHF标签.密码0不允许销毁.
需要的属性:
KeyStringMode:表明KeyString的格式,0为16进制字符串, 1为数字字符串.
KeyString:密钥字符串. 
无参数

回调函数返回结果:

FunctionID=27,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:标签的EPC
strData:无 
ValData:无

23、设置UHF标签内存保护

G2_SetProtected(ProtectByte, ProtectMode)

G2_SetProtected方法设置UHF标签的保护模式.
需要的属性:
KeyStringMode:表明KeyString的格式,0为16进制字符串, 1为数字字符串.
KeyString:密钥字符串. 
参数:ProtectByte:要设置保护的内容:
0x00 时,控制销毁密码读写保护设定。
0x01 时,控制访问密码读写保护设定。
0x02 时,控制EPC 存储区读写保护设定。
0x03 时,控制TID 存储区读写保护设定。
0x04 时,控制用户存储区读写保护设定。
ProtectMode可能值如下:
当ProtectByte 为0x00 或0x01,即当设置Kill 密码区或访问密码区的时候,ProtectMode 的值代表的意义如下:
0x00:设置为无保护下的可读可写
0x01:设置为永远可读可写
0x02:设置为带密码可读可写
0x03:设置为永远不可读不可写
当ProtectByte为0x02、0x03、0x04的时候,即当设置EPC 区、TID 区及用户区的时候,ProtectMode 的值代表的意 义如下:
0x00:设置为无保护下的可写
0x01:设置为永远可写
0x02:设置为带密码可写
0x03:设置为永远不可写

回调函数返回结果:

FunctionID=28,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:标签的EPC
strData:无
ValData:无

24、擦除UHF标签的内存区域

G2_Earse(memType,StartPos, EarseLength)

G2_Earse方法擦除UHF标签的内存。
需要的属性:
KeyStringMode:表明KeyString的格式,0为16进制字符串, 1为数字字符串.
KeyString:密钥字符串. 
参数:memType:内存区域,0保留区,1EPC区,2TID区,3用户区
StartPos: 内存起始地址.(必须为偶数)
EarseLength:要擦除的字节长度.(必须为偶数)

回调函数返回结果:

FunctionID=29,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:标签的EPC
strData:无.
ValData:无

25、设置UHF标签读保护

G2_SetReadProtected()

G2_SetReadProtected方法设置标签读保护。
需要的属性:
KeyStringMode:表明KeyString的格式,0为16进制字符串, 1为数字字符串.
KeyString:密钥字符串. 
无参数.

回调函数返回结果:

FunctionID=30,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:标签的EPC
strData:无.
ValData:无

26、解锁UHF标签读保护

G2_SetUnlockReadProtected()

G2_SetUnlockReadProtected方法解锁标签读保护。
需要的属性:
KeyStringMode:表明KeyString的格式,0为16进制字符串, 1为数字字符串.
KeyString:密钥字符串. 
无参数.

回调函数返回结果:

FunctionID=31,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:标签的EPC
strData:无.
ValData:无

27、设置UHF标签EAS报警

G2_SetEASAlert(EAS)

G2_SetEASAlert方法设置标签的EAS。
需要的属性:
KeyStringMode:表明KeyString的格式,0为16进制字符串, 1为数字字符串.
KeyString:密钥字符串. 
参数, EAS: EAS值,一个字节

回调函数返回结果:

FunctionID=32,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:标签的EPC
strData:无.
ValData:无

28、锁定UHF标签用户区

G2_LockUser(UserAddr)

G2_LockUser方法锁定用户内存。
需要的属性:
KeyStringMode:表明KeyString的格式,0为16进制字符串, 1为数字字符串.
KeyString:密钥字符串. 
参数, UserAddr: 用户内存地址值,一个字节

回调函数返回结果:

FunctionID=33,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:标签的EPC
strData:无.
ValData:无


1
RFID读写器产品手册下载
2
读写器开发SDK下载
3
点击联系友我科技
4
点击联系友我科技