Add D500 scanner SDK documentation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Misaka
2026-05-06 21:47:04 +08:00
parent 752bc404d3
commit 8fa02424a5
3 changed files with 1865 additions and 0 deletions

View File

@@ -0,0 +1,663 @@
# D500 Android SDK 使用说明书
> 江苏东大集成电路系统工程技术有限公司
> www.seuic.com
![SEUIC 东集 Logo 图片占位符]
## 修订记录
| 版本号 | 修订日期 | 修订内容 | 修订人员 |
| --- | --- | --- | --- |
| 0.0 | 2014/08/05 | 建立本文档 | 钱进 |
| 0.1 | 2014/08/05 | 加入 keypad、touch 接口的说明 | 张松 |
| 0.2 | 2014/08/08 | 更改文档模板,并按模板重写文档 | 徐良伟 |
| 1.0 | 2014/08/09 | 加入"系统包的使用",并按 touch 新接口修改文档 | 徐良伟 |
| 1.1 | 2014/09/02 | 加入 touch 新的接口说明 加入 misc 接口 | 魏启运 |
| 1.2 | 2015/04/29 | 在 misc 接口中增加启用/禁用状态栏下拉的接口,增加卸载/加载外置 SD 卡的接口 | 张松 |
| 1.3 | 2017/03/16 | 在 misc 接口中添加 Zigbee 及 Fingerprint 的访问接口 | 钱进 |
| 1.4 | 2017/03/29 | 更新 Zigbee 和 Fingerprint 接口 | 徐良伟 |
## 目录
- 概述
- 硬件平台
- 软件平台
- 适用对象
- 系统包的使用
- 触摸屏接口
- TouchService 类
- 键盘接口
- KeypadService 类
- Misc 接口
- Misc 类
- Zigbee 类
- Fingerprint 类
- Manager 类
---
# 概述
本文档介绍了 D500 上提供的设备相关的包的使用说明,以便帮助用户更好的使用终端产品提供的特殊功能。
## 硬件平台
SDK 适用于以下终端设备:
- D500
- D510
- D330S
具体使用范围在函数接口说明中指明,若无指明表示都支持。
## 软件平台
SDK 基于 Android 4.3 版本,支持 eclipse 开发工具。
## 适用对象
除了 Android 的标准功能外,希望用到设备提供的增值功能的开发人员。这部分增值功能包括一维扫描、二维扫描、键盘特殊设置、触摸特殊设置等实用功能。
## 系统包的使用
如果接口中标明是系统包,表明该包是内置到系统中的,无需将该包加入到 apk 中。下面以键盘接口为例,来说明如何在 eclipse 中使用系统包。
- 在工程目录下建一个 `libsref` 目录(目录名称可以任意指定),将 `keypad.jar` 拷贝到此目录下。
- 在 eclipse 中选中工程,在菜单中选择 Project → Properties → Java Build Path点击 **Add External JARS...** 按钮,选择刚才的 `keypad.jar`。这时可以在工程视图的 Referenced Libraries 下看到刚才我们引用的 `keypad.jar`,展开可以看到所有 `keypad.jar` 提供的包、类、函数、变量。
- `AndroidManifest.xml` 中使用 `uses-library` 用包名来标示 `keypad.jar` 是引用包。
```xml
<application
<uses-library
android:name="com.seuic.keypad" />
……
</application>
```
---
# 触摸屏接口
| 项目 | 内容 |
| --- | --- |
| 包名 | `com.seuic.touch` |
| 包文件 | `touch.jar` |
| 系统包 | 是 |
| 包含的类 | `TouchService` |
| 作用 | 提供触摸屏相关的控制接口 |
## TouchService 类
### 使用方法
```java
import com.seuic.touch.TouchService;
TouchService touch = TouchService.getInstance();
```
### 函数接口
| 函数 | 说明 |
| --- | --- |
| `getGloveMode` | 获取当前手套模式开关状态 |
| `setGloveMode` | 设置手套模式开关 |
| `getTouchEnabled` | 获取当前触屏使能状态 |
| `setTouchEnabled` | 设置触摸屏使能开关 |
| `getVirKeyDisabled` | 获取虚拟按键屏蔽状态(仅 D500 支持) |
| `setVirKeyDisabled` | 设置虚拟按键屏蔽状态(仅 D500 支持) |
#### 1. 获取当前手套模式开关状态
```java
int getGloveMode()
```
**参数:**
**返回值:** 返回手套模式状态,有以下几种:
| 状态 | 值 | 说明 |
| --- | --- | --- |
| `MODE_GLOVE_OFF` | 0 | 手套模式关闭 |
| `MODE_GLOVE_ON` | 1 | 手套模式打开 |
| | <0 | 触摸接口不正常,或该设备不支持手套模式设置 |
#### 2. 设置手套模式开关
```java
boolean setGloveMode(int mode)
```
**参数:**
- `mode`:手套模式状态,见 `getGloveMode()` 函数返回值的说明。
**返回值:** 返回 `true` 表示成功,`false` 表示失败。
#### 3. 获取当前触摸屏使能状态
```java
int getTouchEnable()
```
**参数:**
**返回值:** 返回触摸屏使能状态,有以下几种:
| 状态 | 值 | 说明 |
| --- | --- | --- |
| `TOUCH_ENABLED_OFF` | 0 | 触摸屏处于锁屏状态 |
| `TOUCH_ENABLED_ON` | 1 | 触摸屏处于正常使用状态 |
| | <0 | 触摸接口不正常,或该设备不支持触摸屏使能设置 |
#### 4. 设置触摸屏使能开关
```java
boolean setTouchEnabled(int enable, Context context)
```
**参数:**
- `enable`:触摸屏使能状态,见 `getTouchEnabled()` 函数返回值的说明。
- `context`:调用者的上下文,用于向系统广播锁屏通知,以便在通知栏显示当前锁屏状态。
**返回值:** 返回 `true` 表示成功,`false` 表示失败。
#### 5. 获取虚拟按键屏蔽状态
```java
int getVirKeyDisabled()
```
**参数:**
**返回值:** 返回虚拟按键屏蔽状态,有以下几种:
| 状态 | 值 | 说明 |
| --- | --- | --- |
| `VKEY1_DISABLE_MASK` | `1 << 0` | 虚拟键一被屏蔽 |
| `VKEY2_DISABLE_MASK` | `1 << 1` | 虚拟键二被屏蔽 |
| `VKEY3_DISABLE_MASK` | `1 << 2` | 虚拟键三键被屏蔽 |
| `VKEY_ALL_DISABLE_MASK` | `0x7` | 所有虚拟按键均屏蔽 |
| | 0 | 所有虚拟按键未被屏蔽 |
| | <0 | 触摸接口不正常,或设备不支持触摸屏设置 |
#### 6. 设置虚拟按键屏蔽状态
```java
boolean setVirKeyDisabled(int disableMask)
```
**参数:**
- `disableMask`:虚拟按键屏蔽状态,见 `getVirKeyDisabled()` 函数返回值的说明。
**返回值:** 返回 `true` 表示成功,`false` 表示失败。
---
# 键盘接口
| 项目 | 内容 |
| --- | --- |
| 包名 | `com.seuic.keypad` |
| 包文件 | `keypad.jar` |
| 系统包 | 是 |
| 包含的类 | `KeypadService` |
| 作用 | 提供键盘相关的控制接口 |
## KeypadService 类
### 使用方法
```java
import com.seuic.keypad.KeypadService;
KeypadService keypad = KeypadService.getInstance();
```
### 函数接口
| 函数 | 说明 |
| --- | --- |
| `getMode` | 获取键盘模式(仅 D500 支持) |
| `setMode` | 设置键盘模式(仅 D500 支持) |
#### 1. 获取键盘模式
```java
int getMode()
```
**参数:**
**返回值:** 返回键盘功能键模式,有以下几种:
| 状态 | 值 | 说明 |
| --- | --- | --- |
| `MODE_NORMAL` | 0 | 标准模式。根据当前 Num、Fn 的状态灯输出数字或功能键。 |
| `MODE_STICK_ONCE` | 1 | Fn 键只粘滞一次模式。当处于 Fn 状态时,按一下按键输出功能键,然后自动切换到 Num 模式。 |
| | <0 | 键盘接口不正常,或该设备不支持键盘模式设置 |
#### 2. 设置键盘模式
```java
boolean setMode(int mode)
```
**参数:**
- `mode`:键盘模式状态,见 `getMode()` 函数返回值的说明。
**返回值:** 返回 `true` 表示成功,`false` 表示失败。
---
# Misc 接口
| 项目 | 内容 |
| --- | --- |
| 包名 | `com.seuic.misc` |
| 包文件 | `misc.jar` |
| 系统包 | 是 |
| 包含的类 | `Misc` |
| 作用 | 提供系统其它接口 |
## Misc 类
### 使用方法
```java
import com.seuic.misc.Misc;
Misc misc = new Misc();
```
### 函数接口
| 函数 | 说明 |
| --- | --- |
| `getSN` | 获取设备 SN |
| `getStatusBarEnabled` | 获取系统状态栏是否允许下拉的状态 |
| `setStatusBarEnabled` | 设置系统状态栏是否允许下拉 |
| `getExtSDCardMounted` | 获取外置 SD 卡是否卸载 |
| `setExtSDCardMounted` | 设置外置 SD 卡卸载或加载 |
| `getCustomId` | 获取用户自定义序列号。仅支持 D700_V1.6.0 及之后版本D700C_V1.2.0 及之后版本D700P_V1.1.2 及之后版本。 |
#### 1. 获取设备 SN
```java
String getSN()
```
**参数:**
**返回值:** 返回厂家定义的 SN 号,有以下几种:
| 状态 | 值 | 说明 |
| --- | --- | --- |
| null | null | 获取 SN 失败 |
| String 类型 | String 类型 | 获取成功 |
#### 2. 获取系统状态栏是否允许下拉的状态
```java
int getStatusBarEnabled(Context context)
```
**参数:**
- `context`:上下文。
**返回值:** 返回状态栏是否允许下拉的状态,如下:
| 状态 | 值 | 说明 |
| --- | --- | --- |
| `STATUSBAR_DISABLED` | 0 | 系统状态栏不允许下拉。 |
| `STATUSBAR_ENABLED` | 1 | 系统状态栏允许下拉。 |
| | <0 | 接口不正常,或该设备不支持系统状态栏的设置。 |
#### 3. 设置系统状态栏是否允许下拉
```java
void setStatusBarEnabled(Context context, int enable)
```
**参数:**
- `context`:上下文。
- `enable`:状态栏是否允许下拉,取值见 `getStatusBarEnabled()` 返回值。
**返回值:**
#### 4. 获取外置 SD 卡是否卸载
```java
int getExtSDCardMounted(Context context)
```
**参数:**
- `context`:上下文。
**返回值:** 返回外置 SD 卡的状态,如下:
| 状态 | 值 | 说明 |
| --- | --- | --- |
| `EXT_SDCARD_UNMOUNTED` | 0 | 外置 SD 卡卸载。 |
| `EXT_SDCARD_MOUNTED` | 1 | 外置 SD 卡未卸载。 |
| | <0 | 接口不正常,或该设备不支持外置 SD 卡的卸载。 |
#### 5. 设置外置 SD 卡卸载或装载
```java
void setExtSDCardMounted(Context context, int enable)
```
**参数:**
- `context`:上下文。
- `enable`:设置外置 SD 卡的卸载加载,取值见 `getExtSDCardMounted()` 返回值。
**返回值:**
#### 6. 获取用户自定义序列号
```java
String getCustomId()
```
**参数:**
**返回值:** 返回用户自定义序列号,**仅 D700 系列支持,其它项目请勿调用此函数,会异常**。
返回值有以下几种:
| 状态 | 值 | 说明 |
| --- | --- | --- |
| null | null | 获取用户自定义序列号失败 |
| String 类型 | String 类型 | 获取成功 |
## Zigbee 类
### 使用方法
```java
import com.seuic.misc.Zigbee;
Zigbee zigbee = new Zigbee();
```
### 操作流程
参考流程:`open``powerOn``read & write``powerOff``close`
该类提供的函数可以分为两组,一组是用于模块的上电/断电,一组用于串口的操作。模块的上电和串口打开谁先谁后并没有严格的顺序,视具体设备要求。
### 函数接口
| 函数 | 说明 |
| --- | --- |
| `getDeviceName` | 获取设备名称 |
| `powerOn` | 设备上电 |
| `powerOff` | 设备断电 |
| `open` | 打开设备,包括打开串口,不包括上电 |
| `close` | 关闭设备,包括关闭串口,不包括断电 |
| `read` | 封装对设备的读操作 |
| `write` | 封装对设备的写操作 |
#### 1. 获取设备名称
```java
public String getDeviceName()
```
**参数:**
**返回值:** 该设备连接的串口设备文件,如 `/dev/ttyUART0`
#### 2. 设备上电
```java
public void powerOn()
```
**参数:**
**返回值:**
#### 3. 设备断电
```java
public void powerOff()
```
**参数:**
**返回值:**
#### 4. 打开设备,包括打开串口
```java
public boolean open()
public boolean open(int baudrate)
public boolean open(int baudrate, int dataBits, int stopBits, int parity)
```
**参数:**
- `baudrate`:波特率,如 `115200`
- `dataBits`:数据位,目前支持 `5``6``7``8`
- `stopBits`:停止位,目前支持 `1``2`
- `parity`:奇偶校验
- `'n'``'N'`:无奇偶校验
- `'o'``'O'`:奇校验
- `'e'``'E'`:偶校验
- `'m'``'M'`:标记检验
- `'s'``'S'`:空白校验
**返回值:** 成功或失败
**备注:** 提供 3 个 `open` 接口简化串口的参数设置,默认串口 1152008 位数据位1 位停止位,无奇偶校验。用户可以根据实际情况选择相应的接口。
#### 5. 关闭设备,包括关闭串口
```java
public void close()
```
**参数:**
**返回值:**
#### 6. 封装对设备的读操作
```java
public byte[] read(int len, int timeout)
```
**参数:**
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `len` | int | 要读取的长度 |
| `timeout` | int | 超时,单位毫秒 |
**返回值:** 读取到的字节数组,失败的话返回 `null`
#### 7. 封装对设备的写操作
```java
public boolean write(byte[] data, int len)
```
**参数:**
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `data` | byte[] | 要写入设备的字节数组 |
| `len` | int | 要写入的长度,应当 <= data 的实际长度 |
**返回值:** 成功或失败
## Fingerprint 类
### 使用方法
```java
import com.seuic.misc.Fingerprint;
Fingerprint fingerprint = new Fingerprint();
```
### 操作流程
`open``powerOn``read & write``powerOff``close`
> 有的指纹模块可能需要先 `powerOn` 再 `open`,请和模块厂家确认。
该类提供的函数可以分为两组,一组是用于模块的上电/断电,一组用于串口的操作。模块的上电和串口打开谁先谁后并没有严格的顺序,视具体设备要求。
### 函数接口
| 函数 | 说明 |
| --- | --- |
| `getDeviceName` | 获取设备名称 |
| `powerOn` | 设备上电 |
| `powerOff` | 设备断电 |
| `open` | 打开设备,包括打开串口,不包括上电 |
| `close` | 关闭设备,包括关闭串口,不包括断电 |
| `read` | 封装对设备的读操作 |
| `write` | 封装对设备的写操作 |
#### 1. 获取设备名称
```java
public String getDeviceName()
```
**参数:**
**返回值:** 该设备连接的串口设备文件,如 `/dev/ttyUART0`
#### 2. 设备上电
```java
public void powerOn()
```
**参数:**
**返回值:**
#### 3. 设备断电
```java
public void powerOff()
```
**参数:**
**返回值:**
#### 4. 打开设备,包括打开串口
```java
public boolean open()
public boolean open(int baudrate)
public boolean open(int baudrate, int dataBits, int stopBits, int parity)
```
**参数:**
- `baudrate`:波特率,如 `115200`
- `dataBits`:数据位,目前支持 `5``6``7``8`
- `stopBits`:停止位,目前支持 `1``2`
- `parity`:奇偶校验
- `'n'``'N'`:无奇偶校验
- `'o'``'O'`:奇校验
- `'e'``'E'`:偶校验
- `'m'``'M'`:标记检验
- `'s'``'S'`:空白校验
**返回值:** 成功或失败
**备注:** 提供 3 个 `open` 接口简化串口的参数设置,默认串口 1152008 位数据位1 位停止位,无奇偶校验。用户可以根据实际情况选择相应的接口。
#### 5. 关闭设备,包括关闭串口
```java
public void close()
```
**参数:**
**返回值:**
#### 6. 封装对设备的读操作
```java
public byte[] read(int len, int timeout)
```
**参数:**
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `len` | int | 要读取的长度 |
| `timeout` | int | 超时,单位毫秒 |
**返回值:** 读取到的字节数组,失败的话返回 `null`
#### 7. 封装对设备的写操作
```java
public boolean write(byte[] data, int len)
```
**参数:**
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `data` | byte[] | 要写入设备的字节数组 |
| `len` | int | 要写入的长度,应当 <= data 的实际长度 |
**返回值:** 成功或失败
## Manager 类
### 使用方法
```java
import com.seuic.misc.Manager;
Manager manager = new Manager(context);
```
### 函数接口
| 函数 | 说明 |
| --- | --- |
| `enableUsb` | 使能/禁用 USB。使能状态下usb 才可以设置为 mtp/ptp/U 盘模式。仅支持 D700_V1.6.0 及之后版本。 |
| `isUsbEnabled` | 查看 USB 使能状态。仅支持 D700_V1.6.0 及之后版本。 |
#### 1. 使能/禁用 USB
```java
public boolean enableUsb(boolean enable)
```
**参数:**
- `enable`
- `true`:使能
- `false`:禁用
**返回值:** 设置是否成功。
#### 2. 查看 USB 使能状态
```java
public boolean isUsbEnabled()
```
**参数:**
**返回值:** `true` 表示使能,`false` 表示禁用。默认是使能状态。