1# @ohos.driver.deviceManager (外设管理) 2 3本模块主要提供管理外部设备的相关功能,包括查询设备列表、绑定设备和解除绑定设备。 4 5> **说明:** 6> 7> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8 9## 导入模块 10 11```ts 12import deviceManager from "@ohos.driver.deviceManager"; 13``` 14 15## deviceManager.queryDevices 16 17queryDevices(busType?: number): Array<Readonly<Device>> 18 19获取接入主设备的外部设备列表。如果没有设备接入,那么将会返回一个空的列表。 20 21**需要权限**:ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER 22 23**系统能力:** SystemCapability.Driver.ExternalDevice 24 25**参数:** 26 27| 参数名 | 类型 | 必填 | 说明 | 28| ------- | ------ | ---- | ------------------------------------ | 29| busType | number | 否 | 设备总线类型,不填则查找所有类型设备 | 30 31**返回值:** 32 33| 类型 | 说明 | 34| ---------------------------------------------- | -------------- | 35| Array<Readonly<[Device](#device)>> | 设备信息列表。 | 36 37**错误码:** 38 39| 错误码ID | 错误信息 | 40| -------- | ---------------------------------------- | 41| 401 | The parameter check failed. | 42| 22900001 | ExternalDeviceManager service exception. | 43 44**示例:** 45 46```ts 47import deviceManager from "@ohos.driver.deviceManager"; 48 49 50try { 51 let devices : Array<deviceManager.Device> = deviceManager.queryDevices(deviceManager.BusType.USB); 52 for (let item of devices) { 53 let device : deviceManager.USBDevice = item as deviceManager.USBDevice; 54 console.info(`Device id is ${device.deviceId}`) 55 } 56} catch (error) { 57 console.error(`Failed to query device. Code is ${error.code}, message is ${error.message}`); 58} 59``` 60 61## deviceManager.bindDevice 62 63bindDevice(deviceId: number, onDisconnect: AsyncCallback<number>, 64 callback: AsyncCallback<{deviceId: number, remote: rpc.IRemoteObject}>): void; 65 66根据queryDevices()返回的设备信息绑定设备。 67 68需要调用[deviceManager.queryDevices](#devicemanagerquerydevices)获取设备信息以及device。 69 70**需要权限**:ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER 71 72**系统能力:** SystemCapability.Driver.ExternalDevice 73 74**参数:** 75 76| 参数名 | 类型 | 必填 | 说明 | 77| ------------ | ---------------------------------------------------------------------------------------------------- | ---- | -------------------------------------- | 78| deviceId | number | 是 | 设备ID,通过queryDevices获得 | 79| onDisconnect | AsyncCallback<number> | 是 | 绑定设备断开的回调 | 80| callback | AsyncCallback<{deviceId: number, remote: [rpc.IRemoteObject](./js-apis-rpc.md#iremoteobject)}> | 是 | 绑定设备的回调,返回绑定设备的通信对象 | 81 82**错误码:** 83 84| 错误码ID | 错误信息 | 85| -------- | ---------------------------------------- | 86| 401 | The parameter check failed. | 87| 22900001 | ExternalDeviceManager service exception. | 88 89**示例:** 90 91```ts 92import deviceManager from "@ohos.driver.deviceManager"; 93import { BusinessError } from '@ohos.base'; 94 95try { 96 // 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参 97 deviceManager.bindDevice(12345678, (error : BusinessError, data : number) => { 98 console.error(`Device is disconnected`); 99 }, (error : BusinessError, data: { 100 deviceId : number; 101 remote : rpc.IRemoteObject; 102 }) => { 103 if (error) { 104 console.error(`bindDevice async fail. Code is ${error.code}, message is ${error.message}`); 105 return; 106 } 107 console.info(`bindDevice success`); 108 }); 109} catch (error) { 110 console.error(`bindDevice fail. Code is ${error.code}, message is ${error.message}`); 111} 112``` 113 114## deviceManager.bindDevice 115 116bindDevice(deviceId: number, onDisconnect: AsyncCallback<number>): Promise<{deviceId: number, 117 remote: rpc.IRemoteObject}>; 118 119根据queryDevices()返回的设备信息绑定设备。 120 121需要调用[deviceManager.queryDevices](#devicemanagerquerydevices)获取设备信息以及device。 122 123**需要权限**:ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER 124 125**系统能力:** SystemCapability.Driver.ExternalDevice 126 127**参数:** 128 129| 参数名 | 类型 | 必填 | 说明 | 130| ------------ | --------------------------- | ---- | ---------------------------- | 131| deviceId | number | 是 | 设备ID,通过queryDevices获得 | 132| onDisconnect | AsyncCallback<number> | 是 | 绑定设备断开的回调 | 133 134**返回值:** 135 136| 类型 | 说明 | 137| ---------------------------------------------------------------------------------------------- | -------------------------------------------- | 138| Promise<{deviceId: number, remote: [rpc.IRemoteObject](./js-apis-rpc.md#iremoteobject)}> | Promise对象,返回设备ID和IRemoteObject对象。 | 139 140**错误码:** 141 142| 错误码ID | 错误信息 | 143| -------- | ---------------------------------------- | 144| 401 | The parameter check failed. | 145| 22900001 | ExternalDeviceManager service exception. | 146 147**示例:** 148 149```ts 150import deviceManager from "@ohos.driver.deviceManager"; 151import { BusinessError } from '@ohos.base'; 152 153try { 154 // 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参 155 deviceManager.bindDevice(12345678, (error : BusinessError, data : number) => { 156 console.error(`Device is disconnected`); 157 }).then((data : { 158 deviceId : number; 159 remote : rpc.IRemoteObject; 160 }) => { 161 console.info(`bindDevice success`); 162 }, (error : BusinessError) => { 163 console.error(`bindDevice async fail. Code is ${error.code}, message is ${error.message}`); 164 }); 165} catch (error) { 166 console.error(`bindDevice fail. Code is ${error.code}, message is ${error.message}`); 167} 168``` 169 170## deviceManager.unbindDevice 171 172unbindDevice(deviceId: number, callback: AsyncCallback<number>): void 173 174解除设备绑定。 175 176**需要权限**:ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER 177 178**系统能力:** SystemCapability.Driver.ExternalDevice 179 180**参数:** 181 182| 参数名 | 类型 | 必填 | 说明 | 183| -------- | --------------------------- | ---- | ------------------------------ | 184| deviceId | number | 是 | 设备ID,通过queryDevices获得。 | 185| callback | AsyncCallback<number> | 是 | 解绑完成的回调。 | 186 187**错误码:** 188 189| 错误码ID | 错误信息 | 190| -------- | ---------------------------------------- | 191| 401 | The parameter check failed. | 192| 22900001 | ExternalDeviceManager service exception. | 193 194**示例:** 195 196```ts 197import deviceManager from "@ohos.driver.deviceManager"; 198 199try { 200 // 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参 201 deviceManager.unbindDevice(12345678, (error : BusinessError, data : number) => { 202 if (error) { 203 console.error(`unbindDevice async fail. Code is ${error.code}, message is ${error.message}`); 204 return; 205 } 206 console.info(`unbindDevice success`); 207 }); 208} catch (error) { 209 console.error(`unbindDevice fail. Code is ${error.code}, message is ${error.message}`); 210} 211``` 212## deviceManager.unbindDevice 213 214unbindDevice(deviceId: number): Promise<number> 215 216解除设备绑定。 217 218**需要权限**:ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER 219 220**系统能力:** SystemCapability.Driver.ExternalDevice 221 222**参数:** 223 224| 参数名 | 类型 | 必填 | 说明 | 225| -------- | ------ | ---- | ------------------------------ | 226| deviceId | number | 是 | 设备ID,通过queryDevices获得。 | 227 228**错误码:** 229 230| 错误码ID | 错误信息 | 231| -------- | ---------------------------------------- | 232| 401 | The parameter check failed. | 233| 22900001 | ExternalDeviceManager service exception. | 234 235**返回值:** 236 237| 类型 | 说明 | 238| --------------------- | ------------------------- | 239| Promise<number> | Promise对象,返回设备ID。 | 240 241**示例:** 242 243```ts 244import deviceManager from "@ohos.driver.deviceManager"; 245import { BusinessError } from '@ohos.base'; 246 247try { 248 // 12345678为示例deviceId,应用开发时可通过queryDevices查询到相应设备的deviceId作为入参 249 deviceManager.unbindDevice(12345678).then((data : number) => { 250 console.info(`unbindDevice success`); 251 }, (error : BusinessError) => { 252 console.error(`unbindDevice async fail. Code is ${error.code}, message is ${error.message}`); 253 }); 254} catch (error) { 255 console.error(`unbindDevice fail. Code is ${error.code}, message is ${error.message}`); 256} 257``` 258 259## Device 260 261外设信息。 262 263**系统能力:** SystemCapability.Driver.ExternalDevice 264 265| 名称 | 类型 | 必填 | 说明 | 266| ----------- | ------------------- | ---- | ---------- | 267| busType | [BusType](#bustype) | 是 | 总线类型。 | 268| deviceId | number | 是 | 设备ID。 | 269| description | string | 是 | 设备描述。 | 270 271## USBDevice 272 273USB设备信息。 274 275**系统能力:** SystemCapability.Driver.ExternalDevice 276 277| 名称 | 类型 | 必填 | 说明 | 278| --------- | ------ | ---- | ------------------- | 279| vendorId | number | 是 | USB设备Vendor ID。 | 280| productId | number | 是 | USB设备Product ID。 | 281 282## BusType 283 284设备总线类型。 285 286**系统能力:** SystemCapability.Driver.ExternalDevice 287 288| 名称 | 值 | 说明 | 289| ---- | --- | ------------- | 290| USB | 1 | USB总线类型。 |