1e41f4b71Sopenharmony_ci# @ohos.usbManager (USB管理) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci本模块主要提供管理USB设备的相关功能,包括主设备上查询USB设备列表、批量数据传输、控制命令传输、权限控制等;从设备上端口管理、功能切换及查询等。 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci> **说明:** 6e41f4b71Sopenharmony_ci> 7e41f4b71Sopenharmony_ci> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci## 导入模块 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci```ts 12e41f4b71Sopenharmony_ciimport { usbManager } from '@kit.BasicServicesKit'; 13e41f4b71Sopenharmony_ci``` 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci## usbManager.getDevices 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_cigetDevices(): Array<Readonly<USBDevice>> 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci获取接入主设备的USB设备列表。如果没有设备接入,那么将会返回一个空的列表。 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ci**返回值:** 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci| 类型 | 说明 | 26e41f4b71Sopenharmony_ci| ---------------------------------------------------- | ------- | 27e41f4b71Sopenharmony_ci| Array<Readonly<[USBDevice](#usbdevice)>> | 设备信息列表。 | 28e41f4b71Sopenharmony_ci 29e41f4b71Sopenharmony_ci**示例:** 30e41f4b71Sopenharmony_ci 31e41f4b71Sopenharmony_ci```ts 32e41f4b71Sopenharmony_cilet devicesList: Array<usbManager.USBDevice> = usbManager.getDevices(); 33e41f4b71Sopenharmony_ciconsole.log(`devicesList = ${devicesList}`); 34e41f4b71Sopenharmony_ci/* 35e41f4b71Sopenharmony_cidevicesList 返回的数据结构,此处提供一个简单的示例,如下 36e41f4b71Sopenharmony_ci[ 37e41f4b71Sopenharmony_ci { 38e41f4b71Sopenharmony_ci name: "1-1", 39e41f4b71Sopenharmony_ci serial: "", 40e41f4b71Sopenharmony_ci manufacturerName: "", 41e41f4b71Sopenharmony_ci productName: "", 42e41f4b71Sopenharmony_ci version: "", 43e41f4b71Sopenharmony_ci vendorId: 7531, 44e41f4b71Sopenharmony_ci productId: 2, 45e41f4b71Sopenharmony_ci clazz: 9, 46e41f4b71Sopenharmony_ci subClass: 0, 47e41f4b71Sopenharmony_ci protocol: 1, 48e41f4b71Sopenharmony_ci devAddress: 1, 49e41f4b71Sopenharmony_ci busNum: 1, 50e41f4b71Sopenharmony_ci configs: [ 51e41f4b71Sopenharmony_ci { 52e41f4b71Sopenharmony_ci id: 1, 53e41f4b71Sopenharmony_ci attributes: 224, 54e41f4b71Sopenharmony_ci isRemoteWakeup: true, 55e41f4b71Sopenharmony_ci isSelfPowered: true, 56e41f4b71Sopenharmony_ci maxPower: 0, 57e41f4b71Sopenharmony_ci name: "1-1", 58e41f4b71Sopenharmony_ci interfaces: [ 59e41f4b71Sopenharmony_ci { 60e41f4b71Sopenharmony_ci id: 0, 61e41f4b71Sopenharmony_ci protocol: 0, 62e41f4b71Sopenharmony_ci clazz: 9, 63e41f4b71Sopenharmony_ci subClass: 0, 64e41f4b71Sopenharmony_ci alternateSetting: 0, 65e41f4b71Sopenharmony_ci name: "1-1", 66e41f4b71Sopenharmony_ci endpoints: [ 67e41f4b71Sopenharmony_ci { 68e41f4b71Sopenharmony_ci address: 129, 69e41f4b71Sopenharmony_ci attributes: 3, 70e41f4b71Sopenharmony_ci interval: 12, 71e41f4b71Sopenharmony_ci maxPacketSize: 4, 72e41f4b71Sopenharmony_ci direction: 128, 73e41f4b71Sopenharmony_ci number: 1, 74e41f4b71Sopenharmony_ci type: 3, 75e41f4b71Sopenharmony_ci interfaceId: 0, 76e41f4b71Sopenharmony_ci }, 77e41f4b71Sopenharmony_ci ], 78e41f4b71Sopenharmony_ci }, 79e41f4b71Sopenharmony_ci ], 80e41f4b71Sopenharmony_ci }, 81e41f4b71Sopenharmony_ci ], 82e41f4b71Sopenharmony_ci }, 83e41f4b71Sopenharmony_ci] 84e41f4b71Sopenharmony_ci*/ 85e41f4b71Sopenharmony_ci``` 86e41f4b71Sopenharmony_ci 87e41f4b71Sopenharmony_ci## usbManager.connectDevice 88e41f4b71Sopenharmony_ci 89e41f4b71Sopenharmony_ciconnectDevice(device: USBDevice): Readonly<USBDevicePipe> 90e41f4b71Sopenharmony_ci 91e41f4b71Sopenharmony_ci根据getDevices()返回的设备信息打开USB设备。 92e41f4b71Sopenharmony_ci 93e41f4b71Sopenharmony_ci需要调用[usbManager.getDevices](#usbmanagergetdevices)获取设备信息以及device,再调用[usbManager.requestRight](#usbmanagerrequestright)请求使用该设备的权限。 94e41f4b71Sopenharmony_ci 95e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 96e41f4b71Sopenharmony_ci 97e41f4b71Sopenharmony_ci**参数:** 98e41f4b71Sopenharmony_ci 99e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 100e41f4b71Sopenharmony_ci| -------- | -------- | -------- | ---------------- | 101e41f4b71Sopenharmony_ci| device | [USBDevice](#usbdevice) | 是 | USB设备信息,用getDevices获取的busNum和devAddress确定设备,当前其他属性不做处理。 | 102e41f4b71Sopenharmony_ci 103e41f4b71Sopenharmony_ci**返回值:** 104e41f4b71Sopenharmony_ci 105e41f4b71Sopenharmony_ci| 类型 | 说明 | 106e41f4b71Sopenharmony_ci| -------- | -------- | 107e41f4b71Sopenharmony_ci| Readonly<[USBDevicePipe](#usbdevicepipe)> | 指定的传输通道对象。 | 108e41f4b71Sopenharmony_ci 109e41f4b71Sopenharmony_ci**错误码:** 110e41f4b71Sopenharmony_ci 111e41f4b71Sopenharmony_ci以下错误码的详细介绍参见[USB服务错误码](errorcode-usb.md)。 112e41f4b71Sopenharmony_ci 113e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 114e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 115e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | 116e41f4b71Sopenharmony_ci| 14400001 | Permission denied. Call requestRight to get the permission first. | 117e41f4b71Sopenharmony_ci 118e41f4b71Sopenharmony_ci**示例:** 119e41f4b71Sopenharmony_ci 120e41f4b71Sopenharmony_ci```ts 121e41f4b71Sopenharmony_cilet devicesList: Array<usbManager.USBDevice> = usbManager.getDevices(); 122e41f4b71Sopenharmony_ciif (devicesList.length == 0) { 123e41f4b71Sopenharmony_ci console.log(`device list is empty`); 124e41f4b71Sopenharmony_ci} 125e41f4b71Sopenharmony_ci 126e41f4b71Sopenharmony_cilet device: usbManager.USBDevice = devicesList[0]; 127e41f4b71Sopenharmony_ciusbManager.requestRight(device.name); 128e41f4b71Sopenharmony_cilet devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(device); 129e41f4b71Sopenharmony_ciconsole.log(`devicepipe = ${devicepipe}`); 130e41f4b71Sopenharmony_ci``` 131e41f4b71Sopenharmony_ci 132e41f4b71Sopenharmony_ci## usbManager.hasRight 133e41f4b71Sopenharmony_ci 134e41f4b71Sopenharmony_cihasRight(deviceName: string): boolean 135e41f4b71Sopenharmony_ci 136e41f4b71Sopenharmony_ci判断是否有权访问该设备。 137e41f4b71Sopenharmony_ci 138e41f4b71Sopenharmony_ci如果“使用者”(如各种App或系统)有权访问设备则返回true;无权访问设备则返回false。 139e41f4b71Sopenharmony_ci 140e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 141e41f4b71Sopenharmony_ci 142e41f4b71Sopenharmony_ci**参数:** 143e41f4b71Sopenharmony_ci 144e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 145e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 146e41f4b71Sopenharmony_ci| deviceName | string | 是 | 设备名称,来自getDevices获取的设备列表。 | 147e41f4b71Sopenharmony_ci 148e41f4b71Sopenharmony_ci**错误码:** 149e41f4b71Sopenharmony_ci 150e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。 151e41f4b71Sopenharmony_ci 152e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 153e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 154e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | 155e41f4b71Sopenharmony_ci 156e41f4b71Sopenharmony_ci**返回值:** 157e41f4b71Sopenharmony_ci 158e41f4b71Sopenharmony_ci| 类型 | 说明 | 159e41f4b71Sopenharmony_ci| -------- | -------- | 160e41f4b71Sopenharmony_ci| boolean | true表示有访问设备的权限,false表示没有访问设备的权限。 | 161e41f4b71Sopenharmony_ci 162e41f4b71Sopenharmony_ci**示例:** 163e41f4b71Sopenharmony_ci 164e41f4b71Sopenharmony_ci```ts 165e41f4b71Sopenharmony_cilet devicesList: Array<usbManager.USBDevice> = usbManager.getDevices(); 166e41f4b71Sopenharmony_ciif (devicesList.length == 0) { 167e41f4b71Sopenharmony_ci console.log(`device list is empty`); 168e41f4b71Sopenharmony_ci} 169e41f4b71Sopenharmony_ci 170e41f4b71Sopenharmony_cilet device: usbManager.USBDevice = devicesList[0]; 171e41f4b71Sopenharmony_ciusbManager.requestRight(device.name); 172e41f4b71Sopenharmony_cilet right: boolean = usbManager.hasRight(device.name); 173e41f4b71Sopenharmony_ciconsole.log(`${right}`); 174e41f4b71Sopenharmony_ci``` 175e41f4b71Sopenharmony_ci 176e41f4b71Sopenharmony_ci## usbManager.requestRight 177e41f4b71Sopenharmony_ci 178e41f4b71Sopenharmony_cirequestRight(deviceName: string): Promise<boolean> 179e41f4b71Sopenharmony_ci 180e41f4b71Sopenharmony_ci请求软件包的临时权限以访问设备。使用Promise异步回调。系统应用默认拥有访问设备权限,无需调用此接口申请。 181e41f4b71Sopenharmony_ci 182e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 183e41f4b71Sopenharmony_ci 184e41f4b71Sopenharmony_ci**参数:** 185e41f4b71Sopenharmony_ci 186e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 187e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 188e41f4b71Sopenharmony_ci| deviceName | string | 是 | 设备名称,来自getDevices获取的设备列表。| 189e41f4b71Sopenharmony_ci 190e41f4b71Sopenharmony_ci**错误码:** 191e41f4b71Sopenharmony_ci 192e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。 193e41f4b71Sopenharmony_ci 194e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 195e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 196e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | 197e41f4b71Sopenharmony_ci 198e41f4b71Sopenharmony_ci**返回值:** 199e41f4b71Sopenharmony_ci 200e41f4b71Sopenharmony_ci| 类型 | 说明 | 201e41f4b71Sopenharmony_ci| -------- | -------- | 202e41f4b71Sopenharmony_ci| Promise<boolean> | Promise对象,返回临时权限的申请结果。返回true表示临时权限申请成功;返回false则表示临时权限申请失败。 | 203e41f4b71Sopenharmony_ci 204e41f4b71Sopenharmony_ci**示例:** 205e41f4b71Sopenharmony_ci 206e41f4b71Sopenharmony_ci```ts 207e41f4b71Sopenharmony_cilet devicesList: Array<usbManager.USBDevice> = usbManager.getDevices(); 208e41f4b71Sopenharmony_ciif (devicesList.length == 0) { 209e41f4b71Sopenharmony_ci console.log(`device list is empty`); 210e41f4b71Sopenharmony_ci} 211e41f4b71Sopenharmony_ci 212e41f4b71Sopenharmony_cilet device: usbManager.USBDevice = devicesList[0]; 213e41f4b71Sopenharmony_ciusbManager.requestRight(device.name).then(ret => { 214e41f4b71Sopenharmony_ci console.log(`requestRight = ${ret}`); 215e41f4b71Sopenharmony_ci}); 216e41f4b71Sopenharmony_ci``` 217e41f4b71Sopenharmony_ci 218e41f4b71Sopenharmony_ci## usbManager.removeRight 219e41f4b71Sopenharmony_ci 220e41f4b71Sopenharmony_ciremoveRight(deviceName: string): boolean 221e41f4b71Sopenharmony_ci 222e41f4b71Sopenharmony_ci移除软件包访问设备的权限。系统应用默认拥有访问设备权限,调用此接口不会产生影响。 223e41f4b71Sopenharmony_ci 224e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 225e41f4b71Sopenharmony_ci 226e41f4b71Sopenharmony_ci**参数:** 227e41f4b71Sopenharmony_ci 228e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 229e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 230e41f4b71Sopenharmony_ci| deviceName | string | 是 | 设备名称,来自getDevices获取的设备列表。| 231e41f4b71Sopenharmony_ci 232e41f4b71Sopenharmony_ci**错误码:** 233e41f4b71Sopenharmony_ci 234e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。 235e41f4b71Sopenharmony_ci 236e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 237e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 238e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | 239e41f4b71Sopenharmony_ci 240e41f4b71Sopenharmony_ci**返回值:** 241e41f4b71Sopenharmony_ci 242e41f4b71Sopenharmony_ci| 类型 | 说明 | 243e41f4b71Sopenharmony_ci| -------- | -------- | 244e41f4b71Sopenharmony_ci| boolean | 返回权限移除结果。返回true表示权限移除成功;返回false则表示权限移除失败。 | 245e41f4b71Sopenharmony_ci 246e41f4b71Sopenharmony_ci**示例:** 247e41f4b71Sopenharmony_ci 248e41f4b71Sopenharmony_ci```ts 249e41f4b71Sopenharmony_cilet devicesList: Array<usbManager.USBDevice> = usbManager.getDevices(); 250e41f4b71Sopenharmony_ciif (devicesList.length == 0) { 251e41f4b71Sopenharmony_ci console.log(`device list is empty`); 252e41f4b71Sopenharmony_ci} 253e41f4b71Sopenharmony_ci 254e41f4b71Sopenharmony_cilet device: usbManager.USBDevice = devicesList[0]; 255e41f4b71Sopenharmony_ciif (usbManager.removeRight(device.name)) { 256e41f4b71Sopenharmony_ci console.log(`Succeed in removing right`); 257e41f4b71Sopenharmony_ci} 258e41f4b71Sopenharmony_ci``` 259e41f4b71Sopenharmony_ci 260e41f4b71Sopenharmony_ci## usbManager.claimInterface 261e41f4b71Sopenharmony_ci 262e41f4b71Sopenharmony_ciclaimInterface(pipe: USBDevicePipe, iface: USBInterface, force ?: boolean): number 263e41f4b71Sopenharmony_ci 264e41f4b71Sopenharmony_ci注册通信接口。 265e41f4b71Sopenharmony_ci 266e41f4b71Sopenharmony_ci需要调用[usbManager.getDevices](#usbmanagergetdevices)获取设备信息以及interfaces;调用[usbManager.requestRight](#usbmanagerrequestright)获取设备请求权限;调用[usbManager.connectDevice](#usbmanagerconnectdevice)接口得到devicepipe作为参数。 267e41f4b71Sopenharmony_ci 268e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 269e41f4b71Sopenharmony_ci 270e41f4b71Sopenharmony_ci**参数:** 271e41f4b71Sopenharmony_ci 272e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 273e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 274e41f4b71Sopenharmony_ci| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址,需要调用connectDevice获取。| 275e41f4b71Sopenharmony_ci| iface | [USBInterface](#usbinterface) | 是 | 用于确定需要获取接口的索引,需要调用getDevices获取设备信息并通过id确定唯一接口。| 276e41f4b71Sopenharmony_ci| force | boolean | 否 | 可选参数,是否强制获取。默认值为false ,表示不强制获取,用户按需选择。| 277e41f4b71Sopenharmony_ci 278e41f4b71Sopenharmony_ci**错误码:** 279e41f4b71Sopenharmony_ci 280e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。 281e41f4b71Sopenharmony_ci 282e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 283e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 284e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | 285e41f4b71Sopenharmony_ci 286e41f4b71Sopenharmony_ci**返回值:** 287e41f4b71Sopenharmony_ci 288e41f4b71Sopenharmony_ci| 类型 | 说明 | 289e41f4b71Sopenharmony_ci| -------- | -------- | 290e41f4b71Sopenharmony_ci| number | 注册通信接口成功返回0;注册通信接口失败返回其他错误码。 | 291e41f4b71Sopenharmony_ci 292e41f4b71Sopenharmony_ci**示例:** 293e41f4b71Sopenharmony_ci 294e41f4b71Sopenharmony_ci```ts 295e41f4b71Sopenharmony_cilet devicesList: Array<usbManager.USBDevice> = usbManager.getDevices(); 296e41f4b71Sopenharmony_ciif (devicesList.length == 0) { 297e41f4b71Sopenharmony_ci console.log(`device list is empty`); 298e41f4b71Sopenharmony_ci} 299e41f4b71Sopenharmony_ci 300e41f4b71Sopenharmony_cilet device: usbManager.USBDevice = devicesList[0]; 301e41f4b71Sopenharmony_ciusbManager.requestRight(device.name); 302e41f4b71Sopenharmony_cilet devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(device); 303e41f4b71Sopenharmony_cilet interfaces: usbManager.USBInterface = device.configs[0].interfaces[0]; 304e41f4b71Sopenharmony_cilet ret: number= usbManager.claimInterface(devicepipe, interfaces); 305e41f4b71Sopenharmony_ciconsole.log(`claimInterface = ${ret}`); 306e41f4b71Sopenharmony_ci``` 307e41f4b71Sopenharmony_ci 308e41f4b71Sopenharmony_ci## usbManager.releaseInterface 309e41f4b71Sopenharmony_ci 310e41f4b71Sopenharmony_cireleaseInterface(pipe: USBDevicePipe, iface: USBInterface): number 311e41f4b71Sopenharmony_ci 312e41f4b71Sopenharmony_ci释放注册过的通信接口。 313e41f4b71Sopenharmony_ci 314e41f4b71Sopenharmony_ci需要调用[usbManager.claimInterface](#usbmanagerclaiminterface)先获取接口,才能使用此方法释放接口。 315e41f4b71Sopenharmony_ci 316e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 317e41f4b71Sopenharmony_ci 318e41f4b71Sopenharmony_ci**参数:** 319e41f4b71Sopenharmony_ci 320e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 321e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 322e41f4b71Sopenharmony_ci| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址,需要调用connectDevice获取。| 323e41f4b71Sopenharmony_ci| iface | [USBInterface](#usbinterface) | 是 | 用于确定需要释放接口的索引,需要调用getDevices获取设备信息并通过id确定唯一接口。| 324e41f4b71Sopenharmony_ci 325e41f4b71Sopenharmony_ci**错误码:** 326e41f4b71Sopenharmony_ci 327e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。 328e41f4b71Sopenharmony_ci 329e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 330e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 331e41f4b71Sopenharmony_ci| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified.2.Incorrect parameter types. | 332e41f4b71Sopenharmony_ci 333e41f4b71Sopenharmony_ci**返回值:** 334e41f4b71Sopenharmony_ci 335e41f4b71Sopenharmony_ci| 类型 | 说明 | 336e41f4b71Sopenharmony_ci| -------- | -------- | 337e41f4b71Sopenharmony_ci| number | 释放接口成功返回0;释放接口失败返回其他错误码。 | 338e41f4b71Sopenharmony_ci 339e41f4b71Sopenharmony_ci**示例:** 340e41f4b71Sopenharmony_ci 341e41f4b71Sopenharmony_ci```ts 342e41f4b71Sopenharmony_cilet devicesList: Array<usbManager.USBDevice> = usbManager.getDevices(); 343e41f4b71Sopenharmony_ciif (devicesList.length == 0) { 344e41f4b71Sopenharmony_ci console.log(`device list is empty`); 345e41f4b71Sopenharmony_ci} 346e41f4b71Sopenharmony_ci 347e41f4b71Sopenharmony_cilet device: usbManager.USBDevice = devicesList[0]; 348e41f4b71Sopenharmony_ciusbManager.requestRight(device.name); 349e41f4b71Sopenharmony_cilet devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(device); 350e41f4b71Sopenharmony_cilet interfaces: usbManager.USBInterface = device.configs[0].interfaces[0]; 351e41f4b71Sopenharmony_cilet ret: number = usbManager.claimInterface(devicepipe, interfaces); 352e41f4b71Sopenharmony_ciret = usbManager.releaseInterface(devicepipe, interfaces); 353e41f4b71Sopenharmony_ciconsole.log(`releaseInterface = ${ret}`); 354e41f4b71Sopenharmony_ci``` 355e41f4b71Sopenharmony_ci 356e41f4b71Sopenharmony_ci## usbManager.setConfiguration 357e41f4b71Sopenharmony_ci 358e41f4b71Sopenharmony_cisetConfiguration(pipe: USBDevicePipe, config: USBConfiguration): number 359e41f4b71Sopenharmony_ci 360e41f4b71Sopenharmony_ci设置设备配置。 361e41f4b71Sopenharmony_ci 362e41f4b71Sopenharmony_ci需要调用[usbManager.getDevices](#usbmanagergetdevices)获取设备信息以及config;调用[usbManager.requestRight](#usbmanagerrequestright)获取设备请求权限;调用[usbManager.connectDevice](#usbmanagerconnectdevice)得到devicepipe作为参数。 363e41f4b71Sopenharmony_ci 364e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 365e41f4b71Sopenharmony_ci 366e41f4b71Sopenharmony_ci**参数:** 367e41f4b71Sopenharmony_ci 368e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 369e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 370e41f4b71Sopenharmony_ci| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址,需要调用connectDevice获取。| 371e41f4b71Sopenharmony_ci| config | [USBConfiguration](#usbconfiguration) | 是 | 用于确定需要设置的配置,需要调用getDevices获取设备信息并通过id用于确定唯一设置。| 372e41f4b71Sopenharmony_ci 373e41f4b71Sopenharmony_ci**错误码:** 374e41f4b71Sopenharmony_ci 375e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。 376e41f4b71Sopenharmony_ci 377e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 378e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 379e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | 380e41f4b71Sopenharmony_ci 381e41f4b71Sopenharmony_ci**返回值:** 382e41f4b71Sopenharmony_ci 383e41f4b71Sopenharmony_ci| 类型 | 说明 | 384e41f4b71Sopenharmony_ci| -------- | -------- | 385e41f4b71Sopenharmony_ci| number | 设置设备配置成功返回0;设置设备配置失败返回其他错误码。 | 386e41f4b71Sopenharmony_ci 387e41f4b71Sopenharmony_ci**示例:** 388e41f4b71Sopenharmony_ci 389e41f4b71Sopenharmony_ci```ts 390e41f4b71Sopenharmony_cilet devicesList: Array<usbManager.USBDevice> = usbManager.getDevices(); 391e41f4b71Sopenharmony_ciif (devicesList.length == 0) { 392e41f4b71Sopenharmony_ci console.log(`device list is empty`); 393e41f4b71Sopenharmony_ci} 394e41f4b71Sopenharmony_ci 395e41f4b71Sopenharmony_cilet device: usbManager.USBDevice = devicesList[0]; 396e41f4b71Sopenharmony_ciusbManager.requestRight(device.name); 397e41f4b71Sopenharmony_cilet devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(device); 398e41f4b71Sopenharmony_cilet config: usbManager.USBConfiguration = device.configs[0]; 399e41f4b71Sopenharmony_cilet ret: number= usbManager.setConfiguration(devicepipe, config); 400e41f4b71Sopenharmony_ciconsole.log(`setConfiguration = ${ret}`); 401e41f4b71Sopenharmony_ci``` 402e41f4b71Sopenharmony_ci 403e41f4b71Sopenharmony_ci## usbManager.setInterface 404e41f4b71Sopenharmony_ci 405e41f4b71Sopenharmony_cisetInterface(pipe: USBDevicePipe, iface: USBInterface): number 406e41f4b71Sopenharmony_ci 407e41f4b71Sopenharmony_ci设置设备接口。 408e41f4b71Sopenharmony_ci 409e41f4b71Sopenharmony_ci需要调用[usbManager.getDevices](#usbmanagergetdevices)获取设备列表以及interfaces;调用[usbManager.requestRight](#usbmanagerrequestright)获取设备请求权限;调用[usbManager.connectDevice](#usbmanagerconnectdevice)得到devicepipe作为参数;调用[usbManager.claimInterface](#usbmanagerclaiminterface)注册通信接口。 410e41f4b71Sopenharmony_ci 411e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 412e41f4b71Sopenharmony_ci 413e41f4b71Sopenharmony_ci**参数:** 414e41f4b71Sopenharmony_ci 415e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 416e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 417e41f4b71Sopenharmony_ci| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址,需要调用connectDevice获取。| 418e41f4b71Sopenharmony_ci| iface | [USBInterface](#usbinterface) | 是 | 用于确定需要设置的接口,需要调用getDevices获取设备信息并通过id和alternateSetting确定唯一接口。| 419e41f4b71Sopenharmony_ci 420e41f4b71Sopenharmony_ci**错误码:** 421e41f4b71Sopenharmony_ci 422e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。 423e41f4b71Sopenharmony_ci 424e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 425e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 426e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | 427e41f4b71Sopenharmony_ci 428e41f4b71Sopenharmony_ci**返回值:** 429e41f4b71Sopenharmony_ci 430e41f4b71Sopenharmony_ci| 类型 | 说明 | 431e41f4b71Sopenharmony_ci| -------- | -------- | 432e41f4b71Sopenharmony_ci| number | 设置设备接口成功返回0;设置设备接口失败返回其他错误码。 | 433e41f4b71Sopenharmony_ci 434e41f4b71Sopenharmony_ci**示例:** 435e41f4b71Sopenharmony_ci 436e41f4b71Sopenharmony_ci```ts 437e41f4b71Sopenharmony_cilet devicesList: Array<usbManager.USBDevice> = usbManager.getDevices(); 438e41f4b71Sopenharmony_ciif (devicesList.length == 0) { 439e41f4b71Sopenharmony_ci console.log(`device list is empty`); 440e41f4b71Sopenharmony_ci} 441e41f4b71Sopenharmony_ci 442e41f4b71Sopenharmony_cilet device: usbManager.USBDevice = devicesList[0]; 443e41f4b71Sopenharmony_ciusbManager.requestRight(device.name); 444e41f4b71Sopenharmony_cilet devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(device); 445e41f4b71Sopenharmony_cilet interfaces: usbManager.USBInterface = device.configs[0].interfaces[0]; 446e41f4b71Sopenharmony_cilet ret: number = usbManager.claimInterface(devicepipe, interfaces); 447e41f4b71Sopenharmony_ciret = usbManager.setInterface(devicepipe, interfaces); 448e41f4b71Sopenharmony_ciconsole.log(`setInterface = ${ret}`); 449e41f4b71Sopenharmony_ci``` 450e41f4b71Sopenharmony_ci 451e41f4b71Sopenharmony_ci## usbManager.getRawDescriptor 452e41f4b71Sopenharmony_ci 453e41f4b71Sopenharmony_cigetRawDescriptor(pipe: USBDevicePipe): Uint8Array 454e41f4b71Sopenharmony_ci 455e41f4b71Sopenharmony_ci获取原始的USB描述符。 456e41f4b71Sopenharmony_ci 457e41f4b71Sopenharmony_ci需要调用[usbManager.getDevices](#usbmanagergetdevices)获取设备列表;调用[usbManager.requestRight](#usbmanagerrequestright)获取设备请求权限;调用[usbManager.connectDevice](#usbmanagerconnectdevice)接口得到devicepipe作为参数。 458e41f4b71Sopenharmony_ci 459e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 460e41f4b71Sopenharmony_ci 461e41f4b71Sopenharmony_ci**参数:** 462e41f4b71Sopenharmony_ci 463e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 464e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 465e41f4b71Sopenharmony_ci| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址,需要调用connectDevice获取。| 466e41f4b71Sopenharmony_ci 467e41f4b71Sopenharmony_ci**错误码:** 468e41f4b71Sopenharmony_ci 469e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。 470e41f4b71Sopenharmony_ci 471e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 472e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 473e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | 474e41f4b71Sopenharmony_ci 475e41f4b71Sopenharmony_ci**返回值:** 476e41f4b71Sopenharmony_ci 477e41f4b71Sopenharmony_ci| 类型 | 说明 | 478e41f4b71Sopenharmony_ci| -------- | -------- | 479e41f4b71Sopenharmony_ci| Uint8Array | 返回获取的原始数据;失败返回undefined。 | 480e41f4b71Sopenharmony_ci 481e41f4b71Sopenharmony_ci**示例:** 482e41f4b71Sopenharmony_ci 483e41f4b71Sopenharmony_ci```ts 484e41f4b71Sopenharmony_cilet devicesList: Array<usbManager.USBDevice> = usbManager.getDevices(); 485e41f4b71Sopenharmony_ciif (devicesList.length == 0) { 486e41f4b71Sopenharmony_ci console.log(`device list is empty`); 487e41f4b71Sopenharmony_ci} 488e41f4b71Sopenharmony_ci 489e41f4b71Sopenharmony_ciusbManager.requestRight(devicesList[0].name); 490e41f4b71Sopenharmony_cilet devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(devicesList[0]); 491e41f4b71Sopenharmony_cilet ret: Uint8Array = usbManager.getRawDescriptor(devicepipe); 492e41f4b71Sopenharmony_ci``` 493e41f4b71Sopenharmony_ci 494e41f4b71Sopenharmony_ci## usbManager.getFileDescriptor 495e41f4b71Sopenharmony_ci 496e41f4b71Sopenharmony_cigetFileDescriptor(pipe: USBDevicePipe): number 497e41f4b71Sopenharmony_ci 498e41f4b71Sopenharmony_ci获取文件描述符。 499e41f4b71Sopenharmony_ci 500e41f4b71Sopenharmony_ci需要调用[usbManager.getDevices](#usbmanagergetdevices)获取设备列表;调用[usbManager.requestRight](#usbmanagerrequestright)获取设备请求权限;调用[usbManager.connectDevice](#usbmanagerconnectdevice)接口得到devicepipe作为参数。 501e41f4b71Sopenharmony_ci 502e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 503e41f4b71Sopenharmony_ci 504e41f4b71Sopenharmony_ci**参数:** 505e41f4b71Sopenharmony_ci 506e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 507e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 508e41f4b71Sopenharmony_ci| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址,需要调用connectDevice获取。| 509e41f4b71Sopenharmony_ci 510e41f4b71Sopenharmony_ci**错误码:** 511e41f4b71Sopenharmony_ci 512e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。 513e41f4b71Sopenharmony_ci 514e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 515e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 516e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | 517e41f4b71Sopenharmony_ci 518e41f4b71Sopenharmony_ci**返回值:** 519e41f4b71Sopenharmony_ci 520e41f4b71Sopenharmony_ci| 类型 | 说明 | 521e41f4b71Sopenharmony_ci| ------ | -------------------- | 522e41f4b71Sopenharmony_ci| number | 返回设备对应的文件描述符;失败返回-1。 | 523e41f4b71Sopenharmony_ci 524e41f4b71Sopenharmony_ci**示例:** 525e41f4b71Sopenharmony_ci 526e41f4b71Sopenharmony_ci```ts 527e41f4b71Sopenharmony_cilet devicesList: Array<usbManager.USBDevice> = usbManager.getDevices(); 528e41f4b71Sopenharmony_ciif (devicesList.length == 0) { 529e41f4b71Sopenharmony_ci console.log(`device list is empty`); 530e41f4b71Sopenharmony_ci} 531e41f4b71Sopenharmony_ci 532e41f4b71Sopenharmony_ciusbManager.requestRight(devicesList[0].name); 533e41f4b71Sopenharmony_cilet devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(devicesList[0]); 534e41f4b71Sopenharmony_cilet ret: number = usbManager.getFileDescriptor(devicepipe); 535e41f4b71Sopenharmony_ci``` 536e41f4b71Sopenharmony_ci 537e41f4b71Sopenharmony_ci## usbManager.controlTransfer<sup>(deprecated)</sup> 538e41f4b71Sopenharmony_ci 539e41f4b71Sopenharmony_cicontrolTransfer(pipe: USBDevicePipe, controlparam: USBControlParams, timeout ?: number): Promise<number> 540e41f4b71Sopenharmony_ci 541e41f4b71Sopenharmony_ci控制传输。 542e41f4b71Sopenharmony_ci 543e41f4b71Sopenharmony_ci需要调用[usbManager.getDevices](#usbmanagergetdevices)获取设备列表;调用[usbManager.requestRight](#usbmanagerrequestright)获取设备请求权限;调用[usbManager.connectDevice](#usbmanagerconnectdevice)接口得到devicepipe作为参数。 544e41f4b71Sopenharmony_ci 545e41f4b71Sopenharmony_ci**说明:** 546e41f4b71Sopenharmony_ci 547e41f4b71Sopenharmony_ci> 从 API version 9开始支持,从API version 12开始废弃。建议使用 [usbControlTransfer](#usbmanagerusbcontroltransfer12) 替代。 548e41f4b71Sopenharmony_ci 549e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 550e41f4b71Sopenharmony_ci 551e41f4b71Sopenharmony_ci**参数:** 552e41f4b71Sopenharmony_ci 553e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 554e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 555e41f4b71Sopenharmony_ci| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定设备,需要调用connectDevice获取。| 556e41f4b71Sopenharmony_ci| controlparam | [USBControlParams](#usbcontrolparams) | 是 | 控制传输参数,按需设置参数,参数传参类型请参考USB协议。| 557e41f4b71Sopenharmony_ci| timeout | number | 否 | 超时时间(单位:ms),可选参数,默认为0不超时,用户按需选择 。 | 558e41f4b71Sopenharmony_ci 559e41f4b71Sopenharmony_ci**错误码:** 560e41f4b71Sopenharmony_ci 561e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。 562e41f4b71Sopenharmony_ci 563e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 564e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 565e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | 566e41f4b71Sopenharmony_ci 567e41f4b71Sopenharmony_ci**返回值:** 568e41f4b71Sopenharmony_ci 569e41f4b71Sopenharmony_ci| 类型 | 说明 | 570e41f4b71Sopenharmony_ci| -------- | -------- | 571e41f4b71Sopenharmony_ci| Promise<number> | Promise对象,获取传输或接收到的数据块大小。失败返回-1。 | 572e41f4b71Sopenharmony_ci 573e41f4b71Sopenharmony_ci**示例:** 574e41f4b71Sopenharmony_ci 575e41f4b71Sopenharmony_ci```ts 576e41f4b71Sopenharmony_ciclass PARA { 577e41f4b71Sopenharmony_ci request: number = 0 578e41f4b71Sopenharmony_ci reqType: usbManager.USBControlRequestType = 0 579e41f4b71Sopenharmony_ci target: usbManager.USBRequestTargetType = 0 580e41f4b71Sopenharmony_ci value: number = 0 581e41f4b71Sopenharmony_ci index: number = 0 582e41f4b71Sopenharmony_ci data: Uint8Array = new Uint8Array() 583e41f4b71Sopenharmony_ci} 584e41f4b71Sopenharmony_ci 585e41f4b71Sopenharmony_cilet param: PARA = { 586e41f4b71Sopenharmony_ci request: 0x06, 587e41f4b71Sopenharmony_ci reqType: 0x80, 588e41f4b71Sopenharmony_ci target:0, 589e41f4b71Sopenharmony_ci value: 0x01 << 8 | 0, 590e41f4b71Sopenharmony_ci index: 0, 591e41f4b71Sopenharmony_ci data: new Uint8Array(18) 592e41f4b71Sopenharmony_ci}; 593e41f4b71Sopenharmony_ci 594e41f4b71Sopenharmony_cilet devicesList: Array<usbManager.USBDevice> = usbManager.getDevices(); 595e41f4b71Sopenharmony_ciif (devicesList.length == 0) { 596e41f4b71Sopenharmony_ci console.log(`device list is empty`); 597e41f4b71Sopenharmony_ci} 598e41f4b71Sopenharmony_ci 599e41f4b71Sopenharmony_ciusbManager.requestRight(devicesList[0].name); 600e41f4b71Sopenharmony_cilet devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(devicesList[0]); 601e41f4b71Sopenharmony_ciusbManager.controlTransfer(devicepipe, param).then((ret: number) => { 602e41f4b71Sopenharmony_ciconsole.log(`controlTransfer = ${ret}`); 603e41f4b71Sopenharmony_ci}) 604e41f4b71Sopenharmony_ci``` 605e41f4b71Sopenharmony_ci 606e41f4b71Sopenharmony_ci## usbManager.usbControlTransfer<sup>12+</sup> 607e41f4b71Sopenharmony_ci 608e41f4b71Sopenharmony_ciusbControlTransfer(pipe: USBDevicePipe, requestparam: USBDeviceRequestParams, timeout ?: number): Promise<number> 609e41f4b71Sopenharmony_ci 610e41f4b71Sopenharmony_ci控制传输。 611e41f4b71Sopenharmony_ci 612e41f4b71Sopenharmony_ci需要调用[usbManager.getDevices](#usbmanagergetdevices)获取设备列表;调用[usbManager.requestRight](#usbmanagerrequestright)获取设备请求权限;调用[usbManager.connectDevice](#usbmanagerconnectdevice)接口得到devicepipe作为参数。 613e41f4b71Sopenharmony_ci 614e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 615e41f4b71Sopenharmony_ci 616e41f4b71Sopenharmony_ci**参数:** 617e41f4b71Sopenharmony_ci 618e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 619e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 620e41f4b71Sopenharmony_ci| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定设备。 | 621e41f4b71Sopenharmony_ci| requestparam | [USBDeviceRequestParams](#usbdevicerequestparams12) | 是 | 控制传输参数,按需设置参数,参数传参类型请参考USB协议。 | 622e41f4b71Sopenharmony_ci| timeout | number | 否 | 超时时间(单位:ms),可选参数,默认为0不超时。 | 623e41f4b71Sopenharmony_ci 624e41f4b71Sopenharmony_ci**错误码:** 625e41f4b71Sopenharmony_ci 626e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。 627e41f4b71Sopenharmony_ci 628e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 629e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 630e41f4b71Sopenharmony_ci| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified.2.Incorrect parameter types | 631e41f4b71Sopenharmony_ci 632e41f4b71Sopenharmony_ci**返回值:** 633e41f4b71Sopenharmony_ci 634e41f4b71Sopenharmony_ci| 类型 | 说明 | 635e41f4b71Sopenharmony_ci| -------- | -------- | 636e41f4b71Sopenharmony_ci| Promise<number> | Promise对象,获取传输或接收到的数据块大小。失败返回-1。 | 637e41f4b71Sopenharmony_ci 638e41f4b71Sopenharmony_ci**示例:** 639e41f4b71Sopenharmony_ci 640e41f4b71Sopenharmony_ci```ts 641e41f4b71Sopenharmony_ciclass PARA { 642e41f4b71Sopenharmony_ci bmRequestType: number = 0 643e41f4b71Sopenharmony_ci bRequest: number = 0 644e41f4b71Sopenharmony_ci wValue: number = 0 645e41f4b71Sopenharmony_ci wIndex: number = 0 646e41f4b71Sopenharmony_ci wLength: number = 0 647e41f4b71Sopenharmony_ci data: Uint8Array = new Uint8Array() 648e41f4b71Sopenharmony_ci} 649e41f4b71Sopenharmony_ci 650e41f4b71Sopenharmony_cilet param: PARA = { 651e41f4b71Sopenharmony_ci bmRequestType: 0x80, 652e41f4b71Sopenharmony_ci bRequest: 0x06, 653e41f4b71Sopenharmony_ci 654e41f4b71Sopenharmony_ci wValue:0x01 << 8 | 0, 655e41f4b71Sopenharmony_ci wIndex: 0, 656e41f4b71Sopenharmony_ci wLength: 18, 657e41f4b71Sopenharmony_ci data: new Uint8Array(18) 658e41f4b71Sopenharmony_ci}; 659e41f4b71Sopenharmony_ci 660e41f4b71Sopenharmony_cilet devicesList: Array<usbManager.USBDevice> = usbManager.getDevices(); 661e41f4b71Sopenharmony_ciif (devicesList.length == 0) { 662e41f4b71Sopenharmony_ci console.log(`device list is empty`); 663e41f4b71Sopenharmony_ci} 664e41f4b71Sopenharmony_ci 665e41f4b71Sopenharmony_ciusbManager.requestRight(devicesList[0].name); 666e41f4b71Sopenharmony_cilet devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(devicesList[0]); 667e41f4b71Sopenharmony_ciusbManager.usbControlTransfer(devicepipe, param).then((ret: number) => { 668e41f4b71Sopenharmony_ciconsole.log(`usbControlTransfer = ${ret}`); 669e41f4b71Sopenharmony_ci}) 670e41f4b71Sopenharmony_ci``` 671e41f4b71Sopenharmony_ci 672e41f4b71Sopenharmony_ci## usbManager.bulkTransfer 673e41f4b71Sopenharmony_ci 674e41f4b71Sopenharmony_cibulkTransfer(pipe: USBDevicePipe, endpoint: USBEndpoint, buffer: Uint8Array, timeout ?: number): Promise<number> 675e41f4b71Sopenharmony_ci 676e41f4b71Sopenharmony_ci批量传输。 677e41f4b71Sopenharmony_ci 678e41f4b71Sopenharmony_ci需要调用[usbManager.getDevices](#usbmanagergetdevices)获取设备信息列表以及endpoint;再调用[usbManager.requestRight](#usbmanagerrequestright)获取设备请求权限;然后调用[usbManager.connectDevice](#usbmanagerconnectdevice)接口得到返回数据devicepipe之后,再次获取接口[usbManager.claimInterface](#usbmanagerclaiminterface);再调用usb.bulkTransfer接口。 679e41f4b71Sopenharmony_ci 680e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 681e41f4b71Sopenharmony_ci 682e41f4b71Sopenharmony_ci**参数:** 683e41f4b71Sopenharmony_ci 684e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 685e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 686e41f4b71Sopenharmony_ci| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定设备,需要调用connectDevice获取。| 687e41f4b71Sopenharmony_ci| endpoint | [USBEndpoint](#usbendpoint) | 是 | 用于确定传输的端口,需要调用getDevices获取设备信息列表以及endpoint,address用于确定端点地址,direction用于确定端点的方向,interfaceId用于确定所属接口,当前其他属性不做处理。| 688e41f4b71Sopenharmony_ci| buffer | Uint8Array | 是 | 用于写入或读取数据的缓冲区。 | 689e41f4b71Sopenharmony_ci| timeout | number | 否 | 超时时间(单位:ms),可选参数,默认为0不超时,用户按需选择 。 | 690e41f4b71Sopenharmony_ci 691e41f4b71Sopenharmony_ci**错误码:** 692e41f4b71Sopenharmony_ci 693e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。 694e41f4b71Sopenharmony_ci 695e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 696e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 697e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | 698e41f4b71Sopenharmony_ci 699e41f4b71Sopenharmony_ci**返回值:** 700e41f4b71Sopenharmony_ci 701e41f4b71Sopenharmony_ci| 类型 | 说明 | 702e41f4b71Sopenharmony_ci| -------- | -------- | 703e41f4b71Sopenharmony_ci| Promise<number> | Promise对象,获取传输或接收到的数据块大小。失败返回-1。 | 704e41f4b71Sopenharmony_ci 705e41f4b71Sopenharmony_ci**示例:** 706e41f4b71Sopenharmony_ci 707e41f4b71Sopenharmony_ci```ts 708e41f4b71Sopenharmony_ci//usbManager.getDevices 接口返回数据集合,取其中一个设备对象,并获取权限 。 709e41f4b71Sopenharmony_ci//把获取到的设备对象作为参数传入usbManager.connectDevice;当usbManager.connectDevice接口成功返回之后; 710e41f4b71Sopenharmony_ci//才可以调用第三个接口usbManager.claimInterface.当usbManager.claimInterface 调用成功以后,再调用该接口。 711e41f4b71Sopenharmony_cilet devicesList: Array<usbManager.USBDevice> = usbManager.getDevices(); 712e41f4b71Sopenharmony_ciif (devicesList.length == 0) { 713e41f4b71Sopenharmony_ci console.log(`device list is empty`); 714e41f4b71Sopenharmony_ci} 715e41f4b71Sopenharmony_ci 716e41f4b71Sopenharmony_cilet device: usbManager.USBDevice = devicesList[0]; 717e41f4b71Sopenharmony_ciusbManager.requestRight(device.name); 718e41f4b71Sopenharmony_ci 719e41f4b71Sopenharmony_cilet devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(device); 720e41f4b71Sopenharmony_cifor (let i = 0; i < device.configs[0].interfaces.length; i++) { 721e41f4b71Sopenharmony_ci if (device.configs[0].interfaces[i].endpoints[0].attributes == 2) { 722e41f4b71Sopenharmony_ci let endpoint: usbManager.USBEndpoint = device.configs[0].interfaces[i].endpoints[0]; 723e41f4b71Sopenharmony_ci let interfaces: usbManager.USBInterface = device.configs[0].interfaces[i]; 724e41f4b71Sopenharmony_ci let ret: number = usbManager.claimInterface(devicepipe, interfaces); 725e41f4b71Sopenharmony_ci let buffer = new Uint8Array(128); 726e41f4b71Sopenharmony_ci usbManager.bulkTransfer(devicepipe, endpoint, buffer).then((ret: number) => { 727e41f4b71Sopenharmony_ci console.log(`bulkTransfer = ${ret}`); 728e41f4b71Sopenharmony_ci }); 729e41f4b71Sopenharmony_ci } 730e41f4b71Sopenharmony_ci} 731e41f4b71Sopenharmony_ci``` 732e41f4b71Sopenharmony_ci 733e41f4b71Sopenharmony_ci## usbManager.closePipe 734e41f4b71Sopenharmony_ci 735e41f4b71Sopenharmony_ciclosePipe(pipe: USBDevicePipe): number 736e41f4b71Sopenharmony_ci 737e41f4b71Sopenharmony_ci关闭设备消息控制通道。 738e41f4b71Sopenharmony_ci 739e41f4b71Sopenharmony_ci需要调用[usbManager.getDevices](#usbmanagergetdevices)获取设备列表;调用[usbManager.requestRight](#usbmanagerrequestright)获取设备请求权限;调用[usbManager.connectDevice](#usbmanagerconnectdevice)得到devicepipe作为参数。 740e41f4b71Sopenharmony_ci 741e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 742e41f4b71Sopenharmony_ci 743e41f4b71Sopenharmony_ci**参数:** 744e41f4b71Sopenharmony_ci 745e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 746e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 747e41f4b71Sopenharmony_ci| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定USB设备消息控制通道,需要调用connectDevice获取。| 748e41f4b71Sopenharmony_ci 749e41f4b71Sopenharmony_ci**错误码:** 750e41f4b71Sopenharmony_ci 751e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[USB服务错误码](errorcode-usb.md)。 752e41f4b71Sopenharmony_ci 753e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 754e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 755e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | 756e41f4b71Sopenharmony_ci 757e41f4b71Sopenharmony_ci**返回值:** 758e41f4b71Sopenharmony_ci 759e41f4b71Sopenharmony_ci| 类型 | 说明 | 760e41f4b71Sopenharmony_ci| -------- | -------- | 761e41f4b71Sopenharmony_ci| number | 关闭设备消息控制通道成功返回0;关闭设备消息控制通道失败返回其他错误码。 | 762e41f4b71Sopenharmony_ci 763e41f4b71Sopenharmony_ci**示例:** 764e41f4b71Sopenharmony_ci 765e41f4b71Sopenharmony_ci```ts 766e41f4b71Sopenharmony_cilet devicesList: Array<usbManager.USBDevice> = usbManager.getDevices(); 767e41f4b71Sopenharmony_ciif (devicesList.length == 0) { 768e41f4b71Sopenharmony_ci console.log(`device list is empty`); 769e41f4b71Sopenharmony_ci} 770e41f4b71Sopenharmony_ci 771e41f4b71Sopenharmony_ciusbManager.requestRight(devicesList[0].name); 772e41f4b71Sopenharmony_cilet devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(devicesList[0]); 773e41f4b71Sopenharmony_cilet ret: number = usbManager.closePipe(devicepipe); 774e41f4b71Sopenharmony_ciconsole.log(`closePipe = ${ret}`); 775e41f4b71Sopenharmony_ci``` 776e41f4b71Sopenharmony_ci 777e41f4b71Sopenharmony_ci## USBEndpoint 778e41f4b71Sopenharmony_ci 779e41f4b71Sopenharmony_ci通过USB发送和接收数据的端口。通过[USBInterface](#usbinterface)获取。 780e41f4b71Sopenharmony_ci 781e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 782e41f4b71Sopenharmony_ci 783e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 |说明 | 784e41f4b71Sopenharmony_ci| ------------- | ------------------------------------------- | ------------- |------------- | 785e41f4b71Sopenharmony_ci| address | number | 是 |端点地址。 | 786e41f4b71Sopenharmony_ci| attributes | number | 是 |端点属性。 | 787e41f4b71Sopenharmony_ci| interval | number | 是 |端点间隔。 | 788e41f4b71Sopenharmony_ci| maxPacketSize | number | 是 |端点最大数据包大小。 | 789e41f4b71Sopenharmony_ci| direction | [USBRequestDirection](#usbrequestdirection) | 是 |端点的方向。 | 790e41f4b71Sopenharmony_ci| number | number | 是 |端点号。 | 791e41f4b71Sopenharmony_ci| type | number | 是 |端点类型。 | 792e41f4b71Sopenharmony_ci| interfaceId | number | 是 |端点所属的接口的唯一标识。 | 793e41f4b71Sopenharmony_ci 794e41f4b71Sopenharmony_ci## USBInterface 795e41f4b71Sopenharmony_ci 796e41f4b71Sopenharmony_ci一个[USBConfiguration](#usbconfiguration)中可以含有多个USBInterface,每个USBInterface提供一个功能。 797e41f4b71Sopenharmony_ci 798e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 799e41f4b71Sopenharmony_ci 800e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 |说明 | 801e41f4b71Sopenharmony_ci| ---------------- | ---------------------------------------- | ------------- |--------------------- | 802e41f4b71Sopenharmony_ci| id | number | 是 |接口的唯一标识。 | 803e41f4b71Sopenharmony_ci| protocol | number | 是 |接口的协议。 | 804e41f4b71Sopenharmony_ci| clazz | number | 是 |设备类型。 | 805e41f4b71Sopenharmony_ci| subClass | number | 是 |设备子类。 | 806e41f4b71Sopenharmony_ci| alternateSetting | number | 是 |在同一个接口中的多个描述符中进行切换设置。 | 807e41f4b71Sopenharmony_ci| name | string | 是 |接口名称。 | 808e41f4b71Sopenharmony_ci| endpoints | Array<[USBEndpoint](#usbendpoint)> | 是 |当前接口所包含的端点。 | 809e41f4b71Sopenharmony_ci 810e41f4b71Sopenharmony_ci## USBConfiguration 811e41f4b71Sopenharmony_ci 812e41f4b71Sopenharmony_ciUSB配置,一个[USBDevice](#usbdevice)中可以含有多个配置。 813e41f4b71Sopenharmony_ci 814e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 815e41f4b71Sopenharmony_ci 816e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 |说明 | 817e41f4b71Sopenharmony_ci| -------------- | ------------------------------------------------ | --------------- |--------------- | 818e41f4b71Sopenharmony_ci| id | number | 是 |配置的唯一标识。 | 819e41f4b71Sopenharmony_ci| attributes | number | 是 |配置的属性。 | 820e41f4b71Sopenharmony_ci| maxPower | number | 是 |最大功耗,以毫安为单位。 | 821e41f4b71Sopenharmony_ci| name | string | 是 |配置的名称,可以为空。 | 822e41f4b71Sopenharmony_ci| isRemoteWakeup | boolean | 是 |检查当前配置是否支持远程唤醒。 | 823e41f4b71Sopenharmony_ci| isSelfPowered | boolean | 是 | 检查当前配置是否支持独立电源。 | 824e41f4b71Sopenharmony_ci| interfaces | Array <[USBInterface](#usbinterface)> | 是 |配置支持的接口属性。 | 825e41f4b71Sopenharmony_ci 826e41f4b71Sopenharmony_ci## USBDevice 827e41f4b71Sopenharmony_ci 828e41f4b71Sopenharmony_ciUSB设备信息。 829e41f4b71Sopenharmony_ci 830e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 831e41f4b71Sopenharmony_ci 832e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 |说明 | 833e41f4b71Sopenharmony_ci| ---------------- | ------------------------------------ | ---------- |---------- | 834e41f4b71Sopenharmony_ci| busNum | number | 是 |总线地址。 | 835e41f4b71Sopenharmony_ci| devAddress | number | 是 |设备地址。 | 836e41f4b71Sopenharmony_ci| serial | string | 是 |序列号。 | 837e41f4b71Sopenharmony_ci| name | string | 是 |设备名字。 | 838e41f4b71Sopenharmony_ci| manufacturerName | string | 是 | 产商信息。 | 839e41f4b71Sopenharmony_ci| productName | string | 是 |产品信息。 | 840e41f4b71Sopenharmony_ci| version | string | 是 |版本。 | 841e41f4b71Sopenharmony_ci| vendorId | number | 是 |厂商ID。 | 842e41f4b71Sopenharmony_ci| productId | number | 是 |产品ID。 | 843e41f4b71Sopenharmony_ci| clazz | number | 是 |设备类。 | 844e41f4b71Sopenharmony_ci| subClass | number | 是 |设备子类。 | 845e41f4b71Sopenharmony_ci| protocol | number | 是 |设备协议码。 | 846e41f4b71Sopenharmony_ci| configs | Array<[USBConfiguration](#usbconfiguration)> | 是 |设备配置描述符信息。 | 847e41f4b71Sopenharmony_ci 848e41f4b71Sopenharmony_ci## USBDevicePipe 849e41f4b71Sopenharmony_ci 850e41f4b71Sopenharmony_ciUSB设备消息传输通道,用于确定设备。 851e41f4b71Sopenharmony_ci 852e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 853e41f4b71Sopenharmony_ci 854e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 |说明 | 855e41f4b71Sopenharmony_ci| ---------- | ------ | ----- |----- | 856e41f4b71Sopenharmony_ci| busNum | number |是 | 总线地址。 | 857e41f4b71Sopenharmony_ci| devAddress | number |是 | 设备地址。 | 858e41f4b71Sopenharmony_ci 859e41f4b71Sopenharmony_ci## USBControlParams 860e41f4b71Sopenharmony_ci 861e41f4b71Sopenharmony_ci控制传输参数。 862e41f4b71Sopenharmony_ci 863e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 864e41f4b71Sopenharmony_ci 865e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 |说明 | 866e41f4b71Sopenharmony_ci| ------- | ----------------------------------------------- | ---------------- |---------------- | 867e41f4b71Sopenharmony_ci| request | number | 是 |请求类型。 | 868e41f4b71Sopenharmony_ci| target | [USBRequestTargetType](#usbrequesttargettype) | 是 |请求目标类型。 | 869e41f4b71Sopenharmony_ci| reqType | [USBControlRequestType](#usbcontrolrequesttype) | 是 |请求控制类型。 | 870e41f4b71Sopenharmony_ci| value | number | 是 |请求参数。 | 871e41f4b71Sopenharmony_ci| index | number | 是 |请求参数value对应的索引值。 | 872e41f4b71Sopenharmony_ci| data | Uint8Array | 是 |用于写入或读取的缓冲区。 | 873e41f4b71Sopenharmony_ci 874e41f4b71Sopenharmony_ci## USBDeviceRequestParams<sup>12+</sup> 875e41f4b71Sopenharmony_ci 876e41f4b71Sopenharmony_ci控制传输参数。 877e41f4b71Sopenharmony_ci 878e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 879e41f4b71Sopenharmony_ci 880e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 |说明 | 881e41f4b71Sopenharmony_ci| ------- | ----------------------------------------------- | ---------------- |---------------- | 882e41f4b71Sopenharmony_ci| bmRequestType | number | 是 |请求控制类型。 | 883e41f4b71Sopenharmony_ci| bRequest | number | 是 |请求类型。 | 884e41f4b71Sopenharmony_ci| wValue | number | 是 |请求参数。 | 885e41f4b71Sopenharmony_ci| wIndex | number | 是 |请求参数value对应的索引值。 | 886e41f4b71Sopenharmony_ci| wLength | number | 是 |请求数据的长度 | 887e41f4b71Sopenharmony_ci| data | Uint8Array | 是 |用于写入或读取的缓冲区。 | 888e41f4b71Sopenharmony_ci 889e41f4b71Sopenharmony_ci## USBRequestTargetType 890e41f4b71Sopenharmony_ci 891e41f4b71Sopenharmony_ci请求目标类型。 892e41f4b71Sopenharmony_ci 893e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 894e41f4b71Sopenharmony_ci 895e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 896e41f4b71Sopenharmony_ci| ---------------------------- | ---- | ------ | 897e41f4b71Sopenharmony_ci| USB_REQUEST_TARGET_DEVICE | 0 | 设备。 | 898e41f4b71Sopenharmony_ci| USB_REQUEST_TARGET_INTERFACE | 1 | 接口。 | 899e41f4b71Sopenharmony_ci| USB_REQUEST_TARGET_ENDPOINT | 2 | 端点。 | 900e41f4b71Sopenharmony_ci| USB_REQUEST_TARGET_OTHER | 3 | 其他。 | 901e41f4b71Sopenharmony_ci 902e41f4b71Sopenharmony_ci## USBControlRequestType 903e41f4b71Sopenharmony_ci 904e41f4b71Sopenharmony_ci控制请求类型。 905e41f4b71Sopenharmony_ci 906e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 907e41f4b71Sopenharmony_ci 908e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 909e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------ | 910e41f4b71Sopenharmony_ci| USB_REQUEST_TYPE_STANDARD | 0 | 标准。 | 911e41f4b71Sopenharmony_ci| USB_REQUEST_TYPE_CLASS | 1 | 类。 | 912e41f4b71Sopenharmony_ci| USB_REQUEST_TYPE_VENDOR | 2 | 厂商。 | 913e41f4b71Sopenharmony_ci 914e41f4b71Sopenharmony_ci## USBRequestDirection 915e41f4b71Sopenharmony_ci 916e41f4b71Sopenharmony_ci请求方向。 917e41f4b71Sopenharmony_ci 918e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 919e41f4b71Sopenharmony_ci 920e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 921e41f4b71Sopenharmony_ci| --------------------------- | ---- | ------------------------ | 922e41f4b71Sopenharmony_ci| USB_REQUEST_DIR_TO_DEVICE | 0 | 写数据,主设备往从设备。 | 923e41f4b71Sopenharmony_ci| USB_REQUEST_DIR_FROM_DEVICE | 0x80 | 读数据,从设备往主设备。 | 924e41f4b71Sopenharmony_ci 925