1e41f4b71Sopenharmony_ci# @ohos.usb (USB管理)(已停止维护) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci本模块主要提供管理USB设备的相关功能,包括查询USB设备列表、批量数据传输、控制命令传输、权限控制等。 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci> **说明:** 6e41f4b71Sopenharmony_ci> 7e41f4b71Sopenharmony_ci> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8e41f4b71Sopenharmony_ci> 9e41f4b71Sopenharmony_ci> 从API version 9开始,该接口不再维护,推荐使用新接口[@ohos.usbManager](js-apis-usbManager.md)。 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci## 导入模块 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ci```js 14e41f4b71Sopenharmony_ciimport usb from "@ohos.usb"; 15e41f4b71Sopenharmony_ci``` 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ci## usb.getDevices 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_cigetDevices(): Array<Readonly<USBDevice>> 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci获取USB设备列表。 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci**返回值:** 26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_ci| 类型 | 说明 | 28e41f4b71Sopenharmony_ci| ---------------------------------------------------- | ------- | 29e41f4b71Sopenharmony_ci| Array<Readonly<[USBDevice](#usbdevice)>> | 设备信息列表。 | 30e41f4b71Sopenharmony_ci 31e41f4b71Sopenharmony_ci**示例:** 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ci```js 34e41f4b71Sopenharmony_cilet devicesList = usb.getDevices(); 35e41f4b71Sopenharmony_ciconsole.log(`devicesList = ${devicesList}`); 36e41f4b71Sopenharmony_ci//devicesList 返回的数据结构 37e41f4b71Sopenharmony_ci//此处提供一个简单的示例,如下 38e41f4b71Sopenharmony_ci/*[ 39e41f4b71Sopenharmony_ci { 40e41f4b71Sopenharmony_ci name: "1-1", 41e41f4b71Sopenharmony_ci serial: "", 42e41f4b71Sopenharmony_ci manufacturerName: "", 43e41f4b71Sopenharmony_ci productName: "", 44e41f4b71Sopenharmony_ci version: "", 45e41f4b71Sopenharmony_ci vendorId: 7531, 46e41f4b71Sopenharmony_ci productId: 2, 47e41f4b71Sopenharmony_ci clazz: 9, 48e41f4b71Sopenharmony_ci subClass: 0, 49e41f4b71Sopenharmony_ci protocol: 1, 50e41f4b71Sopenharmony_ci devAddress: 1, 51e41f4b71Sopenharmony_ci busNum: 1, 52e41f4b71Sopenharmony_ci configs: [ 53e41f4b71Sopenharmony_ci { 54e41f4b71Sopenharmony_ci id: 1, 55e41f4b71Sopenharmony_ci attributes: 224, 56e41f4b71Sopenharmony_ci isRemoteWakeup: true, 57e41f4b71Sopenharmony_ci isSelfPowered: true, 58e41f4b71Sopenharmony_ci maxPower: 0, 59e41f4b71Sopenharmony_ci name: "1-1", 60e41f4b71Sopenharmony_ci interfaces: [ 61e41f4b71Sopenharmony_ci { 62e41f4b71Sopenharmony_ci id: 0, 63e41f4b71Sopenharmony_ci protocol: 0, 64e41f4b71Sopenharmony_ci clazz: 9, 65e41f4b71Sopenharmony_ci subClass: 0, 66e41f4b71Sopenharmony_ci alternateSetting: 0, 67e41f4b71Sopenharmony_ci name: "1-1", 68e41f4b71Sopenharmony_ci endpoints: [ 69e41f4b71Sopenharmony_ci { 70e41f4b71Sopenharmony_ci address: 129, 71e41f4b71Sopenharmony_ci attributes: 3, 72e41f4b71Sopenharmony_ci interval: 12, 73e41f4b71Sopenharmony_ci maxPacketSize: 4, 74e41f4b71Sopenharmony_ci direction: 128, 75e41f4b71Sopenharmony_ci number: 1, 76e41f4b71Sopenharmony_ci type: 3, 77e41f4b71Sopenharmony_ci interfaceId: 0, 78e41f4b71Sopenharmony_ci }, 79e41f4b71Sopenharmony_ci ], 80e41f4b71Sopenharmony_ci }, 81e41f4b71Sopenharmony_ci ], 82e41f4b71Sopenharmony_ci }, 83e41f4b71Sopenharmony_ci ], 84e41f4b71Sopenharmony_ci }, 85e41f4b71Sopenharmony_ci]*/ 86e41f4b71Sopenharmony_ci``` 87e41f4b71Sopenharmony_ci 88e41f4b71Sopenharmony_ci## usb.connectDevice 89e41f4b71Sopenharmony_ci 90e41f4b71Sopenharmony_ciconnectDevice(device: USBDevice): Readonly<USBDevicePipe> 91e41f4b71Sopenharmony_ci 92e41f4b71Sopenharmony_ci打开USB设备。 93e41f4b71Sopenharmony_ci 94e41f4b71Sopenharmony_ci需要调用[usb.getDevices](#usbgetdevices)获取设备信息以及device,再调用[usb.requestRight](#usbrequestright)获取设备请求权限。 95e41f4b71Sopenharmony_ci 96e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 97e41f4b71Sopenharmony_ci 98e41f4b71Sopenharmony_ci**参数:** 99e41f4b71Sopenharmony_ci 100e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 101e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 102e41f4b71Sopenharmony_ci| device | [USBDevice](#usbdevice) | 是 | USB设备信息。 | 103e41f4b71Sopenharmony_ci 104e41f4b71Sopenharmony_ci**返回值:** 105e41f4b71Sopenharmony_ci 106e41f4b71Sopenharmony_ci| 类型 | 说明 | 107e41f4b71Sopenharmony_ci| -------- | -------- | 108e41f4b71Sopenharmony_ci| Readonly<[USBDevicePipe](#usbdevicepipe)> | 指定的传输通道对象。 | 109e41f4b71Sopenharmony_ci 110e41f4b71Sopenharmony_ci**示例:** 111e41f4b71Sopenharmony_ci 112e41f4b71Sopenharmony_ci```js 113e41f4b71Sopenharmony_cilet devicepipe= usb.connectDevice(device); 114e41f4b71Sopenharmony_ciconsole.log(`devicepipe = ${devicepipe}`); 115e41f4b71Sopenharmony_ci``` 116e41f4b71Sopenharmony_ci 117e41f4b71Sopenharmony_ci## usb.hasRight 118e41f4b71Sopenharmony_ci 119e41f4b71Sopenharmony_cihasRight(deviceName: string): boolean 120e41f4b71Sopenharmony_ci 121e41f4b71Sopenharmony_ci判断是否有权访问该设备。 122e41f4b71Sopenharmony_ci 123e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 124e41f4b71Sopenharmony_ci 125e41f4b71Sopenharmony_ci**参数:** 126e41f4b71Sopenharmony_ci 127e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 128e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 129e41f4b71Sopenharmony_ci| deviceName | string | 是 | 设备名称。 | 130e41f4b71Sopenharmony_ci 131e41f4b71Sopenharmony_ci**返回值:** 132e41f4b71Sopenharmony_ci 133e41f4b71Sopenharmony_ci| 类型 | 说明 | 134e41f4b71Sopenharmony_ci| -------- | -------- | 135e41f4b71Sopenharmony_ci| boolean | true表示有访问设备的权限,false表示没有访问设备的权限。 | 136e41f4b71Sopenharmony_ci 137e41f4b71Sopenharmony_ci**示例:** 138e41f4b71Sopenharmony_ci 139e41f4b71Sopenharmony_ci```js 140e41f4b71Sopenharmony_cilet devicesName= "1-1"; 141e41f4b71Sopenharmony_cilet bool = usb.hasRight(devicesName); 142e41f4b71Sopenharmony_ciconsole.log(`hasRight = ${bool}`); 143e41f4b71Sopenharmony_ci``` 144e41f4b71Sopenharmony_ci 145e41f4b71Sopenharmony_ci## usb.requestRight 146e41f4b71Sopenharmony_ci 147e41f4b71Sopenharmony_cirequestRight(deviceName: string): Promise<boolean> 148e41f4b71Sopenharmony_ci 149e41f4b71Sopenharmony_ci请求软件包的临时权限以访问设备。使用Promise异步回调。系统应用默认拥有访问设备权限,无需调用此接口申请。 150e41f4b71Sopenharmony_ci 151e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 152e41f4b71Sopenharmony_ci 153e41f4b71Sopenharmony_ci**参数:** 154e41f4b71Sopenharmony_ci 155e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 156e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 157e41f4b71Sopenharmony_ci| deviceName | string | 是 | 设备名称。 | 158e41f4b71Sopenharmony_ci 159e41f4b71Sopenharmony_ci**返回值:** 160e41f4b71Sopenharmony_ci 161e41f4b71Sopenharmony_ci| 类型 | 说明 | 162e41f4b71Sopenharmony_ci| -------- | -------- | 163e41f4b71Sopenharmony_ci| Promise<boolean> | Promise对象,返回临时权限的申请结果。返回true表示临时权限申请成功;返回false则表示临时权限申请失败。 | 164e41f4b71Sopenharmony_ci 165e41f4b71Sopenharmony_ci**示例:** 166e41f4b71Sopenharmony_ci 167e41f4b71Sopenharmony_ci```js 168e41f4b71Sopenharmony_cilet devicesName= "1-1"; 169e41f4b71Sopenharmony_ciusb.requestRight(devicesName).then((ret) => { 170e41f4b71Sopenharmony_ci console.log(`requestRight = ${ret}`); 171e41f4b71Sopenharmony_ci}); 172e41f4b71Sopenharmony_ci``` 173e41f4b71Sopenharmony_ci 174e41f4b71Sopenharmony_ci## usb.claimInterface 175e41f4b71Sopenharmony_ci 176e41f4b71Sopenharmony_ciclaimInterface(pipe: USBDevicePipe, iface: USBInterface, force ?: boolean): number 177e41f4b71Sopenharmony_ci 178e41f4b71Sopenharmony_ci注册通信接口。 179e41f4b71Sopenharmony_ci 180e41f4b71Sopenharmony_ci需要调用[usb.getDevices](#usbgetdevices)获取设备信息以及interfaces;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)接口得到devicepipe作为参数。 181e41f4b71Sopenharmony_ci 182e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 183e41f4b71Sopenharmony_ci 184e41f4b71Sopenharmony_ci**参数:** 185e41f4b71Sopenharmony_ci 186e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 187e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 188e41f4b71Sopenharmony_ci| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址。 | 189e41f4b71Sopenharmony_ci| iface | [USBInterface](#usbinterface) | 是 | 用于确定需要获取接口的索引。 | 190e41f4b71Sopenharmony_ci| force | boolean | 否 | 可选参数,是否强制获取。默认值为false ,表示不强制获取。 | 191e41f4b71Sopenharmony_ci 192e41f4b71Sopenharmony_ci**返回值:** 193e41f4b71Sopenharmony_ci 194e41f4b71Sopenharmony_ci| 类型 | 说明 | 195e41f4b71Sopenharmony_ci| -------- | -------- | 196e41f4b71Sopenharmony_ci| number | 注册通信接口成功返回0;注册通信接口失败返回其他错误码。 | 197e41f4b71Sopenharmony_ci 198e41f4b71Sopenharmony_ci**示例:** 199e41f4b71Sopenharmony_ci 200e41f4b71Sopenharmony_ci```js 201e41f4b71Sopenharmony_cilet ret = usb.claimInterface(devicepipe, interfaces); 202e41f4b71Sopenharmony_ciconsole.log(`claimInterface = ${ret}`); 203e41f4b71Sopenharmony_ci``` 204e41f4b71Sopenharmony_ci 205e41f4b71Sopenharmony_ci## usb.releaseInterface 206e41f4b71Sopenharmony_ci 207e41f4b71Sopenharmony_cireleaseInterface(pipe: USBDevicePipe, iface: USBInterface): number 208e41f4b71Sopenharmony_ci 209e41f4b71Sopenharmony_ci释放注册过的通信接口。 210e41f4b71Sopenharmony_ci 211e41f4b71Sopenharmony_ci需要调用[usb.claimInterface](#usbclaiminterface)先获取接口,才能使用此方法释放接口。 212e41f4b71Sopenharmony_ci 213e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 214e41f4b71Sopenharmony_ci 215e41f4b71Sopenharmony_ci**参数:** 216e41f4b71Sopenharmony_ci 217e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 218e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 219e41f4b71Sopenharmony_ci| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址。 | 220e41f4b71Sopenharmony_ci| iface | [USBInterface](#usbinterface) | 是 | 用于确定需要释放接口的索引。 | 221e41f4b71Sopenharmony_ci 222e41f4b71Sopenharmony_ci**返回值:** 223e41f4b71Sopenharmony_ci 224e41f4b71Sopenharmony_ci| 类型 | 说明 | 225e41f4b71Sopenharmony_ci| -------- | -------- | 226e41f4b71Sopenharmony_ci| number | 释放接口成功返回0;释放接口失败返回其他错误码。 | 227e41f4b71Sopenharmony_ci 228e41f4b71Sopenharmony_ci**示例:** 229e41f4b71Sopenharmony_ci 230e41f4b71Sopenharmony_ci```js 231e41f4b71Sopenharmony_cilet ret = usb.releaseInterface(devicepipe, interfaces); 232e41f4b71Sopenharmony_ciconsole.log(`releaseInterface = ${ret}`); 233e41f4b71Sopenharmony_ci``` 234e41f4b71Sopenharmony_ci 235e41f4b71Sopenharmony_ci## usb.setConfiguration 236e41f4b71Sopenharmony_ci 237e41f4b71Sopenharmony_cisetConfiguration(pipe: USBDevicePipe, config: USBConfig): number 238e41f4b71Sopenharmony_ci 239e41f4b71Sopenharmony_ci设置设备配置。 240e41f4b71Sopenharmony_ci 241e41f4b71Sopenharmony_ci需要调用[usb.getDevices](#usbgetdevices)获取设备信息以及config;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)得到devicepipe作为参数。 242e41f4b71Sopenharmony_ci 243e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 244e41f4b71Sopenharmony_ci 245e41f4b71Sopenharmony_ci**参数:** 246e41f4b71Sopenharmony_ci 247e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 248e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 249e41f4b71Sopenharmony_ci| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址。 | 250e41f4b71Sopenharmony_ci| config | [USBConfig](#usbconfig) | 是 | 用于确定需要设置的配置。 | 251e41f4b71Sopenharmony_ci 252e41f4b71Sopenharmony_ci**返回值:** 253e41f4b71Sopenharmony_ci 254e41f4b71Sopenharmony_ci| 类型 | 说明 | 255e41f4b71Sopenharmony_ci| -------- | -------- | 256e41f4b71Sopenharmony_ci| number | 设置设备配置成功返回0;设置设备配置失败返回其他错误码。 | 257e41f4b71Sopenharmony_ci 258e41f4b71Sopenharmony_ci**示例:** 259e41f4b71Sopenharmony_ci 260e41f4b71Sopenharmony_ci```js 261e41f4b71Sopenharmony_cilet ret = usb.setConfiguration(devicepipe, config); 262e41f4b71Sopenharmony_ciconsole.log(`setConfiguration = ${ret}`); 263e41f4b71Sopenharmony_ci``` 264e41f4b71Sopenharmony_ci 265e41f4b71Sopenharmony_ci## usb.setInterface 266e41f4b71Sopenharmony_ci 267e41f4b71Sopenharmony_cisetInterface(pipe: USBDevicePipe, iface: USBInterface): number 268e41f4b71Sopenharmony_ci 269e41f4b71Sopenharmony_ci设置设备接口。 270e41f4b71Sopenharmony_ci 271e41f4b71Sopenharmony_ci需要调用[usb.getDevices](#usbgetdevices)获取设备列表以及interfaces;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)得到devicepipe作为参数;调用[usb.claimInterface](#usbclaiminterface)注册通信接口。 272e41f4b71Sopenharmony_ci 273e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 274e41f4b71Sopenharmony_ci 275e41f4b71Sopenharmony_ci**参数:** 276e41f4b71Sopenharmony_ci 277e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 278e41f4b71Sopenharmony_ci| ----- | ------------------------------- | --- | ------------- | 279e41f4b71Sopenharmony_ci| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址。 | 280e41f4b71Sopenharmony_ci| iface | [USBInterface](#usbinterface) | 是 | 用于确定需要设置的接口。 | 281e41f4b71Sopenharmony_ci 282e41f4b71Sopenharmony_ci**返回值:** 283e41f4b71Sopenharmony_ci 284e41f4b71Sopenharmony_ci| 类型 | 说明 | 285e41f4b71Sopenharmony_ci| -------- | -------- | 286e41f4b71Sopenharmony_ci| number | 设置设备接口成功返回0;设置设备接口失败返回其他错误码。 | 287e41f4b71Sopenharmony_ci 288e41f4b71Sopenharmony_ci**示例:** 289e41f4b71Sopenharmony_ci 290e41f4b71Sopenharmony_ci```js 291e41f4b71Sopenharmony_cilet ret = usb.setInterface(devicepipe, interfaces); 292e41f4b71Sopenharmony_ciconsole.log(`setInterface = ${ret}`); 293e41f4b71Sopenharmony_ci``` 294e41f4b71Sopenharmony_ci 295e41f4b71Sopenharmony_ci## usb.getRawDescriptor 296e41f4b71Sopenharmony_ci 297e41f4b71Sopenharmony_cigetRawDescriptor(pipe: USBDevicePipe): Uint8Array 298e41f4b71Sopenharmony_ci 299e41f4b71Sopenharmony_ci获取原始的USB描述符。 300e41f4b71Sopenharmony_ci 301e41f4b71Sopenharmony_ci需要调用[usb.getDevices](#usbgetdevices)获取设备列表;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)接口得到devicepipe作为参数。 302e41f4b71Sopenharmony_ci 303e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 304e41f4b71Sopenharmony_ci 305e41f4b71Sopenharmony_ci**参数:** 306e41f4b71Sopenharmony_ci 307e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 308e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 309e41f4b71Sopenharmony_ci| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址。 | 310e41f4b71Sopenharmony_ci 311e41f4b71Sopenharmony_ci**返回值:** 312e41f4b71Sopenharmony_ci 313e41f4b71Sopenharmony_ci| 类型 | 说明 | 314e41f4b71Sopenharmony_ci| -------- | -------- | 315e41f4b71Sopenharmony_ci| Uint8Array | 返回获取的原始数据;失败返回undefined。 | 316e41f4b71Sopenharmony_ci 317e41f4b71Sopenharmony_ci**示例:** 318e41f4b71Sopenharmony_ci 319e41f4b71Sopenharmony_ci```js 320e41f4b71Sopenharmony_cilet ret = usb.getRawDescriptor(devicepipe); 321e41f4b71Sopenharmony_ci``` 322e41f4b71Sopenharmony_ci 323e41f4b71Sopenharmony_ci## usb.getFileDescriptor 324e41f4b71Sopenharmony_ci 325e41f4b71Sopenharmony_cigetFileDescriptor(pipe: USBDevicePipe): number 326e41f4b71Sopenharmony_ci 327e41f4b71Sopenharmony_ci获取文件描述符。 328e41f4b71Sopenharmony_ci 329e41f4b71Sopenharmony_ci需要调用[usb.getDevices](#usbgetdevices)获取设备列表;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)接口得到devicepipe作为参数。 330e41f4b71Sopenharmony_ci 331e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 332e41f4b71Sopenharmony_ci 333e41f4b71Sopenharmony_ci**参数:** 334e41f4b71Sopenharmony_ci 335e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 336e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 337e41f4b71Sopenharmony_ci| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址。 | 338e41f4b71Sopenharmony_ci 339e41f4b71Sopenharmony_ci**返回值:** 340e41f4b71Sopenharmony_ci 341e41f4b71Sopenharmony_ci| 类型 | 说明 | 342e41f4b71Sopenharmony_ci| ------ | -------------------- | 343e41f4b71Sopenharmony_ci| number | 返回设备对应的文件描述符;失败返回-1。 | 344e41f4b71Sopenharmony_ci 345e41f4b71Sopenharmony_ci**示例:** 346e41f4b71Sopenharmony_ci 347e41f4b71Sopenharmony_ci```js 348e41f4b71Sopenharmony_cilet ret = usb.getFileDescriptor(devicepipe); 349e41f4b71Sopenharmony_ci``` 350e41f4b71Sopenharmony_ci 351e41f4b71Sopenharmony_ci## usb.controlTransfer 352e41f4b71Sopenharmony_ci 353e41f4b71Sopenharmony_cicontrolTransfer(pipe: USBDevicePipe, controlparam: USBControlParams, timeout ?: number): Promise<number> 354e41f4b71Sopenharmony_ci 355e41f4b71Sopenharmony_ci控制传输。 356e41f4b71Sopenharmony_ci 357e41f4b71Sopenharmony_ci需要调用[usb.getDevices](#usbgetdevices)获取设备列表;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)接口得到devicepipe作为参数。 358e41f4b71Sopenharmony_ci 359e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 360e41f4b71Sopenharmony_ci 361e41f4b71Sopenharmony_ci**参数:** 362e41f4b71Sopenharmony_ci 363e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 364e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 365e41f4b71Sopenharmony_ci| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定设备。 | 366e41f4b71Sopenharmony_ci| controlparam | [USBControlParams](#usbcontrolparams) | 是 | 控制传输参数。 | 367e41f4b71Sopenharmony_ci| timeout | number | 否 | 超时时间(单位:ms),可选参数,默认为0不超时。 | 368e41f4b71Sopenharmony_ci 369e41f4b71Sopenharmony_ci**返回值:** 370e41f4b71Sopenharmony_ci 371e41f4b71Sopenharmony_ci| 类型 | 说明 | 372e41f4b71Sopenharmony_ci| -------- | -------- | 373e41f4b71Sopenharmony_ci| Promise<number> | Promise对象,获取传输或接收到的数据块大小。失败返回-1。 | 374e41f4b71Sopenharmony_ci 375e41f4b71Sopenharmony_ci**示例:** 376e41f4b71Sopenharmony_ci 377e41f4b71Sopenharmony_ci```js 378e41f4b71Sopenharmony_cilet param = { 379e41f4b71Sopenharmony_ci request: 0, 380e41f4b71Sopenharmony_ci reqType: 0, 381e41f4b71Sopenharmony_ci target:0, 382e41f4b71Sopenharmony_ci value: 0, 383e41f4b71Sopenharmony_ci index: 0, 384e41f4b71Sopenharmony_ci data: null 385e41f4b71Sopenharmony_ci}; 386e41f4b71Sopenharmony_ciusb.controlTransfer(devicepipe, param).then((ret) => { 387e41f4b71Sopenharmony_ci console.log(`controlTransfer = ${ret}`); 388e41f4b71Sopenharmony_ci}) 389e41f4b71Sopenharmony_ci``` 390e41f4b71Sopenharmony_ci 391e41f4b71Sopenharmony_ci## usb.bulkTransfer 392e41f4b71Sopenharmony_ci 393e41f4b71Sopenharmony_cibulkTransfer(pipe: USBDevicePipe, endpoint: USBEndpoint, buffer: Uint8Array, timeout ?: number): Promise<number> 394e41f4b71Sopenharmony_ci 395e41f4b71Sopenharmony_ci批量传输。 396e41f4b71Sopenharmony_ci 397e41f4b71Sopenharmony_ci需要调用[usb.getDevices](#usbgetdevices)获取设备信息列表以及endpoint;再调用[usb.requestRight](#usbrequestright)获取设备请求权限;然后调用[usb.connectDevice](#usbconnectdevice)接口得到返回数据devicepipe之后,再次获取接口[usb.claimInterface](#usbclaiminterface);再调用usb.bulkTransfer接口。 398e41f4b71Sopenharmony_ci 399e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 400e41f4b71Sopenharmony_ci 401e41f4b71Sopenharmony_ci**参数:** 402e41f4b71Sopenharmony_ci 403e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 404e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 405e41f4b71Sopenharmony_ci| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定设备。 | 406e41f4b71Sopenharmony_ci| endpoint | [USBEndpoint](#usbendpoint) | 是 | 用于确定传输的端口。 | 407e41f4b71Sopenharmony_ci| buffer | Uint8Array | 是 | 用于写入或读取的缓冲区。 | 408e41f4b71Sopenharmony_ci| timeout | number | 否 | 超时时间(单位:ms),可选参数,默认为0不超时。| 409e41f4b71Sopenharmony_ci 410e41f4b71Sopenharmony_ci**返回值:** 411e41f4b71Sopenharmony_ci 412e41f4b71Sopenharmony_ci| 类型 | 说明 | 413e41f4b71Sopenharmony_ci| -------- | -------- | 414e41f4b71Sopenharmony_ci| Promise<number> | Promise对象,获取传输或接收到的数据块大小。失败返回-1。 | 415e41f4b71Sopenharmony_ci 416e41f4b71Sopenharmony_ci**示例:** 417e41f4b71Sopenharmony_ci 418e41f4b71Sopenharmony_ci```js 419e41f4b71Sopenharmony_ci//usb.getDevices 接口返回数据集合,取其中一个设备对象,并获取权限 。 420e41f4b71Sopenharmony_ci//把获取到的设备对象作为参数传入usb.connectDevice;当usb.connectDevice接口成功返回之后; 421e41f4b71Sopenharmony_ci//才可以调用第三个接口usb.claimInterface.当usb.claimInterface 调用成功以后,再调用该接口。 422e41f4b71Sopenharmony_ciusb.bulkTransfer(devicepipe, endpoint, buffer).then((ret) => { 423e41f4b71Sopenharmony_ci console.log(`bulkTransfer = ${ret}`); 424e41f4b71Sopenharmony_ci}); 425e41f4b71Sopenharmony_ci``` 426e41f4b71Sopenharmony_ci 427e41f4b71Sopenharmony_ci## usb.closePipe 428e41f4b71Sopenharmony_ci 429e41f4b71Sopenharmony_ciclosePipe(pipe: USBDevicePipe): number 430e41f4b71Sopenharmony_ci 431e41f4b71Sopenharmony_ci关闭设备消息控制通道。 432e41f4b71Sopenharmony_ci 433e41f4b71Sopenharmony_ci需要调用[usb.getDevices](#usbgetdevices)获取设备列表;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)得到devicepipe作为参数。 434e41f4b71Sopenharmony_ci 435e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 436e41f4b71Sopenharmony_ci 437e41f4b71Sopenharmony_ci**参数:** 438e41f4b71Sopenharmony_ci 439e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 440e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 441e41f4b71Sopenharmony_ci| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定USB设备消息控制通道。 | 442e41f4b71Sopenharmony_ci 443e41f4b71Sopenharmony_ci**返回值:** 444e41f4b71Sopenharmony_ci 445e41f4b71Sopenharmony_ci| 类型 | 说明 | 446e41f4b71Sopenharmony_ci| -------- | -------- | 447e41f4b71Sopenharmony_ci| number | 关闭设备消息控制通道成功返回0;关闭设备消息控制通道失败返回其他错误码。 | 448e41f4b71Sopenharmony_ci 449e41f4b71Sopenharmony_ci**示例:** 450e41f4b71Sopenharmony_ci 451e41f4b71Sopenharmony_ci```js 452e41f4b71Sopenharmony_cilet ret = usb.closePipe(devicepipe); 453e41f4b71Sopenharmony_ciconsole.log(`closePipe = ${ret}`); 454e41f4b71Sopenharmony_ci``` 455e41f4b71Sopenharmony_ci 456e41f4b71Sopenharmony_ci## USBEndpoint 457e41f4b71Sopenharmony_ci 458e41f4b71Sopenharmony_ci通过USB发送和接收数据的端口。通过[USBInterface](#usbinterface)获取。 459e41f4b71Sopenharmony_ci 460e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 461e41f4b71Sopenharmony_ci 462e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 463e41f4b71Sopenharmony_ci| ------------- | ------------------------------------------- | ------------- |------------ | 464e41f4b71Sopenharmony_ci| address | number | 是 |端点地址。 | 465e41f4b71Sopenharmony_ci| attributes | number | 是 |端点属性。 | 466e41f4b71Sopenharmony_ci| interval | number | 是 |端点间隔。 | 467e41f4b71Sopenharmony_ci| maxPacketSize | number | 是 |端点最大数据包大小。 | 468e41f4b71Sopenharmony_ci| direction | [USBRequestDirection](#usbrequestdirection) | 是 |端点的方向。 | 469e41f4b71Sopenharmony_ci| number | number | 是 |端点号。 | 470e41f4b71Sopenharmony_ci| type | number | 是 |端点类型。 | 471e41f4b71Sopenharmony_ci| interfaceId | number | 是 |端点所属的接口的唯一标识。 | 472e41f4b71Sopenharmony_ci 473e41f4b71Sopenharmony_ci## USBInterface 474e41f4b71Sopenharmony_ci 475e41f4b71Sopenharmony_ci一个[USBConfig](#usbconfig)中可以含有多个USBInterface,每个USBInterface提供一个功能。 476e41f4b71Sopenharmony_ci 477e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 478e41f4b71Sopenharmony_ci 479e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 |说明 | 480e41f4b71Sopenharmony_ci| ---------------- | ---------------------------------------- | ------------- |--------------------- | 481e41f4b71Sopenharmony_ci| id | number | 是 |接口的唯一标识。 | 482e41f4b71Sopenharmony_ci| protocol | number | 是 |接口的协议。 | 483e41f4b71Sopenharmony_ci| clazz | number | 是 |设备类型。 | 484e41f4b71Sopenharmony_ci| subClass | number | 是 |设备子类。 | 485e41f4b71Sopenharmony_ci| alternateSetting | number | 是 |在同一个接口中的多个描述符中进行切换设置。 | 486e41f4b71Sopenharmony_ci| name | string | 是 |接口名称。 | 487e41f4b71Sopenharmony_ci| endpoints | Array<[USBEndpoint](#usbendpoint)> | 是 |当前接口所包含的端点。 | 488e41f4b71Sopenharmony_ci 489e41f4b71Sopenharmony_ci## USBConfig 490e41f4b71Sopenharmony_ci 491e41f4b71Sopenharmony_ciUSB配置,一个[USBDevice](#usbdevice)中可以含有多个配置。 492e41f4b71Sopenharmony_ci 493e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 494e41f4b71Sopenharmony_ci 495e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 |说明 | 496e41f4b71Sopenharmony_ci| -------------- | ------------------------------------------------ | --------------- |----------- | 497e41f4b71Sopenharmony_ci| id | number | 是 |配置的唯一标识。 | 498e41f4b71Sopenharmony_ci| attributes | number | 是 |配置的属性。 | 499e41f4b71Sopenharmony_ci| maxPower | number | 是 |最大功耗,以毫安为单位。 | 500e41f4b71Sopenharmony_ci| name | string | 是 |配置的名称,可以为空。 | 501e41f4b71Sopenharmony_ci| isRemoteWakeup | boolean | 是 |检查当前配置是否支持远程唤醒。 | 502e41f4b71Sopenharmony_ci| isSelfPowered | boolean | 是 |检查当前配置是否支持独立电源。 | 503e41f4b71Sopenharmony_ci| interfaces | Array <[USBInterface](#usbinterface)> | 是 |配置支持的接口属性。 | 504e41f4b71Sopenharmony_ci 505e41f4b71Sopenharmony_ci## USBDevice 506e41f4b71Sopenharmony_ci 507e41f4b71Sopenharmony_ciUSB设备信息。 508e41f4b71Sopenharmony_ci 509e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 510e41f4b71Sopenharmony_ci 511e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 |说明 | 512e41f4b71Sopenharmony_ci| ---------------- | ------------------------------------ | ---------- |---------- | 513e41f4b71Sopenharmony_ci| busNum | number | 是 |总线地址。 | 514e41f4b71Sopenharmony_ci| devAddress | number | 是 |设备地址。 | 515e41f4b71Sopenharmony_ci| serial | string | 是 |序列号。 | 516e41f4b71Sopenharmony_ci| name | string | 是 |设备名字。 | 517e41f4b71Sopenharmony_ci| manufacturerName | string | 是 |产商信息。 | 518e41f4b71Sopenharmony_ci| productName | string | 是 |产品信息。 | 519e41f4b71Sopenharmony_ci| version | string | 是 |版本。 | 520e41f4b71Sopenharmony_ci| vendorId | number | 是 |厂商ID。 | 521e41f4b71Sopenharmony_ci| productId | number | 是 |产品ID。 | 522e41f4b71Sopenharmony_ci| clazz | number | 是 |设备类。 | 523e41f4b71Sopenharmony_ci| subClass | number | 是 |设备子类。 | 524e41f4b71Sopenharmony_ci| protocol | number | 是 |设备协议码。 | 525e41f4b71Sopenharmony_ci| configs | Array<[USBConfig](#usbconfig)> | 是 |设备配置描述符信息。 | 526e41f4b71Sopenharmony_ci 527e41f4b71Sopenharmony_ci## USBDevicePipe 528e41f4b71Sopenharmony_ci 529e41f4b71Sopenharmony_ciUSB设备消息传输通道,用于确定设备。 530e41f4b71Sopenharmony_ci 531e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 532e41f4b71Sopenharmony_ci 533e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 |说明 | 534e41f4b71Sopenharmony_ci| ---------- | ------ | ----- |----- | 535e41f4b71Sopenharmony_ci| busNum | number | 是 |总线地址。 | 536e41f4b71Sopenharmony_ci| devAddress | number | 是 |设备地址。 | 537e41f4b71Sopenharmony_ci 538e41f4b71Sopenharmony_ci## USBControlParams 539e41f4b71Sopenharmony_ci 540e41f4b71Sopenharmony_ci控制传输参数。 541e41f4b71Sopenharmony_ci 542e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 543e41f4b71Sopenharmony_ci 544e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 |说明 | 545e41f4b71Sopenharmony_ci| ------- | ----------------------------------------------- | ---------------- |---------------- | 546e41f4b71Sopenharmony_ci| request | number | 是 |请求类型。 | 547e41f4b71Sopenharmony_ci| target | [USBRequestTargetType](#usbrequesttargettype) | 是 |请求目标类型。 | 548e41f4b71Sopenharmony_ci| reqType | [USBControlRequestType](#usbcontrolrequesttype) | 是 |请求控制类型。 | 549e41f4b71Sopenharmony_ci| value | number | 是 |请求参数。 | 550e41f4b71Sopenharmony_ci| index | number | 是 |请求参数value对应的索引值。 | 551e41f4b71Sopenharmony_ci| data | Uint8Array | 是 |用于写入或读取的缓冲区。 | 552e41f4b71Sopenharmony_ci 553e41f4b71Sopenharmony_ci 554e41f4b71Sopenharmony_ci## USBRequestTargetType 555e41f4b71Sopenharmony_ci 556e41f4b71Sopenharmony_ci请求目标类型。 557e41f4b71Sopenharmony_ci 558e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 559e41f4b71Sopenharmony_ci 560e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 561e41f4b71Sopenharmony_ci| ---------------------------- | ---- | ------ | 562e41f4b71Sopenharmony_ci| USB_REQUEST_TARGET_DEVICE | 0 | 设备。 | 563e41f4b71Sopenharmony_ci| USB_REQUEST_TARGET_INTERFACE | 1 | 接口。 | 564e41f4b71Sopenharmony_ci| USB_REQUEST_TARGET_ENDPOINT | 2 | 端点。 | 565e41f4b71Sopenharmony_ci| USB_REQUEST_TARGET_OTHER | 3 | 其他。 | 566e41f4b71Sopenharmony_ci 567e41f4b71Sopenharmony_ci## USBControlRequestType 568e41f4b71Sopenharmony_ci 569e41f4b71Sopenharmony_ci控制请求类型。 570e41f4b71Sopenharmony_ci 571e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 572e41f4b71Sopenharmony_ci 573e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 574e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------ | 575e41f4b71Sopenharmony_ci| USB_REQUEST_TYPE_STANDARD | 0 | 标准。 | 576e41f4b71Sopenharmony_ci| USB_REQUEST_TYPE_CLASS | 1 | 类。 | 577e41f4b71Sopenharmony_ci| USB_REQUEST_TYPE_VENDOR | 2 | 厂商。 | 578e41f4b71Sopenharmony_ci 579e41f4b71Sopenharmony_ci## USBRequestDirection 580e41f4b71Sopenharmony_ci 581e41f4b71Sopenharmony_ci请求方向。 582e41f4b71Sopenharmony_ci 583e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.USB.USBManager 584e41f4b71Sopenharmony_ci 585e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 586e41f4b71Sopenharmony_ci| --------------------------- | ---- | ------------------------ | 587e41f4b71Sopenharmony_ci| USB_REQUEST_DIR_TO_DEVICE | 0 | 写数据,主设备往从设备。 | 588e41f4b71Sopenharmony_ci| USB_REQUEST_DIR_FROM_DEVICE | 0x80 | 读数据,从设备往主设备。 | 589e41f4b71Sopenharmony_ci 590