【鸿蒙next教程】驱动开发套件:@ohos.driver.deviceManager (外设管理)
鸿蒙HarmonyOS 5.0的外设管理模块(@ohos.driver.deviceManager)提供设备管理功能,包括查询设备列表(queryDevices)、绑定设备(bindDevice/bindDeviceDriver)和解绑设备(unbindDevice)。
往期鸿蒙5.0全套实战文章必看:(文中附带鸿蒙5.0全栈学习资料)
@ohos.driver.deviceManager (外设管理)
本模块主要提供管理外部设备的相关功能,包括查询设备列表、绑定设备和解除绑定设备。
说明
本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
导入模块
import { deviceManager } from '@kit.DriverDevelopmentKit';
deviceManager.queryDevices
queryDevices(busType?: number): Array<Readonly<Device>>
获取接入主设备的外部设备列表。如果没有设备接入,那么将会返回一个空的列表。
需要权限: ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
系统能力: SystemCapability.Driver.ExternalDevice
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| busType | number | 否 | 设备总线类型,不填则查找所有类型设备。 |
返回值:
| 类型 | 说明 |
|---|---|
| Array<Readonly<Device>> | 设备信息列表。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 201 | The permission check failed. |
| 401 | The parameter check failed. |
| 22900001 | ExternalDeviceManager service exception. |
示例:
import { deviceManager } from '@kit.DriverDevelopmentKit';
try {
let devices : Array<deviceManager.Device> = deviceManager.queryDevices(deviceManager.BusType.USB);
for (let item of devices) {
let device : deviceManager.USBDevice = item as deviceManager.USBDevice;
console.info(`Device id is ${device.deviceId}`)
}
} catch (error) {
console.error(`Failed to query device. Code is ${error.code}, message is ${error.message}`);
}
deviceManager.bindDevice
bindDevice(deviceId: number, onDisconnect: AsyncCallback<number>,
callback: AsyncCallback<{deviceId: number; remote: rpc.IRemoteObject;}>): void;
根据queryDevices()返回的设备信息绑定设备。
需要调用deviceManager.queryDevices()获取设备信息以及device。
需要权限: ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
系统能力: SystemCapability.Driver.ExternalDevice
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| deviceId | number | 是 | 设备ID,通过queryDevices获得。 |
| onDisconnect | AsyncCallback<number> | 是 | 绑定设备断开的回调。 |
| callback | AsyncCallback<{deviceId: number; remote: rpc.IRemoteObject;}> | 是 | 绑定设备的回调,返回绑定设备的通信对象。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 201 | The permission check failed. |
| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. |
| 22900001 | ExternalDeviceManager service exception. |
示例:
import { deviceManager } from '@kit.DriverDevelopmentKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { rpc } from '@kit.IPCKit';
interface DataType {
deviceId : number;
remote : rpc.IRemoteObject;
}
try {
// 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参
deviceManager.bindDevice(12345678, (error : BusinessError, data : number) => {
console.error(`Device is disconnected`);
}, (error : BusinessError, data : DataType) => {
if (error) {
console.error(`bindDevice async fail. Code is ${error.code}, message is ${error.message}`);
return;
}
console.info(`bindDevice success`);
});
} catch (error) {
console.error(`bindDevice fail. Code is ${error.code}, message is ${error.message}`);
}
deviceManager.bindDeviceDriver11+
bindDeviceDriver(deviceId: number, onDisconnect: AsyncCallback<number>,
callback: AsyncCallback<RemoteDeviceDriver>): void;
根据queryDevices()返回的设备信息绑定设备。
需要调用deviceManager.queryDevices()获取设备信息以及device。
需要权限: ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
系统能力: SystemCapability.Driver.ExternalDevice
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| deviceId | number | 是 | 设备ID,通过queryDevices获得。 |
| onDisconnect | AsyncCallback<number> | 是 | 绑定设备断开的回调。 |
| callback | AsyncCallback<RemoteDeviceDriver> | 是 | 指示绑定结果,包括设备 ID 和远程对象。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 201 | The permission check failed. |
| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. |
| 22900001 | ExternalDeviceManager service exception. |
示例:
import { deviceManager } from '@kit.DriverDevelopmentKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { rpc } from '@kit.IPCKit';
try {
// 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参
deviceManager.bindDeviceDriver(12345678, (error : BusinessError, data : number) => {
console.error(`Device is disconnected`);
}, (error : BusinessError, data : deviceManager.RemoteDeviceDriver) => {
if (error) {
console.error(`bindDeviceDriver async fail. Code is ${error.code}, message is ${error.message}`);
return;
}
console.info(`bindDeviceDriver success`);
});
} catch (error) {
console.error(`bindDeviceDriver fail. Code is ${error.code}, message is ${error.message}`);
}
deviceManager.bindDevice
bindDevice(deviceId: number, onDisconnect: AsyncCallback<number>): Promise<{deviceId: number;
remote: rpc.IRemoteObject;}>;
根据queryDevices()返回的设备信息绑定设备。
需要调用deviceManager.queryDevices获取设备信息以及device。
需要权限: ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
系统能力: SystemCapability.Driver.ExternalDevice
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| deviceId | number | 是 | 设备ID,通过queryDevices获得。 |
| onDisconnect | AsyncCallback<number> | 是 | 绑定设备断开的回调。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<{deviceId: number; remote: rpc.IRemoteObject;}> | Promise对象,返回设备ID和IRemoteObject对象。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 201 | The permission check failed. |
| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. |
| 22900001 | ExternalDeviceManager service exception. |
示例:
import { deviceManager } from '@kit.DriverDevelopmentKit';
import { BusinessError } from '@kit.BasicServicesKit';
try {
// 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参
deviceManager.bindDevice(12345678, (error : BusinessError, data : number) => {
console.error(`Device is disconnected`);
}).then(data => {
console.info(`bindDevice success, Device_Id is ${data.deviceId}.
remote is ${data.remote != null ? data.remote.getDescriptor() : "null"}`);
}, (error: BusinessError) => {
console.error(`bindDevice async fail. Code is ${error.code}, message is ${error.message}`);
});
} catch (error) {
console.error(`bindDevice fail. Code is ${error.code}, message is ${error.message}`);
}
deviceManager.bindDeviceDriver11+
bindDeviceDriver(deviceId: number, onDisconnect: AsyncCallback<number>): Promise<RemoteDeviceDriver>;
根据queryDevices()返回的设备信息绑定设备。
需要调用deviceManager.queryDevices获取设备信息以及device。
需要权限: ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
系统能力: SystemCapability.Driver.ExternalDevice
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| deviceId | number | 是 | 设备ID,通过queryDevices获得。 |
| onDisconnect | AsyncCallback<number> | 是 | 绑定设备断开的回调。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<RemoteDeviceDriver> | Promise对象,返回RemoteDeviceDriver对象。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 201 | The permission check failed. |
| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. |
| 22900001 | ExternalDeviceManager service exception. |
示例:
import { deviceManager } from '@kit.DriverDevelopmentKit';
import { BusinessError } from '@kit.BasicServicesKit';
try {
// 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参
deviceManager.bindDeviceDriver(12345678, (error : BusinessError, data : number) => {
console.error(`Device is disconnected`);
}).then((data: deviceManager.RemoteDeviceDriver) => {
console.info(`bindDeviceDriver success, Device_Id is ${data.deviceId}.
remote is ${data.remote != null ? data.remote.getDescriptor() : "null"}`);
}, (error: BusinessError) => {
console.error(`bindDeviceDriver async fail. Code is ${error.code}, message is ${error.message}`);
});
} catch (error) {
console.error(`bindDeviceDriver fail. Code is ${error.code}, message is ${error.message}`);
}
deviceManager.unbindDevice
unbindDevice(deviceId: number, callback: AsyncCallback<number>): void
解除设备绑定。
需要权限:ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
系统能力: SystemCapability.Driver.ExternalDevice
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| deviceId | number | 是 | 设备ID,通过queryDevices获得。 |
| callback | AsyncCallback<number> | 是 | 解绑完成的回调。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 201 | The permission check failed. |
| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
| 22900001 | ExternalDeviceManager service exception. |
示例:
import { deviceManager } from '@kit.DriverDevelopmentKit';
try {
// 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参
deviceManager.unbindDevice(12345678, (error : BusinessError, data : number) => {
if (error) {
console.error(`unbindDevice async fail. Code is ${error.code}, message is ${error.message}`);
return;
}
console.info(`unbindDevice success`);
});
} catch (error) {
console.error(`unbindDevice fail. Code is ${error.code}, message is ${error.message}`);
}
deviceManager.unbindDevice
unbindDevice(deviceId: number): Promise<number>
解除设备绑定。
需要权限:ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
系统能力: SystemCapability.Driver.ExternalDevice
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| deviceId | number | 是 | 设备ID,通过queryDevices获得。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 201 | The permission check failed. |
| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. |
| 22900001 | ExternalDeviceManager service exception. |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<number> | Promise对象,返回设备ID。 |
示例:
import { deviceManager } from '@kit.DriverDevelopmentKit';
import { BusinessError } from '@kit.BasicServicesKit';
try {
// 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参
deviceManager.unbindDevice(12345678).then((data : number) => {
console.info(`unbindDevice success, Device_Id is ${data}.`);
}, (error : BusinessError) => {
console.error(`unbindDevice async fail. Code is ${error.code}, message is ${error.message}`);
});
} catch (error) {
console.error(`unbindDevice fail. Code is ${error.code}, message is ${error.message}`);
}
Device
外设信息。
系统能力: SystemCapability.Driver.ExternalDevice
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
| busType | BusType | 是 | 总线类型。 |
| deviceId | number | 是 | 设备ID。 |
| description | string | 是 | 设备描述。 |
USBDevice
USB设备信息,继承自Device。
系统能力: SystemCapability.Driver.ExternalDevice
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
| vendorId | number | 是 | USB设备Vendor ID。 |
| productId | number | 是 | USB设备Product ID。 |
BusType
设备总线类型。
系统能力: SystemCapability.Driver.ExternalDevice
| 名称 | 值 | 说明 |
|---|---|---|
| USB | 1 | USB总线类型。 |
RemoteDeviceDriver11+
远程设备驱动。
系统能力: SystemCapability.Driver.ExternalDevice
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
| deviceId11+ | number | 是 | 设备ID。 |
| remote11+ | rpc.IRemoteObject | 是 | 远程驱动程序对象。 |
更多推荐




所有评论(0)