@ohos.scan (扫描)

该模块为扫描框架的js-api接口文档,提供发现和连接扫描仪的能力。

说明:
本模块首批接口从API version 20开始支持。 当前界面仅包含本模块的公开接口。

导入模块

import { scan } from '@kit.BasicServicesKit';

ScanErrorCode

定义扫描错误码的枚举。

系统能力: SystemCapability.Print.PrintFramework

名称 说明
SCAN_ERROR_NO_PERMISSION 201 无权限。
SCAN_ERROR_NOT_SYSTEM_APPLICATION 202 非系统应用。
SCAN_ERROR_INVALID_PARAMETER 401 无效参数。
SCAN_ERROR_GENERIC_FAILURE 13100001 通用失败。
SCAN_ERROR_RPC_FAILURE 13100002 RPC失败。
SCAN_ERROR_SERVER_FAILURE 13100003 服务失败。
SCAN_ERROR_UNSUPPORTED 13100004 不支持的操作。
SCAN_ERROR_CANCELED 13100005 操作取消。
SCAN_ERROR_DEVICE_BUSY 13100006 设备忙。
SCAN_ERROR_INVALID 13100007 无效操作。
SCAN_ERROR_JAMMED 13100008 卡纸。
SCAN_ERROR_NO_DOCS 13100009 缺纸。
SCAN_ERROR_COVER_OPEN 13100010 盖子打开。
SCAN_ERROR_IO_ERROR 13100011 I/O错误。
SCAN_ERROR_NO_MEMORY 13100012 内存不足。

ConstraintType

定义参数限制类型的枚举。

系统能力: SystemCapability.Print.PrintFramework

名称 说明
SCAN_CONSTRAINT_NONE 0 无限制。
SCAN_CONSTRAINT_RANGE 1 范围限制。
SCAN_CONSTRAINT_WORD_LIST 2 数字列表。
SCAN_CONSTRAINT_STRING_LIST 3 字符串列表。

PhysicalUnit

定义物理单位的枚举。

系统能力: SystemCapability.Print.PrintFramework

名称 说明
SCAN_UNIT_NONE 0 无单位。
SCAN_UNIT_PIXEL 1 像素单位。
SCAN_UNIT_BIT 2 位单位。
SCAN_UNIT_MM 3 毫米单位。
SCAN_UNIT_DPI 4 DPI单位。
SCAN_UNIT_PERCENT 5 百分比单位。
SCAN_UNIT_MICROSECOND 6 微秒单位。

OptionValueType

定义选项值类型的枚举。

系统能力: SystemCapability.Print.PrintFramework

名称 说明
SCAN_TYPE_BOOL 0 布尔类型。
SCAN_TYPE_INT 1 整数类型。
SCAN_TYPE_FIXED 2 定点数类型。
SCAN_TYPE_STRING 3 字符串类型。

ScannerSyncMode

定义扫描仪同步码的枚举。

系统能力: SystemCapability.Print.PrintFramework

名称 说明
UPDATE_STR 'update' 更新码,表示扫描仪id的变化。
DELETE_STR 'delete' 删除码,表示扫描仪掉线。

ScannerDiscoveryMode

定义扫描仪发现方式的枚举。

系统能力: SystemCapability.Print.PrintFramework

名称 说明
TCP_STR 'TCP' 网络扫描仪的发现模式。
USB_STR 'USB' USB扫描仪的发现模式。

Range

定义范围的接口。

系统能力: SystemCapability.Print.PrintFramework

属性:

名称 类型 只读 可选 说明
minValue number 范围的最小值。
maxValue number 范围的最大值。
quantValue number 范围的量化值。

ScannerParameter

定义扫描仪参数的接口。

系统能力: SystemCapability.Print.PrintFramework

属性:

