随着Android系统的设备越来越多,在Andriod设备上使用UHF读写器变得越来越广泛。为了将UHF读写器应用android设备上,友我科技独立研发了UHF读写器的android开发包,使用此开发包,工程师只需在工程中导入jar包,使用java语言就可以轻松的开发出Android下的UHF读写器应用APP。
友我科技UHF读写器Android开发包相关信息:
项目 信息
支持的Android系统 4.0及以上版本
读卡器接口 USB HID(需OTG数据线)
jar包及下载 yoworfidreaderuhf.jar
支持的UHF读写器 YW-602H(读卡距离小于1米,并可自由调节读卡距离)
UHF读写器Android开发指南
在所有API接口中有3种返回值,说明如下:
第一种:void, 无任何返回值
第二种:int,返回整形,>=0为成功,<0为失败
第三种:byte[], byte数组, 如果为null则为失败,只要不为null,就是执行成功
首先在工程中导入yoworfidreaderuhf.jar接口包,同时在在order and Export中选中yoworfidreaderuhf.jar 包,这样可以随着你的应用程序一起发布。
然后再自己的工程中创建usbreaderuhf的object,如下所示:
public usbreaderuhf rfidreader;
rfidreader = new usbreaderuhf();
只要rfidreader!=null,就可以使用了。
类usbreader的属性:
属性名 类型(类名) 名称 备注
ReaderHardware readerhardware UHF读卡器硬件操作类 可以操作读卡器的蜂鸣器,LED灯等
G2 G2 ISO18000-6C,G2类型的标签操作类 操作ISO18000-6C,G2标签
类usbreaderuhf的方法:
1. void TryUSB(Context context)
TryUSB方法的作用是尝试连接USB设备,在android系统下,连接USB设备会出现权限的提示窗口,需要此时点击是按钮。
rfidreader.TryUSB(this);
2. boolean Initial(Context context)
Initial方法的作用是初始化 UHF读写器,只有经过初始化后才能对读卡器进行其他操作。初始化成功返回true,失败返回false。
rfidreader.Initial(this);
usbreaderuhf类有多个public的属性,这些属性分别如下:
1、ReaderHardware,类名:readerhardware,功能:管理读卡器硬件和切换卡片类型
类readerhardware的方法:
1.1 int YW_GetLibVersion()
YW_GetLIBVersion方法获取jar库的版本号。如下代码所示:
int Ver = rfidreader.ReaderHardware.YW_GetLibVersion();
1.2 int YW_GetReaderVersion()
YW_GetReaderVersion方法获取UHF读写器的版本号。如下代码所示:
int Ver = rfidreader.ReaderHardware.YW_GetReaderVersion();
1.3 byte[] YW_GetReaderSerial()
YW_GetReaderSerial方法获取UHF读写器的序列号。如下代码所示:
byte[] SerialNo = rfidreader.ReaderHardware.YW_GetReaderSerial();
1.4 byte[] YW_GetReaderNo()
YW_GetReaderSerial方法获取UHF读写器型号。如下代码所示:
byte[] ModelNo = rfidreader.ReaderHardware.YW_GetReaderNo();
1.5 int YW_Buzzer(int Time_ON, int Time_OFF, int Cycle)
YW_Buzzer方法控制UHF读写器的蜂鸣器。参数如下:
Time_ON: 蜂鸣器鸣叫的时间(100ms单位)
Time_OFF: 蜂鸣器不响的时间(100ms单位)
Cycle:上述循环的次数
rfidreader.ReaderHardware.YW_Buzzer(5,5,1);
1.6 int YW_Led(int LEDIndex, int Time_ON, int Time_OFF, int Cycle, int LedIndexOn)
YW_Led方法控制UHF读写器的LED灯。参数如下:
LEDIndex:LED灯的序号
Time_ON: 蜂鸣器鸣叫的时间(100ms单位)
Time_OFF: 蜂鸣器不响的时间(100ms单位)
Cycle:上述循环的次数
LedIndexOn:最后灯亮的LED序号
rfidreader.ReaderHardware.YW_Led(1,5,5,1,1);
1.7 int YW_SetPower(int Power)
YW_SetPower方法设置读卡器的功率,功率范围从1200到2000可以设置,理论上功率越大,读卡距离越远.读卡器默认功率为1450.
rfidreader.ReaderHardware.YW_SetPower (1450);
1.8 int YW_GetPower()
YW_GetPower获取读卡器当前工作的功率.
int Power=rfidreader.ReaderHardware.YW_GetPower();
1.9 int YW_SetInventoryThreshold(int Threshold)
YW_ SetInventoryThreshold方法设置读卡器的寻卡阈值,值得范围在190到210之间,值越大读卡距离越小,对于功率一定, 卡相同的情况下,可以设置此值来控制读卡距离.
rfidreader.ReaderHardware.YW_ SetInventoryThreshold (200);
1.10 int YW_GetInventoryThreshold ()
YW_ GetInventoryThreshold获取读卡器当前工作的寻卡阈值.
int Power=rfidreader.ReaderHardware.YW_GetInventoryThreshold ();
2、G2,类名:G2,功能:操作ISO18000-6C,G2等UHF标签
类G2的属性:
属性名 类型(类名) 名称 备注
MEMBANK_RESERVED byte 保留区 常量
MEMBANK_EPC byte EPC区 常量
MEMBANK_TID byte TID区 常量
MEMBANK_USER byte 用户区 常量
类G2的方法:
2.1 byte[] YW_G2_Inventory()
UHF电子标签盘库寻卡,读到卡返回EPC,没有读到卡返回null.每次返回一张卡的EPC, 对于多张卡, 可以多次调用.
byte[] EPC = rfidreader.G2.YW_G2_Inventory();
if(EPC==null)return;
2.2 byte[] YW_G2_Read(byte[] EPC, byte MemType, byte StartPos, byte ReadLen,int Password)
读UHF电子标签的内存区,参数如下:
byte[] EPC: 输入,要读的UHF标签的EPC.
byte MemType: 内存类型,用户区,EPC区,TID区,保留区中的一个.
byte StartPos:起始地址,字节为单位,但必须是2的倍数.
byte ReadLen:要读的字节数,必须是2的倍数.
int Password: 读写的密码,默认为0.
byte[] Data= rfidreader.G2. YW_G2_Read (EPC, rfidreader.G2. MEMBANK_USER,0,10,0);
if(Data==null)return
2.3 int YW_G2_Write(byte[] EPC,byte MemType, byte StartPos,int Password,byte[] G2Data)
写UHF电子标签的内存区,参数如下:
byte[] EPC: 输入,要写的UHF标签的EPC.
byte MemType: 内存类型,用户区,EPC区,TID区,保留区中的一个.
byte StartPos:起始地址,字节为单位,但必须是2的倍数.
int Password: 读写的密码,默认为0.
byte[] G2Data: 要写得数据数组,数组长度必须是2的倍数.
byte[] Data =new byte[10];
…
int rt= rfidreader.G2. YW_G2_Write(EPC, rfidreader.G2. MEMBANK_USER,0,0, Data);
if(rt<=0)return
2.4 int YW_G2_WriteEPC(byte[] EPC, int Password)
写UHF电子标签的EPC代码,相当于修改卡号,每次只能写一张标签,参数如下:
byte[] EPC:新的EPC代码,数组长度必须是2的倍数.
int Password: 读写的密码,默认为0.
byte[] NewEPC=new byte[12];
…
int rt= rfidreader.G2.YW_G2_WriteEPC(NewEPC, 0);
if(rt<=0)return
2.5 int YW_G2_KillTag(byte[] EPC,int Password)
灭活一张电子标签,灭活后,标签将不可用,如果KillPassword=0,则不能灭活,即kill失败. 参数如下:
byte[] EPC:要操作的电子标签的EPC.
int Password: KillPassword的密码,当为0,则不能灭活.
int KillPassword=5230;
int rt= rfidreader.G2. YW_G2_KillTag (EPC, KillPassword);
if(rt<=0)return
2.6 int YW_G2_SetProtected(byte[] EPC,byte Protect, byte ProtectMode,int Password)
标签设置保护, 参数如下:
byte[] EPC:要操作的电子标签的EPC.
byte Protect:
0x00时,控制销毁密码读写保护设定。
0x01时,控制访问密码读写保护设定。
0x02时,控制EPC存储区读写保护设定。
0x03时,控制TID存储区读写保护设定。
0x04时,控制用户存储区读写保护设定。
byte ProtectMode:
当Protect为0x00或0x01,即当设置Kill密码区或访问密码区的时候,ProtectMode的值代表的意义如下:
0x00:设置为无保护下的可读可写
0x01:设置为永远可读可写
0x02:设置为带密码可读可写
0x03:设置为永远不可读不可写
当Protect为0x02、0x03、0x04的时候,即当设置EPC区、TID区及用户区的时候,ProtectMode的值代表的意义如下:
0x00:设置为无保护下的可写
0x01:设置为永远可写
0x02:设置为带密码可写
0x03:设置为永远不可写
int Password: 访问password的密码
int rt= rfidreader.G2. YW_G2_ SetProtected (EPC, 2,3,0);
if(rt<=0)return
2.7 int YW_G2_Earse(byte[] EPC,byte MemType, byte StartPos,byte Nums,int Password)
标签擦除某个内存数据,将所选择的内存数据全部设置为0.
byte[] EPC:要操作的电子标签的EPC.
byte MemType: 内存类型,用户区,EPC区,TID区,保留区中的一个.
byte StartPos:起始地址,字节为单位,但必须是2的倍数.
byte Nums:要擦除的字节数,必须是2的倍数.
int Password: 读写的密码,默认为0.
int rt= rfidreader.G2. YW_G2_ Earse (EPC, rfidreader.G2. MEMBANK_USER,0,10,0);
if(rt<=0)return
2.8 int YW_G2_SetReadProtectedWithEPC(byte[] EPC,int Password)
设置标签读保护.
byte[] EPC:要操作的电子标签的EPC.
int Password: 读写的密码,默认为0.
int rt= rfidreader.G2.SetReadProtectedWithEPC (EPC, 0);
if(rt<=0)return
2.9 int YW_G2_SetEASAlert(byte[] EPC,int Password, byte EAS)
设置标签EAS报警
byte[] EPC:要操作的电子标签的EPC.
int Password: 读写的密码,默认为0.
byte EAS: EAS值.
int rt= rfidreader.G2.SetEASAlert(EPC, 0,0x50);
if(rt<=0)return
2.10 byte[] YW_G2_TestEASAlert()
获取标签EAS报警
byte[] EAS= rfidreader.G2.GetEASAlert();
if(EAS==0)return
2.11 int YW_G2_LockUser(byte[] EPC,int Password, byte UserAddr)
锁定用户区内存
byte[] EPC:要操作的电子标签的EPC.
int Password: 读写的密码,默认为0.
byte UserAddr: 用户区地址.
int rt= rfidreader.G2.LockUser (EPC, 0,10);
if(rt<=0)return