产品名称 2DStudyBarcode
文档版本 二维条码测试程序

[J2ME]华禹工控二维条码测试程序设计说明

1 背景和功能

1.1. 条码测试程序的概念

一个可以下载到华禹手持设备(P1300、P1220、P1500系列)的Java应用程序,用于测试华禹手持设备的二维条码扫描功能。

1.2. 如何体验条码测试程序

下载 2DStudyBarcode.jad 和 2DStudyBarcode.jar 到华禹手持设备上,执行Java程序,可体验二维条码功能。

1.3. 条码测试程序界面

下面是2DStudyBarcode程序的界面(从模拟器中抓取):

图1:图2:

打开之后会进入到图1-1,点击进入测试后进入图1-2。
第一个选项为进入扫描界面,第二个是设置,第三个是使用说明。

2 设计思路

2.1. JNI 的概念

Java 本地接口(Java Native Interface (JNI))允许运行在Java 虚拟机(JVM)上的代码调用本地程序和类库,或者被它们调用,这些程序和类库可以是其它语言编写的,比如C、C++或者汇编语言。当一个程序无法完全使用 Java 编写时,开发者可以通过 JNI 来编写本地方法。

2.2. StudyBarcode中的包

2.2.1 com.mtk

com.mtk包中的Gpio.java中操作GPIO的方法为华禹提供的JNI方法。

2.2.2 com.huayu.gpio

com.huayu.gpio包中的GpioPort.java定义了华禹手持设备的GPIO控制引脚。
对 Gpio 操作更详细的介绍见华禹工控手持设备GPIO测试程序设计说明

2.2.3 其它

2.3条码程序工作原理

基于华禹平台的手持条码扫描由两部分组成:

1. java 程序:演示程序是2DStudyBarcode。
2. java 程序通过串口与条码头通信,并通过gpio 控制条码头的电源及条码头数据传输方式。
扫描条码时,java 程序将TRIG 引脚电平拉低,条码头开始扫描,扫描到条码信息后将 信息返回串口,串口接收信息解析后显示。
原理如下:

2.4扫描条码具体程序示例

2.4.1 打开串口

打开串口前判定是否在手持机上使用,调用
System.getProperty("microedition.platform");
如果得到值为" Sun",判定其在模拟器上使用
s_commUrl = s_commUrlEmu;
当值不为" Sun",判定其在真机上使用
s_commUrl = s_commUrlDevice;
s_commUrlEmus_commUrlDevice赋值与说明:
s_commUrlDevice = "tckcomm:1;baudrate=9600;blocking=off;autocts=off;autorts=off";
s_commUrlEmu= "comm:COM3;baudrate=9600;blocking=off;autocts=off;autorts=off";
COM3 为实际使用的串口。

查看实际使用的串口的方法: 打开我的电脑属性选项,然后点开设备管理器,可看见实际使用的串口。
图3:

图1-3 打开串口线程:

cc = (CommConnection) Connector.open(s_commUrl);
in = cc.openInputStream();
out = cc.openOutputStream();
m_start = true;
new readT().start();

CommConnection 打开手持机的串口,通过openInputStream 得到输入流。
openOutputStream 得到输出流,同时启动数据接收线程。

接收线程:

While(m_start) {
    int len = in.available();
    if(len != 0) {
        byte[] bData = new byte[len];
        int iRet = in.read(bData);
    }
    Thread.sleep(100);
}

2.4.2 打开模拟开关连接串口与条码头的串口

在华禹平台上,可能存在一个串口两种用途的情况。
例如,条码和 RFID 共用一个串口,模拟开关用于控制串口的实际用途。

P1220 平台:
P1220:HuayuNative.writeIO(ContentManager.P1220_SWITCH_PIN, ContentManager.P1220_BARCODE_SWITCH );

2.4.3 打开条码头的电源

P1220:HuayuNative.writeIO(ContentManager.P1220_BARCODE_POWER_PIN, ContentManager.P1220_BARCODE_POWER_ON);

2.4.4 设置CTS脚,让条码头处于等待接收串口数据状态

P1220:HuayuNative.writeIO(ContentManager.P1220_BARCODE_CTS, ContentManager.P1220_BARCODE_CTS_HIGH);

2.4.5 向条码头发送命令

HuayuNative.writeIO(ContentManager.P1220_BARCODE_TGIG, ContentManager.P1220_BARCODE_TGIG_OFF);
Thread.sleep(1);
HuayuNative.writeIO(ContentManager.P1220_BARCODE_TGIG, ContentManager.P1220_BARCODE_TGIG_ON);

2.4.6 接收数据并解析

串口接收到的数据即为条码信息,直接解析即可。

2.4.7 关闭电源

P1220:HuayuNative.writeIO(ContentManager.P1220_BARCODE_POWER_PIN, ContentManager.P1220_BARCODE_POWER_OFF);

2.4.8. 关闭串口

if(out != null) {
    out.close();
}
if(in != null) {
    in.close();
}
if(cc != null) {
    cc.close();
}

3 资源

华禹工控资源:
1. SE955 FINAL IG.pdf
2. 华禹工控手持设备 GPIO 测试程序设计说明
3. 二维条码测试程序源码下载:2DStudyBarcode

购买信息:
1. 创易电子淘宝店

编写者 日期 关键词
华禹工控 2010-07-28 2DBarcode、J2ME、华禹手机模块、JNI
302 Found

302 Found


nginx/1.8.0