名称 类型 只读 可选 说明
optionName string 选项名称。
optionIndex number 选项索引。
optionTitle string 选项标题。
optionDesc string 选项描述。
optionType OptionValueType 选项值类型。
optionUnit PhysicalUnit 选项物理单位。
optionConstraintType ConstraintType 选项约束类型。
optionConstraintString string[] 选项字符串约束。
optionConstraintInt number[] 选项整数约束。
optionConstraintRange Range 选项范围约束。

ScannerOptionValue

定义扫描仪选项值的接口。

系统能力: SystemCapability.Print.PrintFramework

属性:

名称 类型 只读 可选 说明
valueType OptionValueType 值类型。
numValue number 数值。
strValue string 字符串值。
boolValue boolean 布尔值。

PictureScanProgress

定义图片扫描进度的接口。

系统能力: SystemCapability.Print.PrintFramework

属性:

名称 类型 只读 可选 说明
progress number 当前进度百分比,范围从0~100。
pictureFd number 扫描图片的文件描述符。
isFinal boolean 是否是本次扫描的最后一张图片。true表示是最后一张图片,false表示不是最后一张图片。

ScannerDevice

定义扫描仪设备的接口。

系统能力: SystemCapability.Print.PrintFramework

属性:

名称 类型 只读 可选 说明
scannerId string 扫描仪的唯一标识符。
discoveryMode ScannerDiscoveryMode 扫描仪的发现模式。
uniqueId string 扫描仪的唯一ID。
manufacturer string 扫描仪的制造商。
model string 扫描仪的型号。
deviceName string 扫描仪的设备名称。

ScannerSyncDevice

定义扫描仪同步设备的接口。

系统能力: SystemCapability.Print.PrintFramework

属性:

名称 类型 只读 可选 说明
scannerId string 扫描仪ID。
discoveryMode ScannerDiscoveryMode 发现模式。
uniqueId string 唯一ID。
syncMode ScannerSyncMode 同步模式。
oldScannerId string 旧的扫描仪ID,仅在syncMode为"update"时有效。

scan.init

init(): Promise<void>

初始化扫描服务。使用Promise异步回调。

需要权限: ohos.permission.PRINT

系统能力: SystemCapability.Print.PrintFramework

返回值:

类型 说明
Promise<void> Promise对象,无返回结果。

错误码:

错误码ID 错误信息
201 Permission denied.

示例:

import { scan } from '@kit.BasicServicesKit';
import { BusinessError } from '@kit.BasicServicesKit';

scan.init().then(() => {
    console.info('scan init success');
}).catch((error: BusinessError) => {
    console.error('scan init failed: ' + JSON.stringify(error));
})

scan.exit

exit(): Promise<void>

退出扫描服务。使用Promise异步回调。

需要权限: ohos.permission.PRINT

系统能力: SystemCapability.Print.PrintFramework

返回值:

类型 说明
Promise<void> Promise对象,无返回结果。

错误码:

错误码ID 错误信息
201 Permission denied.

示例:

import { scan } from '@kit.BasicServicesKit';
import { BusinessError } from '@kit.BasicServicesKit';

scan.exit().then(() => {
    console.info('scan exit success');
}).catch((error: BusinessError) => {
    console.error('scan exit failed: ' + JSON.stringify(error));
})

scan.startScannerDiscovery

startScannerDiscovery(): Promise<void>

开始发现扫描仪。使用Promise异步回调。

需要权限: ohos.permission.PRINT

系统能力: SystemCapability.Print.PrintFramework

返回值:

类型 说明
Promise<void> Promise对象,无返回结果。

错误码:

错误码ID 错误信息
201 Permission denied.

示例:

import { scan } from '@kit.BasicServicesKit';
import { BusinessError } from '@kit.BasicServicesKit';

scan.startScannerDiscovery().then(() => {
    console.info('start scanner discovery success');
}).catch((error: BusinessError) => {
    console.error('start scanner discovery failed: ' + JSON.stringify(error));
})

scan.openScanner

