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,753 @@
# Android 扫描接口说明
> 江苏东大集成电路系统工程技术有限公司
> www.seuic.com
![SEUIC 东集 Logo 图片占位符]
![世界地图装饰图片占位符]
## 修订记录
| 版本号 | 修订日期 | 修订内容 | 修订人员 |
| --- | --- | --- | --- |
| 1.0 | 2017/03/16 | 建立本文档 | 罗涛 |
| 1.1 | 2017/5/31 | 加入回调函数注意事项说明 | 罗涛 |
| 1.2 | 2017/11/13 | 修正关于图像读取接口的描述 | 罗涛 |
| 1.3 | 2017/11/20 | 添加新增参数介绍 | 罗涛 |
## 目录
- 概述
- 硬件平台
- 软件平台
- 适用对象
- 准备工作
- Jar 包引用方法
- 所需的相关权限
- 扫描相关类介绍
- 扫描工厂类
- 扫描类
- 扫描数据回调接口类
- 读取图像回调接口类
- 扫描状态回调接口类
- 扫描数据类
- 扫描按键监听类
- 扫描接口介绍
- 获取扫描头上下文
- 打开扫描头
- 关闭扫描头
- 开始扫描
- 停止扫描
- 设置扫描条码回调
- 启用扫描头
- 禁用扫描头
- 获取条码参数
- 设置条码参数
- 获取扫描成功后图像
- 开始读取图像
- 停止读取图像
- 设置读取图像回调
- 设置扫描头状态回调
- 扫描参数介绍
- 条码设置参数
- 扫描状态参数
---
# 概述
我司提供的所有设备上已经内置了扫描服务及应用,方便客户定制扫描服务,但是由于有部分客户需要自己开发基于我司扫描 SDK 的应用,故本文档致力于介绍有关扫描 SDK 的相关内容,以便帮助用户更为灵活地使用我们的设备。
## 硬件平台
SDK 适用于我司所有终端设备,具体使用范围在函数接口说明中指明,若无指明表示都支持。
## 软件平台
SDK 基于 Android 4.3、Android 4.4、Android 5.1 版本,支持 Eclipse、Android Studio 开发工具。
## 适用对象
希望在自己的应用中定制扫描的开发人员。
---
# 准备工作
## Jar 包引用方法
**1、首先以 Eclipse 为例**,右击项目 → Properties → Java Build Path → Libraries → Add External JARs选择 `ScannerAPI.jar` 文件。
![Eclipse 添加外部 JAR 包截图占位符]
**2、以 Android Studio Version2.2.2 版本为例**,在 project 中,在 app 目录下新建一个 `libsref` 目录,将 `ScannerAPI` 放入该目录下,并右击工程选择 Open Module Settings 选中相应的 Module切换至最右方的 Dependencies点击右方加号选择 File dependency 添加 `ScannerAPI.jar`,并且修改 scope 为 `provided`,声明该 `ScannerAPI.jar` 只在编译时需要依赖,在运行时不需要。
① 将 `ScannerAPI.jar` 放入 `app/libsref/`
![Android Studio 项目结构 libsref 目录截图占位符]
② 右击工程选择 Open Module Settings 选中相应的 Module切换至最后方的 Dependencies点击右方加号选择 File dependency 添加 `ScannerAPI.jar`
![Android Studio Open Module Settings 菜单截图占位符]
![Android Studio Dependencies 添加 jar 包截图占位符]
③ 更改 compile 为 provided声明该 `ScannerAPI.jar` 只在编译时需要依赖,在运行时不需要,最后保存设置即可。
![Android Studio scope 设置为 Provided 截图占位符]
④ 如果设置成功,会在相应的 `build.gradle` 中有如下 dependencies
```gradle
dependencies {
provided files('libsref/ScannerAPI.jar')
}
```
## 所需的相关权限
在进行基于我们的扫描 SDK 开发的时候,需在 `AndroidManifest.xml` 的 application 节点下添加以下代码:
```xml
<uses-library android:name="android.scanner.library"/>
```
D500/D510/D330S 设备中二维扫描需添加以下权限:
```xml
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
```
**注意点:**
1. 在一个应用中只需要打开一次扫描头即可,不需要打开多次,否则会耗时太大,产生卡屏现象。
2. 退出程序的时候可以选择关闭扫描头,其余场合不可关闭。
3. 可以参照测试 demo 中的方式,在 `ScannerService` 中定义 action在使用扫描的 UI 中直接使用动态注册广播接收器接收到扫描解析的结果。
---
# 扫描相关类介绍
## 扫描工厂类
| 项目 | 内容 |
| --- | --- |
| 包名 | `com.seuic.scanner` |
| 类名 | `ScannerFactory` |
| 说明 | 扫描工厂类,主要用于获取扫描头资源 |
## 扫描类
| 项目 | 内容 |
| --- | --- |
| 包名 | `com.seuic.scanner` |
| 类名 | `Scanner` |
| 说明 | 扫描主要实现类,定义了一系列扫描操作方法 |
## 扫描数据回调接口类
| 项目 | 内容 |
| --- | --- |
| 包名 | `com.seuic.scanner` |
| 类名 | `DecodeInfoCallBack` |
| 回调函数 | `onDecodeComplete(DecodeInfo barcodeInfo)` |
| 回调函数参数 | param1: 条码信息,`DecodeInfo` |
| 回调函数返回值 | void |
| 说明 | 扫描回调函数,用户需引用该接口,并调用 `Scanner` 类中 `setDecodeInfoCallBack` 后可获得条码信息。 |
> **注意:** 该回调方法中请勿进行 UI 操作!
## 读取图像回调接口类
| 项目 | 内容 |
| --- | --- |
| 包名 | `com.seuic.scanner` |
| 类名 | `VideoCallBack` |
| 回调函数 | `onVideoCallBack(int width, int height, byte[] img)` |
| 回调函数参数 | param1: 返回图像宽度<br>param2: 返回图像高度<br>param3: 返回的图像数据Bitmap 格式) |
| 回调函数返回值 | `true`:操作成功,停止出光并终止对图像的读取<br>`false`:操作失败,继续读取图像 |
| 说明 | 扫描回调函数,用户需引用该接口,并调用 `Scanner` 类中的 `setVideoCallBack` 后可获得图像数据,同时每取得一帧图像都会调用该函数,第三方的相关操作在此处处理。 |
> **注意:** 该回调方法中请勿进行 UI 操作!
## 扫描状态回调接口类
| 项目 | 内容 |
| --- | --- |
| 包名 | `com.seuic.scanner` |
| 类名 | `StatusCallBack` |
| 回调函数 | `onStatusCallBack(int status, int info)` |
| 回调函数参数 | param1: 状态信息<br> 0扫描成功<br> 1扫描超时<br> 2扫描被取消<br> 3扫描出现错误暂未使用<br> 4其他事件暂未使用<br>param2: 其他额外信息(暂未使用)<br>扫描状态参数参见:扫描状态参数 |
| 回调函数返回值 | void |
| 说明 | 状态回调函数,用户可引用该接口,并且调用 `Scanner` 类中的 `setStatusCallBack` 后可以当扫描头状态更新时获得当前扫描状态。 |
> **注意:** 该回调方法中请勿进行 UI 操作!
## 扫描数据类
| 项目 | 内容 |
| --- | --- |
| 包名 | `com.seuic.scanner` |
| 类名 | `DecodeInfo` |
| 类成员 | `String barcode`:条码数据<br>`String codetype`:条码类型<br>`int length`:条码长度 |
## 扫描按键监听类
| 项目 | 内容 |
| --- | --- |
| 包名 | `com.seuic.scanner` |
| 类名 | `ScannerKey` |
| 类成员变量 | `KEY_DOWN`:扫描按键按下<br>`KEY_UP`:扫描按键抬起 |
| 类方法 | `int open()`:打开扫描键监听,返回 1打开成功-1打开失败<br>`int getKeyEvent()`获取按键事件返回1扫描键按下0扫描键抬起-1获取失败。注意该方法将阻塞进程推荐异步调用。<br>`void close()`:关闭扫描键监听 |
| 说明 | 扫描按键监听类 |
**示例代码:**
```java
import com.seuic.scanner.Scanner;
import com.seuic.scanner.ScannerKey;
import com.seuic.scanner.ScannerFactory;
public class ScannerApiTest {
// ……
Runnable runnable = new Runnable() {
@Override
public void run() {
int ret1 = ScannerKey.open();
if (ret1 > -1) {
while (true) {
int ret = ScannerKey.getKeyEvent();
if (ret > -1) {
switch (ret) {
case ScannerKey.KEY_DOWN:
scanner.startScan();
break;
case ScannerKey.KEY_UP:
scanner.stopScan();
break;
}
}
}
}
}
};
// ……
ScannerKey.close();
}
```
---
# 扫描接口介绍
> 接口具体使用范围若无指明表示所有扫描头都支持。
## 获取扫描头上下文
| 项目 | 内容 |
| --- | --- |
| 引用包名 | `com.seuic.scanner` |
| 引用类 | `ScannerFactory` |
| 接口 | `getScanner` |
| 接口参数 | `Context context` |
| 返回值 | `Scanner` 实例 |
| 说明 | 获取扫描类实例 |
**示例代码:**
```java
import com.seuic.scanner.ScannerFactory;
import com.seuic.scanner.Scanner;
public class ScannerApiTest {
// ……
Scanner scanner = ScannerFactory.getScanner(context);
// ……
}
```
## 打开扫描头
| 项目 | 内容 |
| --- | --- |
| 引用包名 | `com.seuic.scanner` |
| 引用类 | `Scanner` |
| 接口名称 | `open` |
| 接口参数 | void |
| 接口返回值 | boolean |
| 说明 | 返回 `true`,打开扫描头成功;返回 `false`,打开扫描头失败。**注意**:仅在该方法返回为 `true` 时,才可进行扫描头其他操作。 |
**示例代码:**
```java
import com.seuic.scanner.ScannerFactory;
import com.seuic.scanner.Scanner;
public class ScannerApiTest {
// ……
Scanner scanner = ScannerFactory.getScanner(context);
Boolean status = scanner.open();
// ……
}
```
## 关闭扫描头
| 项目 | 内容 |
| --- | --- |
| 引用包名 | `com.seuic.scanner` |
| 引用类 | `Scanner` |
| 接口名称 | `close` |
| 接口参数 | void |
| 接口返回值 | void |
| 说明 | 释放扫描头资源 |
**示例代码:**
```java
import com.seuic.scanner.ScannerFactory;
import com.seuic.scanner.Scanner;
public class ScannerApiTest {
// ……
Scanner scanner = ScannerFactory.getScanner(context);
Boolean status = scanner.close();
// ……
}
```
## 开始扫描
| 项目 | 内容 |
| --- | --- |
| 引用包名 | `com.seuic.scanner` |
| 引用类 | `Scanner` |
| 接口名称 | `startScan` |
| 接口参数 | void |
| 接口返回值 | void |
| 说明 | 开始扫描:扫描头出光进入条码读取模式 |
## 停止扫描
| 项目 | 内容 |
| --- | --- |
| 引用包名 | `com.seuic.scanner` |
| 引用类 | `Scanner` |
| 接口名称 | `stopScan` |
| 接口参数 | void |
| 接口返回值 | void |
| 说明 | 停止扫描,可使扫描头灭光并终止条码读取 |
## 设置扫描条码回调
| 项目 | 内容 |
| --- | --- |
| 引用包名 | `com.seuic.scanner` |
| 引用类名 | `Scanner``DecodeInfoCallBack``DecodeInfo` |
| 接口名称 | `setDecodeInfoCallBack` |
| 接口参数 | param1`DecodeInfoCallBack` |
| 接口返回值 | void |
| 说明 | 设置用户扫描结束后的回调函数,该函数是获取包括条码数据、长度、类型的信息。在设置之前确保实现了 `DecodeInfoCallBack` 中的 `onDecodeComplete` 方法。 |
**示例代码:**
```java
import com.seuic.scanner.ScannerFactory;
import com.seuic.scanner.Scanner;
import com.seuic.scanner.DecodeInfoCallBack;
import com.seuic.scanner.DecodeInfo;
public class ScannerApiTest implements DecodeInfoCallBack {
// ……
Scanner scanner = ScannerFactory.getScanner(context);
scanner.setDecodeInfoCallBack(this);
scanner.startScan();
// …….
scanner.stopScan();
@Override
public void onDecodeComplete(DecodeInfo info) {
// ……
}
// ……
}
```
## 启用扫描头
| 项目 | 内容 |
| --- | --- |
| 引用包名 | `com.seuic.scanner` |
| 引用类 | `Scanner` |
| 接口名称 | `enable` |
| 接口参数 | void |
| 接口返回值 | void |
| 说明 | 启用扫描头 |
**示例代码:**
```java
import com.seuic.scanner.ScannerFactory;
import com.seuic.scanner.Scanner;
public class ScannerApiTest {
// ……
Scanner scanner = ScannerFactory.getScanner(context);
scanner.enable();
// ……
}
```
## 禁用扫描头
| 项目 | 内容 |
| --- | --- |
| 引用包名 | `com.seuic.scanner` |
| 引用类 | `Scanner` |
| 接口名称 | `disable` |
| 接口参数 | void |
| 接口返回值 | void |
| 说明 | 禁用扫描头,该操作完成后,将无法进行扫描操作 |
**示例代码:**
```java
import com.seuic.scanner.ScannerFactory;
import com.seuic.scanner.Scanner;
public class ScannerApiTest {
// ……
Scanner scanner = ScannerFactory.getScanner(context);
scanner.disable();
// ……
}
```
## 获取条码参数
| 项目 | 内容 |
| --- | --- |
| 引用包名 | `com.seuic.scanner` |
| 引用类 | `Scanner` |
| 接口名称 | `getParams` |
| 接口参数 | param1参数代码。例如获取 Scan Angle 的值,条码参数便是 `0x02`,具体参数代码参见:条码设置参数 |
| 接口返回值 | int 类型,条码参数当前值 |
| 说明 | 根据参数代码获取该参数当前的设定值 |
## 设置条码参数
| 项目 | 内容 |
| --- | --- |
| 引用包名 | `com.seuic.scanner` |
| 引用类 | `Scanner` |
| 接口名称 | `setParams` |
| 接口参数 | param1参数代码。例如设置 Scan Angle 的值,条码参数便是 `0x02`<br>param2需要设置的参数值<br>参数代码参见:条码设置参数 |
| 接口返回值 | boolean`true` 设置成功,`false` 设置失败 |
| 说明 | 根据参数代码设置扫描参数值 |
**示例代码:**
```java
import com.seuic.scanner.ScannerFactory;
import com.seuic.scanner.Scanner;
public class ScannerApiTest {
// ……
Scanner scanner = ScannerFactory.getScanner(context);
int value = scanner.getParams(0x02);
// ……
scanner.setParams(0x02, 1);
}
```
## 获取扫描成功后图像
| 项目 | 内容 |
| --- | --- |
| 引用包名 | `com.seuic.scanner` |
| 引用类 | `Scanner` |
| 接口名称 | `getLastImage` |
| 接口参数 | void |
| 接口返回值 | `byte[]`图像数据width: 832 height: 640图像格式为 bitmap |
| 说明 | 当完成一次成功的扫描后,调用该接口,获取该次用于解码的扫描图像 |
> **注意:** 该接口仅适用于 A9/A-PAD/A6L-P/CRUISE 中的 S8
**示例代码:**
```java
import com.seuic.scanner.ScannerFactory;
import com.seuic.scanner.Scanner;
public class ScannerApiTest {
// ……
Scanner scanner = ScannerFactory.getScanner(context);
scanner.startScan();
// ……
byte[] image = scanner.getLastImage();
}
```
## 开始读取图像
| 项目 | 内容 |
| --- | --- |
| 引用包名 | `com.seuic.scanner` |
| 引用类 | `Scanner` |
| 接口名称 | `startVideo` |
| 接口参数 | param1int 类型设置超时时间单位为ms |
| 接口返回值 | `0`:回调函数 `onVideoCallback` 返回成功自动退出无需调用 `stopVideo`<br>`9`:参数无效退出<br>`17`:调用 `stopVideo` 手动退出<br>`6`:取图像失败退出<br>`25`:超时退出<br>`2`:未知错误退出 |
| 说明 | 开始读取图像:扫描头开始出光并进入图像读取模式,为阻塞函数,且与 `startScan` 不可同时使用。 |
> **注意:** 该接口仅适用于 A9/A-PAD/A6L-P/CRUISE 中的 S8
## 停止读取图像
| 项目 | 内容 |
| --- | --- |
| 引用包名 | `com.seuic.scanner` |
| 引用类 | `Scanner` |
| 接口名称 | `stopVideo` |
| 接口参数 | void |
| 接口返回值 | void |
| 说明 | 扫描头停止出光并终止对图像地读取。 |
> **注意:** 该接口仅适用于 A9/A-PAD/A6L-P/CRUISE 中的 S8
## 设置读取图像回调
| 项目 | 内容 |
| --- | --- |
| 引用包名 | `com.seuic.scanner` |
| 引用类名 | `Scanner``VideoCallBack` |
| 接口名称 | `setVideoCallBack` |
| 接口参数 | param1`VideoCallBack` |
| 接口返回值 | void |
| 说明 | 设置用户扫描进入读取图像模式后的回调函数,该接口仅适用于 A9/A-PAD/A6L-P/CRUISE 中的 S8 |
**示例代码:**
```java
import com.seuic.scanner.ScannerFactory;
import com.seuic.scanner.Scanner;
import com.seuic.scanner.VideoCallBack;
public class ScannerApiTest implements VideoCallBack {
// ……
Scanner scanner = ScannerFactory.getScanner(context);
scanner.setVideoCallBack(this);
scanner.startVideo(3000);
// ……
scanner.stopVideo();
@Override
public boolean onVideoCallBack(int width, int height, byte[] img) {
// ……
}
// ……
}
```
## 设置扫描头状态回调
| 项目 | 内容 |
| --- | --- |
| 引用包名 | `com.seuic.scanner` |
| 引用类名 | `Scanner``StatusCallBack` |
| 接口名称 | `setStatusCallBack` |
| 接口参数 | param1`StatusCallBack` 接口类 |
| 接口返回值 | void |
| 说明 | 设置用户获取当前扫描状态的回调函数,在设置之前务必实现 `StatusCallBack` 中的 `onStatusCallBack` 方法,设置之后有关扫描的状态会自动回调 `onStatusCallBack` 将当前状态反馈给用户 |
**示例代码:**
```java
import com.seuic.scanner.ScannerFactory;
import com.seuic.scanner.Scanner;
public class ScannerApiTest implements StatusCallBack {
// ……
Scanner scanner = ScannerFactory.getScanner(context);
scanner.setStatusCallBack(this);
@Override
public boolean onStatusCallBack(int status, int info) {
// ……
}
// ……
}
```
---
# 扫描参数介绍
## 条码设置参数
| Parameter | Parameter Number (Hex) |
| --- | --- |
| Laser On Time | 0x01 |
| Scan Angle | 0x02 |
| Time Out Between Same Symbol | 0x03 |
| Linear Code Type Security Levels | 0x04 |
| Bi-directional Redundancy | 0x06 |
| Aimer/Illumination lighting combinations | 0x07 |
| Mobile Phone/Display Mode | 0x08 |
| Illumination Power Level | 0x09 |
| Decode Time Out | 0x0a |
| Adaptive Scanning | 0x0b |
| Continue Scan Mode | 0x0c |
| Exposure Mode | 0x0d |
| Picklist Mode | 0x0e |
| Aim Accuracy Level | 0x0f |
| GS1 AI Separator | 0x10 |
| Transfer Aim ID | 0x11 |
| Inverse Mode | 0x12 |
| Low Power Delay Time | 0x13 |
| Hold Scanning Time Out | 0x14 |
| UPC-A | 0x101 |
| UPC-E | 0x102 |
| UPC-E1 | 0x103 |
| EAN-8 | 0x104 |
| EAN-13 | 0x105 |
| Bookland EAN | 0x106 |
| Transmit UPC-A Check Digit | 0x107 |
| Transmit UPC-E Check Digit | 0x108 |
| Transmit UPC-E1 Check Digit | 0x109 |
| Transmit EAN-13 Check Digit | 0x10a |
| Transmit EAN-8 Check Digit | 0x10b |
| UPC-A Preamble | 0x10c |
| UPC-E Preamble | 0x10d |
| UPC-E1 Preamble | 0x10e |
| Convert UPC-E to A | 0x10f |
| Convert UPC-E1 to A | 0x110 |
| Convert EAN-8 to 13 | 0x111 |
| UCC Coupon Extended Code | 0x112 |
| UPC-E Expand | 0x113 |
| UPC-A 2 Char Addenda | 0x114 |
| UPC-A 5 Char Addenda | 0x115 |
| UPC-E 2 Char Addenda | 0x116 |
| UPC-E 5 Char Addenda | 0x117 |
| EAN13 2 Char Addenda | 0x118 |
| EAN13 5 Char Addenda | 0x119 |
| EAN8 2 Char Addenda | 0x11a |
| EAN8 5 Char Addenda | 0x11b |
| Code 128 | 0x121 |
| Code 128 Minimum Length | 0x122 |
| Code 128 Maximum Length | 0x123 |
| ISBT 128 | 0x124 |
| GS1-128 | 0x125 |
| ISBT 128 Predefined Concatenation Sequences On/Off | 0x126 |
| Code 39 | 0x131 |
| Trioptic Code 39 | 0x132 |
| Code 39 Full ASCII | 0x133 |
| Convert Code 39 to Code 32 | 0x134 |
| Code 32 Prefix | 0x135 |
| Code 39 Minimum Length | 0x136 |
| Code 39 Maximum Length | 0x137 |
| Transmit Code 39 Check Digit | 0x138 |
| Code 39 Check Digit Verification | 0x139 |
| Transmit Code 39 Start/Stop Characters | 0x13a |
| Code 39 Quiet Zone | 0x13b |
| Code 93 | 0x141 |
| Code 93 Minimum Length | 0x142 |
| Code 93 Maximum Length | 0x143 |
| Code 11 | 0x151 |
| Code 11 Minimum Length | 0x152 |
| Code 11 Maximum Length | 0x153 |
| Code 11 Check Digit Verification | 0x154 |
| Transmit Code 11 Check Digit | 0x155 |
| Interleaved 2 of 5 | 0x161 |
| Interleaved 2 of 5 Minimum Length | 0x162 |
| Interleaved 2 of 5 Maximum Length | 0x163 |
| Discrete 2 of 5 | 0x171 |
| Discrete 2 of 5 Minimum Length | 0x172 |
| Discrete 2 of 5 Maximum Length | 0x173 |
| Chinese 2 of 5 | 0x181 |
| Chinese 2 of 5 Minimum Length | 0x182 |
| Chinese 2 of 5 Maximum Length | 0x183 |
| Codabar | 0x191 |
| Codabar Minimum Length | 0x192 |
| Codabar Maximum Length | 0x193 |
| Transmit Codabar Start/Stop Characters | 0x194 |
| MSI | 0x201 |
| MSI Minimum Length | 0x202 |
| MSI Maximum Length | 0x203 |
| RSS 14 | 0x211 |
| RSS limit | 0x212 |
| RSS expanded | 0x213 |
| Convert RSS to UPC/EAN | 0x214 |
| QR Code | 0x221 |
| QR Code Minimum Length | 0x222 |
| QR Code Maximum Length | 0x223 |
| QR Inverse | 0x224 |
| MicroQR | 0x225 |
| Data Matrix | 0x231 |
| Data Matrix Minimum Length | 0x232 |
| Data Matrix Maximum Length | 0x233 |
| Data Matrix Inverse | 0x234 |
| Data Matrix Decode Mirror Images | 0x235 |
| China Post | 0x241 |
| China Post Minimum Length | 0x242 |
| China Post Maximum Length | 0x243 |
| Matrix 2 of 5 | 0x251 |
| Matrix 2 of 5 Minimum Length | 0x252 |
| Matrix 2 of 5 Maximum Length | 0x253 |
| US Postnet | 0x261 |
| US Planet | 0x262 |
| British Post | 0x263 |
| Japanese Post | 0x264 |
| Australian Post | 0x265 |
| UPU FICS Postal | 0x266 |
| USPS 4CB/One Code/Intelligent Mail | 0x267 |
| KIX(Netherlands) Post | 0x268 |
| Transmit US Postal Check Digit | 0x269 |
| Transmit Planet Check Digit | 0x26a |
| Korean 2 of 5 | 0x271 |
| EAN UCC Composite | 0x2b1 |
| EAN UCC Composite Minimum Length | 0x2b2 |
| EAN UCC Composite Maximum Length | 0x2b3 |
| PDF417 | 0x2c1 |
| PDF417 Minimum Length | 0x2c2 |
| PDF417 Maximum Length | 0x2c3 |
| Micro PDF417 | 0x2d1 |
| Micro PDF417 Minimum Length | 0x2d2 |
| Micro PDF417 Maximum Length | 0x2d3 |
| MaxiCode | 0x2e1 |
| MaxiCode Minimum Length | 0x2e2 |
| MaxiCode Maximum Length | 0x2e3 |
| Aztec Code | 0x2f1 |
| Aztec Code Minimum Length | 0x2f2 |
| Aztec Code Maximum Length | 0x2f3 |
| Aztec Inverse | 0x2f4 |
| Codablock | 0x301 |
| Codablock Minimum Length | 0x302 |
| Codablock Maximum Length | 0x303 |
| Telepen | 0x311 |
| Telepen Minimum Length | 0x312 |
| Telepen Maximum Length | 0x313 |
| Telepen Old Syle Mode | 0x314 |
| Set Default Parameter | 0x321 |
| Set Code Charset | 0x322 |
| OCR | 0x331 |
| Set OCR Template | 0x332 |
| Composite CC-C | 0x341 |
| Composite CC-A/B | 0x342 |
| Composite TLC-39 | 0x343 |
| UPC Composite | 0x344 |
| Transmit Code ID Character | 0x351 |
| Grid Matrix | 0x361 |
> 各扫描头参数详细信息见:扫描头条码参数汇总(仅供内部使用)
## 扫描状态参数
| Status | Status Number (Hex) |
| --- | --- |
| Decode Complete | 0x00 |
| Decode Time Out | 0x01 |
| Decode has been Canceled | 0x02 |
| Some Errors Happened | 0x03 |
| Decode Event | 0x04 |