# 自定义套件二开

来源快照：`result_data_new_260518.json`

- 来源 ID：`1208531946821074961`
- 模块：集成中心
- 目录：设备集成 - 开发示例
- space ID：`1158011075224911873`
- 原文链接：未提供
- 产品基线：未提供

## 正文

# 一、功能背景

设备品牌、型号种类繁多，设备集成标准套件难以满足多样化的设备需求。

20251001基线之后，设备集成开放了通过ecode自定义套件的口子。

本文档用于开发者通过ecode口子，自定义实现所需设备的对接。

 

二、

# 功能价值

可基于标准ecode自定义套件，快速对接三方硬件设备

 

三、

# 开发说明

## 1\. ecode包使用说明

1.

确定您所需要的设备类型，并在附件中下载对应的ecode开发示例包

 

2.

在ecode开发示例包中，按照自定义套件预留的口子（参照下文文档），完成目标设备的对接

3.

测试验证设备功能

 

2.

## 不同设备类型文档

### 2.1. 扫描仪

通常情况下，大部分扫描仪可以使用通用套件（TWAIN）完成对接。如果目标设备不适用于TWAIN协议，可通过ecode方式对接。

 

对接目标设备时，Sdk需要实现的方法：

**方法名**| **参数**| **作用**| **是否必须**  
---|---|---|---  
handleScanDevice| operate，属性参照扫描仪入参表格| 触发扫描| 是  
handleStartScanAction|  | 扫描函数主体，1：在handleScanDevice调用 2：在后台测试功能中调用| 是  
handleDeviceTest|  | 硬件设备测试| 是  
  
 

 

在Sdk内部，需要基于扫描阶段触发以下表格回调（回调通过handleScanDevice中的参数传入，需要接收并在对应时机触发）

 

入参传入的参数：

**方法名**| **返回值类型**| **作用**| **是否必须**  
---|---|---|---  
getScanStartCb| Void| 开始扫描回调| 是  
getScanResultCb| Array<string>| 所有扫描结果回调| 是  
getEveryPageResult| String| 每页扫描结果回调| 否。非扫传并行时不需要。  
getErrorCb| String| 异常回调| 否。不传递不影响扫描，但异常场景无法提示  
getFinishFeederLoadedTest| String| 获取进纸口是否有纸张的回调函数| 否。不传递不影响扫描，但异常场景无法提示  
getFinishSerialNubmerTest| String| 获取序列号回调函数| 否。不传递不影响扫描，但异常场景无法提示  
 |  |  |    
  
 

注：ecode示例设备为twain

### 2.2. 高拍仪

 

入参传入的参数：

**方法名**| **返回值类型**| **作用**| **是否必须**  
---|---|---|---  
errCb| {            code: '12099',            msg: getErrMsg('12099')          }| 错误信息返回| 是  
  
 

 

需要实现的方法：

**方法名**| **返回值类型**| **作用**| **是否必须**  
---|---|---|---  
getVideoUrl| string| 视频流地址| 是  
getConnectStatus| Promise boolean| 判断设备是否连接| 是  
getGrabimage | Promise base64图片信息| 采集图像| 是  
getClipimage | Promise base64图片信息| 剪裁视频流获取图像| 否。不实现时裁切功能无法使用  
setRotate |  | 旋转视频流预览区域| 否。不实现时旋转功能无法使用  
setAutoCut |  | 设置自动裁切| 否。不实现时自动裁切无法使用  
setPhotoMode |  | 设置拍照模式| 否。部分扫描仪支持，不实现时拍照模式无法使用  
handleDeviceTest | Promise boolean| 硬件测试，测试设备对应的服务是否可连接| 否，不实现时后台测试功能无法使用  
  
 

注：ecode示例设备为 哲林ZL-HC1003

 

### 2.3. 读卡器

 

需要实现的方法：

**方法名**| **返回值类型**| **作用**| **是否必须**  
---|---|---|---  
handleDeviceTest| {          flag: boolean, //是否成功          msg: string //异常信息  }| 测试设备功能| 是  
handleStartDevice| {idFormatInfo:{    'sexCode', //性别编码  'type', // 类型  'nameZh', //姓名  'sex', //性别  'nation', //民族  'nationCode', // 民族编码  'birth', //生日  'address', //地址  'id', //身份证  'signOrg', //签发机关  'startDate',// 发卡日期  'validityDate',// 卡有效期  'imgBase64' //头像}} | 开始读卡| 是  
  
 

注：ecode示例设备为 神思读卡器ss628_100 新版

 

### 2.4. ukey

 

需要实现的方法：

**方法名**| **入参**| **返回值类型**| **作用**| **是否必须**  
---|---|---|---|---  
init| {deviceId:’’  //设备id}| {     status: boolean, //是否成功msg: string //异常信息} | 初始化设备| 是  
verify| pin:string| {status: true, //是否加签成功data: {sign, //签名data: this.data, //原文 ext: JSON.stringify({  //扩展参数           deviceId: this.deviceId //设备id，在init中获取        }) }}| 获取加签值| 是  
  
 

注：ecode示例设备为契约锁ukey

 

### 2.5. 指纹设备

需要实现的方法：

**方法名**| **入参**| **返回值类型**| **作用**| **是否必须**  
---|---|---|---|---  
init| {deviceId:’’  //设备id}| {     status: boolean, //是否成功msg: string //异常信息} | 初始化设备| 是  
verify|  | {status: true, //是否加签成功data: {sign, //签名data: this.data, //原文 ext: JSON.stringify({  //扩展参数           deviceId: this.deviceId //设备id，在init中获取        }) }}| 获取加签值| 是  
  
 

注：ecode示例设备为CNG