openScanner(scannerId: string): Promise<void>

打开扫描仪。使用Promise异步回调。

需要权限: ohos.permission.PRINT

系统能力: SystemCapability.Print.PrintFramework

参数:

参数名 类型 必填 说明
scannerId string 要打开的扫描仪的ID。

返回值:

类型 说明
Promise<void> Promise对象,无返回结果。

错误码:

错误码ID 错误信息
201 Permission denied.

示例:

import { scan } from '@kit.BasicServicesKit';
import { BusinessError } from '@kit.BasicServicesKit';

let scannerId: string = 'scanner_001';
scan.openScanner(scannerId).then(() => {
    console.info('open scanner success');
}).catch((error: BusinessError) => {
    console.error('open scanner failed: ' + JSON.stringify(error));
})

scan.closeScanner

closeScanner(scannerId: string): Promise<void>

关闭扫描仪。使用Promise异步回调。

需要权限: ohos.permission.PRINT

系统能力: SystemCapability.Print.PrintFramework

参数:

参数名 类型 必填 说明
scannerId string 要关闭的扫描仪的ID。

返回值:

类型 说明
Promise<void> Promise对象,无返回结果。

错误码:

错误码ID 错误信息
201 Permission denied.

示例:

import { scan } from '@kit.BasicServicesKit';
import { BusinessError } from '@kit.BasicServicesKit';

let scannerId: string = 'scanner_001';
scan.closeScanner(scannerId).then(() => {
    console.info('close scanner success');
}).catch((error: BusinessError) => {
    console.error('close scanner failed: ' + JSON.stringify(error));
})

scan.getScannerParameter

getScannerParameter(scannerId: string): Promise<ScannerParameter[]>

获取扫描仪参数。使用Promise异步回调。

需要权限: ohos.permission.PRINT

系统能力: SystemCapability.Print.PrintFramework

参数:

参数名 类型 必填 说明
scannerId string 扫描仪的ID。

返回值:

类型 说明
Promise<ScannerParameter[]> Promise对象,返回扫描仪参数数组。

错误码:

错误码ID 错误信息
201 Permission denied.

示例:

import { scan } from '@kit.BasicServicesKit';
import { BusinessError } from '@kit.BasicServicesKit';

let scannerId: string = 'scanner_001';
scan.getScannerParameter(scannerId).then((parameters: scan.ScannerParameter[]) => {
    console.info('get scanner parameters success: ' + JSON.stringify(parameters));
}).catch((error: BusinessError) => {
    console.error('get scanner parameters failed: ' + JSON.stringify(error));
})

scan.setScannerParameter

setScannerParameter(scannerId: string, optionIndex: number, value: ScannerOptionValue): Promise<void>

设置扫描仪参数。使用Promise异步回调。

需要权限: ohos.permission.PRINT

系统能力: SystemCapability.Print.PrintFramework

参数:

参数名 类型 必填 说明
scannerId string 扫描仪的ID。
optionIndex number 要设置的选项的索引。
value ScannerOptionValue 要设置的值。

返回值:

类型 说明
Promise<void> Promise对象,无返回结果。

错误码:

错误码ID 错误信息
201 Permission denied.

示例:

import { scan } from '@kit.BasicServicesKit';
import { BusinessError } from '@kit.BasicServicesKit';

let scannerId: string = 'scanner_001';
let optionIndex: number = 1;
let value: scan.ScannerOptionValue = {
    valueType: scan.OptionValueType.SCAN_TYPE_INT,
    numValue: 100
};
scan.setScannerParameter(scannerId, optionIndex, value).then(() => {
    console.info('set scanner parameter success');
}).catch((error: BusinessError) => {
    console.error('set scanner parameter failed: ' + JSON.stringify(error));
})

scan.setScanAutoOption

setScanAutoOption(scannerId: string, optionIndex: number): Promise<void>

设置扫描选项为自动模式。使用Promise异步回调。

