产品名称 | StudyRfid |
文档版本 | RFID测试程序说明 V2.0 |
一个可以下载到华禹手持设备(P1300、P1220、P1500 系列)上的刷卡程序,用于测试华禹手持设备的刷卡功能,能够执行刷卡查询和消费功能。
下载 StudyRfid.jad 和 StudyRfid.jar 到华禹手持设备上,执行Java程序,可体验刷卡程序。
下面是 StudyRfid 程序的界面(从模拟器中抓取):
图1: |
图2: |
上图是从模拟器上抓取的程序运行图片,当打开之后会进入到图 1-1,点击后进入图 1-2。第一个选项为查询功能,第二个为消费功能。第三个是设置扣款金额。第四个是使用说明。
Java 本地接口(Java Native Interface (JNI))允许运行在Java虚拟机(Java Virtual Machine (JVM))上的代码调用本地程序和类库,或者被它们调用,这些程序和类库可以是其它语言编写的,比如C、C++或者汇编语言。当一个程序无法完全使用Java编写时,开发者可以通过JNI来编写本地方法。
基于华禹平台的手持 RFID 刷卡设备由三部分组成:
1. java 程序:演示程序是 RfidDemo 或者 studyRfid 。
2. 操作系统固件,按照设备型号可分为 P1300、P1220、P1500 等系列。
3. 单片机固件。
java 程序通过串口与单片机通信,并通过 gpio 控制单片机的电源。
读卡操作时,java 程序发送读卡命令,接收到单片机固件返回的卡信息,解析后显示。
写卡操作时,java 程序发送写卡命令,接收到单片机固件返回的成功或者失败信息后,显示结果。
打开串口前判定是否在手持机上使用,调用
System.getProperty("microedition.platform");
如果得到值为" Sun",判定其在模拟器上使用
s_commUrl = s_commUrlEmu;
当值不为" Sun",判定其在真机上使用
s_commUrl = s_commUrlDevice;
s_commUrlEmu与s_commUrlDevice赋值与说明:
s_commUrlDevice = "tckcomm:1;baudrate=115200;blocking=off;autocts=off;autorts=off";
s_commUrlEmu= "comm:COM3;baudrate=115200;blocking=off;autocts=off;autorts=off";
COM3 为实际使用的串口。
打开串口线程:
cc = (CommConnection) Connector.open(url);接收线程:
While(m_start) {
在华禹平台上,可能存在一个串口两种用途的情况。
例如,条码和 RFID 共用一个串口,模拟开关用于控制串口的实际用途。
P1300_SWITCH_PIN 为 P1300 平台上模拟开关的控制脚,
当该 GPIO 脚设置为 P1300_RFID_SWITCH 时,P1300 的串口与 RFID 单片机串口的接通。
P1300:gp.WriteIO(P1300_RFID_SWITCH, P1300_SWITCH_PIN);
P1500 平台:
P1500:gp.WriteIO(P1500_RFID_SWITCH, P1500_SWITCH_PIN);
P1220 平台:
P1220:gp.WriteIO(P1220_RFID_SWITCH, P1220_SWITCH_PIN);
02 | 前缀; |
30 34 | 表示长度为 4; |
43 52 | 表示命令为 CR;(ASCII) |
34 | 表示扇区为 4; |
30 | 表示块区为 0; |
30 30 30 30 | 校验和为 0x0000;(预留) |
03 | 后缀; |
命令更详细的格式,见华禹工控 RFID Demo 命令集用户手册 |
当读卡正确后返回:
02 32 34: | 表示长度为0x24 |
43 52: | 表示命令为CR |
34 30: | 扇区号为4,块号为0 |
30 30 30 30 30 30 30 30: | 0x00 0x00 0x00 0x00 | 表示卡号为0; |
30 30 30 30: | 0x00 0x00 | 表示金额为0; |
30 30 30 30: | 0x00 0x00 | 未用; |
30 30 30 30 30 30 30 30: | 0x00 0x00 0x00 0x00 | 未用; |
30 30 30 30 30 30 30 30: | 0x00 0x00 0x00 0x00 | 未用; |
30 30 30 30 03: |
当读卡出现错误时返回:
02 30 36 : | 表示长度为6;(含错误码和校验和的长度) |
43 52: | 表示命令为CR |
34 30: | 表示扇区为4,块号为0; |
30 35: | 错误码为5;表示读错误; |
30 30 30 30: | 校验码; |
03 | |
命令更详细的格式,见华禹工控 RFID Demo 命令集用户手册 |
02 32 34: | 表示长度为0x24 |
43 57: | 表示命令为CW |
34 30: | 扇区号为4,块号为0 |
30 30 30 30 30 30 30 30: | 0x00 0x00 0x00 0x00 | 表示卡号为0; |
30 30 30 30: | 0x00 0x00 | 表示金额为0; |
30 30 30 30: | 0x00 0x00 | 未用; |
30 30 30 30 30 30 30 31: | 0x00 0x00 0x00 0x00 | 未用; |
30 30 30 30 30 30 30 30: | 0x00 0x00 0x00 0x00 | 未用; |
以上为写入的16个字节的数据 | ||
30 30 30 30 03 | ||
命令更详细的格式,见《华禹工控 RFID Demo 命令集用户手册.pdf》 |
当写卡成功后返回:
02 30 36: | 表示长度为6;(含错误码和校验码) |
43 57: | 表示命令为CW |
34 30: | 扇区号为4,块号为0 |
30 30: | 错误码为0;表示写成功; |
30 30 30 30: | 校验码; |
03 |
当写卡失败后返回:
02 30 36: | 表示长度为6;(含错误码和校验码) |
43 57: | 表示命令为CW |
34 30: | 扇区号为4,块号为0 |
30 36: | 错误码为6;表示写错误 |
30 30 30 30: | 校验码 |
03 | |
命令更详细的格式,见华禹工控 RFID Demo 命令集用户手册 |
与2.4.6 相同
与2.4.7 相同
华禹工控资源:
1. 华禹工控 RFID Demo 命令集用户手册。购买信息:
1. 创易电子淘宝店编写者 | 日期 | 关键词 |
华禹工控 | 2010-06-04 | Rfid、J2ME、华禹手机模块、JNI |