需要权限: ohos.permission.PRINT

系统能力: SystemCapability.Print.PrintFramework

参数:

参数名 类型 必填 说明
scannerId string 扫描仪的ID。
optionIndex number 要设置为自动的选项的索引。

返回值:

类型 说明
Promise<void> Promise对象,无返回结果。

错误码:

错误码ID 错误信息
201 Permission denied.

示例:

import { scan } from '@kit.BasicServicesKit';
import { BusinessError } from '@kit.BasicServicesKit';

let scannerId: string = 'scanner_001';
let optionIndex: number = 1;
scan.setScanAutoOption(scannerId, optionIndex).then(() => {
    console.info('set scan auto option success');
}).catch((error: BusinessError) => {
    console.error('set scan auto option failed: ' + JSON.stringify(error));
})

scan.getScannerCurrentSetting

getScannerCurrentSetting(scannerId: string, optionIndex: number): Promise<ScannerOptionValue>

获取当前扫描仪设置。使用Promise异步回调。

需要权限: ohos.permission.PRINT

系统能力: SystemCapability.Print.PrintFramework

参数:

参数名 类型 必填 说明
scannerId string 扫描仪的ID。
optionIndex number 要获取的选项的索引。

返回值:

类型 说明
Promise<ScannerOptionValue> Promise对象,返回扫描仪选项值。

错误码:

错误码ID 错误信息
201 Permission denied.

示例:

import { scan } from '@kit.BasicServicesKit';
import { BusinessError } from '@kit.BasicServicesKit';

let scannerId: string = 'scanner_001';
let optionIndex: number = 1;
scan.getScannerCurrentSetting(scannerId, optionIndex).then((value: scan.ScannerOptionValue) => {
    console.info('get scanner current setting success: ' + JSON.stringify(value));
}).catch((error: BusinessError) => {
    console.error('get scanner current setting failed: ' + JSON.stringify(error));
})

scan.startScan

startScan(scannerId: string, batchMode: boolean): Promise<void>

开始扫描。使用Promise异步回调。

需要权限: ohos.permission.PRINT

系统能力: SystemCapability.Print.PrintFramework

参数:

参数名 类型 必填 说明
scannerId string 扫描仪的ID。
batchMode boolean 是否使用批处理模式。true表示使用批处理模式,false表示不使用批处理模式。

返回值:

类型 说明
Promise<void> Promise对象,无返回结果。

错误码:

错误码ID 错误信息
201 Permission denied.

示例:

import { scan } from '@kit.BasicServicesKit';
import { BusinessError } from '@kit.BasicServicesKit';

let scannerId: string = 'scanner_001';
let batchMode: boolean = true;
scan.startScan(scannerId, batchMode).then(() => {
    console.info('start scan success');
}).catch((error: BusinessError) => {
    console.error('start scan failed: ' + JSON.stringify(error));
})

scan.cancelScan

cancelScan(scannerId: string): Promise<void>

取消扫描。使用Promise异步回调。

需要权限: ohos.permission.PRINT

系统能力: SystemCapability.Print.PrintFramework

参数:

参数名 类型 必填 说明
scannerId string 扫描仪的ID。

返回值:

类型 说明
Promise<void> Promise对象,无返回结果。

错误码:

错误码ID 错误信息
201 Permission denied.

示例:

import { scan } from '@kit.BasicServicesKit';
import { BusinessError } from '@kit.BasicServicesKit';

let scannerId: string = 'scanner_001';
scan.cancelScan(scannerId).then(() => {
    console.info('cancel scan success');
}).catch((error: BusinessError) => {
    console.error('cancel scan failed: ' + JSON.stringify(error));
})

scan.getPictureScanProgress

getPictureScanProgress(scannerId: string): Promise<PictureScanProgress>

获取图片扫描进度。使用Promise异步回调。

需要权限: ohos.permission.PRINT

系统能力: SystemCapability.Print.PrintFramework

参数:

参数名 类型 必填 说明
scannerId string 扫描仪的ID。

返回值:

类型 说明
Promise<PictureScanProgress> Promise对象,返回图片扫描进度信息。

错误码:

错误码ID 错误信息
201 Permission denied.

示例:

import { scan } from '@kit.BasicServicesKit';
import { BusinessError } from '@kit.BasicServicesKit';

let scannerId: string = 'scanner_001';
scan.getPictureScanProgress(scannerId).then((progress: scan.PictureScanProgress) => {
    console.info('get picture scan progress success: ' + JSON.stringify(progress));
}).catch((error: BusinessError) => {
    console.error('get picture scan progress failed: ' + JSON.stringify(error));
})

scan.on

on(type: 'scanDeviceFound', callback: Callback<ScannerDevice>): void

注册扫描仪设备发现事件回调。使用callback异步回调。

需要权限: ohos.permission.PRINT

系统能力: SystemCapability.Print.PrintFramework

参数:

参数名 类型 必填 说明
type 'scanDeviceFound' 事件类型。
callback Callback<ScannerDevice> 回调函数,返回扫描仪设备发现信息。

错误码:

错误码ID 错误信息
201 Permission denied.

示例:

import { scan } from '@kit.BasicServicesKit';

scan.on('scanDeviceFound', (device: scan.ScannerDevice) => {
    console.info('scan device found: ' + JSON.stringify(device));
})

scan.off

off(type: 'scanDeviceFound', callback?: Callback<ScannerDevice>): void

取消注册扫描仪设备发现事件回调。使用callback异步回调。

需要权限: ohos.permission.PRINT

系统能力: SystemCapability.Print.PrintFramework

参数:

参数名 类型 必填 说明
type 'scanDeviceFound' 事件类型。
callback Callback<ScannerDevice> 回调函数,返回扫描仪设备发现信息。

错误码:

错误码ID 错误信息
201 Permission denied.

示例:

import { scan } from '@kit.BasicServicesKit';

let callback = (device: scan.ScannerDevice) => {
    console.info('scan device found: ' + JSON.stringify(device));
};
scan.on('scanDeviceFound', callback);
// 取消注册
scan.off('scanDeviceFound', callback);

scan.on

on(type: 'scanDeviceSync', callback: Callback<ScannerSyncDevice>): void

注册扫描仪设备同步事件回调。使用callback异步回调。

需要权限: ohos.permission.MANAGE_PRINT_JOB

系统能力: SystemCapability.Print.PrintFramework

参数:

参数名 类型 必填 说明
type 'scanDeviceSync' 事件类型。
callback Callback<ScannerSyncDevice> 回调函数,返回扫描仪设备同步信息。

错误码:

错误码ID 错误信息
201 Permission denied.

示例:

import { scan } from '@kit.BasicServicesKit';

scan.on('scanDeviceSync', (device: scan.ScannerSyncDevice) => {
    console.info('scan device sync: ' + JSON.stringify(device));
})

scan.off

off(type: 'scanDeviceSync', callback?: Callback<ScannerSyncDevice>): void

取消注册扫描仪设备同步事件回调。使用callback异步回调。

需要权限: ohos.permission.MANAGE_PRINT_JOB

系统能力: SystemCapability.Print.PrintFramework

参数:

参数名 类型 必填 说明
type 'scanDeviceSync' 事件类型。
callback Callback<ScannerSyncDevice> 回调函数,返回扫描仪设备同步信息。

错误码:

错误码ID 错误信息
201 Permission denied.

示例:

import { scan } from '@kit.BasicServicesKit';

let callback = (device: scan.ScannerSyncDevice) => {
    console.info('scan device sync: ' + JSON.stringify(device));
};
scan.on('scanDeviceSync', callback);
// 取消注册
scan.off('scanDeviceSync', callback);