openharmony 鸿蒙 js-apis-usbManager

2025-06-12 浏览 (1)

@ohos.usbManager (USB管理)

本模块主要提供管理USB设备的相关功能,包括主设备上查询USB设备列表、批量数据传输、控制命令传输、权限控制等;从设备上端口管理、功能切换及查询等。

说明:

本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

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

usbManager.getDevices

getDevices(): Array<Readonly<USBDevice>>

获取接入主设备的USB设备列表。如果没有设备接入,那么将会返回一个空的列表。开发者模式关闭时,如果没有设备接入,接口可能返回undefined,注意需要对接口返回值做判空处理。

系统能力: SystemCapability.USB.USBManager

返回值:

类型说明
Array<Readonly<USBDevice>>设备信息列表。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
801Capability not supported.

示例:

let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
console.log(`devicesList = ${devicesList}`);
/*
devicesList 返回的数据结构,此处提供一个简单的示例,如下
[
  {
    name: "1-1",
    serial: "",
    manufacturerName: "",
    productName: "",
    version: "",
    vendorId: 7531,
    productId: 2,
    clazz: 9,
    subClass: 0,
    protocol: 1,
    devAddress: 1,
    busNum: 1,
    configs: [
      {
        id: 1,
        attributes: 224,
        isRemoteWakeup: true,
        isSelfPowered: true,
        maxPower: 0,
        name: "1-1",
        interfaces: [
          {
            id: 0,
            protocol: 0,
            clazz: 9,
            subClass: 0,
            alternateSetting: 0,
            name: "1-1",
            endpoints: [
              {
                address: 129,
                attributes: 3,
                interval: 12,
                maxPacketSize: 4,
                direction: 128,
                number: 1,
                type: 3,
                interfaceId: 0,
              },
            ],
          },
        ],
      },
    ],
  },
]
*/

usbManager.connectDevice

connectDevice(device: USBDevice): Readonly<USBDevicePipe>

根据getDevices()返回的设备信息打开USB设备。如果USB服务异常,可能返回undefined,注意需要对接口返回值做判空处理。

  1. 需要调用usbManager.getDevices获取设备信息以及device;
  2. 调用usbManager.requestRight请求使用该设备的权限。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
deviceUSBDeviceUSB设备信息,用getDevices获取的busNum和devAddress确定设备,当前其他属性不做处理。

返回值:

类型说明
Readonly<USBDevicePipe>指定的传输通道对象。

错误码:

以下错误码的详细介绍参见USB服务错误码

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
801Capability not supported.
14400001Access right denied. Call requestRight to get the USBDevicePipe access right first.

示例:

let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
if (devicesList.length == 0) {
  console.log(`device list is empty`);
}

let device: usbManager.USBDevice = devicesList[0];
usbManager.requestRight(device.name);
let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(device);
console.log(`devicepipe = ${devicepipe}`);

usbManager.hasRight

hasRight(deviceName: string): boolean

判断是否有权访问该设备。

如果“使用者”(如各种App或系统)有权访问设备则返回true;无权访问设备则返回false。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
deviceNamestring设备名称,来自getDevices获取的设备列表。

返回值:

类型说明
booleantrue表示有访问设备的权限,false表示没有访问设备的权限。调用失败返回其他错误码如下:
- 88080385:接口未初始化。
- 88080492:写入服务数据包过程发生错误。
- 88080493:读取服务数据包过程发送错误。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
801Capability not supported.

示例:

let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
if (devicesList.length == 0) {
  console.log(`device list is empty`);
}

let device: usbManager.USBDevice = devicesList[0];
usbManager.requestRight(device.name);
let right: boolean = usbManager.hasRight(device.name);
console.log(`${right}`);

usbManager.requestRight

requestRight(deviceName: string): Promise<boolean>

请求软件包的临时权限以访问设备。使用Promise异步回调。系统应用默认拥有访问设备权限,无需调用此接口申请。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
deviceNamestring设备名称,来自getDevices获取的设备列表。

返回值:

类型说明
Promise<boolean>Promise对象,返回临时权限的申请结果。返回true表示临时权限申请成功;返回false则表示临时权限申请失败。调用失败返回其他错误码如下:
- 88080385:接口未初始化。
- 88080392:写入接口数据包过程发生错误。
- 88080393:读取接口数据包过程发送错误。
- 88080492:写入服务数据包过程发生错误。
- 88080493:读取服务数据包过程发生错误。
- 88080497:服务内部逻辑执行发生错误。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
801Capability not supported.

示例:

let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
if (devicesList.length == 0) {
  console.log(`device list is empty`);
}

let device: usbManager.USBDevice = devicesList[0];
usbManager.requestRight(device.name).then(ret => {
  console.log(`requestRight = ${ret}`);
});

usbManager.removeRight

removeRight(deviceName: string): boolean

移除软件包访问设备的权限。系统应用默认拥有访问设备权限,调用此接口不会产生影响。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
deviceNamestring设备名称,来自getDevices获取的设备列表。

返回值:

类型说明
boolean返回权限移除结果。返回true表示权限移除成功;返回false则表示权限移除失败。调用失败返回其他错误码如下:
- 88080382:接口操作过程中遇到无效值或参数。
- 88080385:接口未初始化。
- 88080392:写入接口数据包过程发生错误。
- 88080393:读取接口数据包过程发送错误。
- 88080492:写入服务数据包过程发生错误。
- 88080493:读取服务数据包过程发生错误。
- 88080497:服务内部逻辑执行发生错误。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
801Capability not supported.

示例:

let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
if (devicesList.length == 0) {
  console.log(`device list is empty`);
}

let device: usbManager.USBDevice = devicesList[0];
if (usbManager.removeRight(device.name)) {
  console.log(`Succeed in removing right`);
}

usbManager.claimInterface

claimInterface(pipe: USBDevicePipe, iface: USBInterface, force ?: boolean): number

注册通信接口。

  1. 需要调用usbManager.getDevices获取设备信息以及interfaces;
  2. 调用usbManager.requestRight获取设备请求权限;
  3. 调用usbManager.connectDevice接口得到devicepipe作为参数。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
pipeUSBDevicePipe用于确定总线号和设备地址,需要调用connectDevice获取。
ifaceUSBInterface用于确定需要获取接口的索引,需要调用getDevices获取设备信息并通过id确定唯一接口。
forceboolean可选参数,是否强制获取。默认值为false ,表示不强制获取,用户按需选择。

返回值:

类型说明
number注册通信接口成功返回0;注册通信接口失败返回其他错误码如下:
- 63:数据量超过预期的最大值。
- 88080385:接口未初始化。
- 88080482:服务过程中遇到无效值或参数。
- 88080484:没有权限。
- 88080492:写入服务数据包过程发生错误。
- 88080493:读取服务数据包过程发生错误。
- 88080497:服务内部逻辑执行发生错误。
- -1:调用底层接口失败。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
801Capability not supported.

示例:

let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
if (devicesList.length == 0) {
  console.log(`device list is empty`);
}

let device: usbManager.USBDevice = devicesList[0];
usbManager.requestRight(device.name);
let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(device);
let interfaces: usbManager.USBInterface = device.configs[0].interfaces[0];
let ret: number= usbManager.claimInterface(devicepipe, interfaces);
console.log(`claimInterface = ${ret}`);

usbManager.releaseInterface

releaseInterface(pipe: USBDevicePipe, iface: USBInterface): number

释放注册过的通信接口。

需要调用usbManager.claimInterface先获取接口,才能使用此方法释放接口。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
pipeUSBDevicePipe用于确定总线号和设备地址,需要调用connectDevice获取。
ifaceUSBInterface用于确定需要释放接口的索引,需要调用getDevices获取设备信息并通过id确定唯一接口。

返回值:

类型说明
number释放接口成功返回0;释放接口失败返回其他错误码如下:
- 63:数据量超过预期的最大值。
- 88080381:无效的接口操作。
- 88080385:接口未初始化。
- 88080482:服务过程中遇到无效值或参数。
- 88080484:没有权限。
- 88080492:写入服务数据包过程发生错误。
- 88080493:读取服务数据包过程发生错误。
- 88080497:服务内部逻辑执行发生错误。
- -1:调用底层接口失败。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
401Parameter error.Possible causes:1.Mandatory parameters are left unspecified.2.Incorrect parameter types.
801Capability not supported.

示例:

let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
if (devicesList.length == 0) {
  console.log(`device list is empty`);
}

let device: usbManager.USBDevice = devicesList[0];
usbManager.requestRight(device.name);
let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(device);
let interfaces: usbManager.USBInterface = device.configs[0].interfaces[0];
let ret: number = usbManager.claimInterface(devicepipe, interfaces);
ret = usbManager.releaseInterface(devicepipe, interfaces);
console.log(`releaseInterface = ${ret}`);

usbManager.setConfiguration

setConfiguration(pipe: USBDevicePipe, config: USBConfiguration): number

设置设备配置。

  1. 需要调用usbManager.getDevices获取设备信息以及config;
  2. 调用usbManager.requestRight获取设备请求权限;
  3. 调用usbManager.connectDevice得到devicepipe作为参数。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
pipeUSBDevicePipe用于确定总线号和设备地址,需要调用connectDevice获取。
configUSBConfiguration用于确定需要设置的配置,需要调用getDevices获取设备信息并通过id用于确定唯一设置。

返回值:

类型说明
number设置设备配置成功返回0;设置设备配置失败返回其他错误码如下:
- 63:数据量超过预期的最大值。
- 88080385:接口未初始化。
- 88080482:服务过程中遇到无效值或参数。
- 88080484:没有权限。
- 88080492:写入服务数据包过程发生错误。
- 88080493:读取服务数据包过程发生错误。
- 88080497:服务内部逻辑执行发生错误。
- -1:调用底层接口失败。
- -17:I/O失败。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
801Capability not supported.

示例:

let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
if (devicesList.length == 0) {
  console.log(`device list is empty`);
}

let device: usbManager.USBDevice = devicesList[0];
usbManager.requestRight(device.name);
let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(device);
let config: usbManager.USBConfiguration = device.configs[0];
let ret: number= usbManager.setConfiguration(devicepipe, config);
console.log(`setConfiguration = ${ret}`);

usbManager.setInterface

setInterface(pipe: USBDevicePipe, iface: USBInterface): number

设置设备接口。

  1. 需要调用usbManager.getDevices获取设备列表以及interfaces;
  2. 调用usbManager.requestRight获取设备请求权限;
  3. 调用usbManager.connectDevice得到devicepipe作为参数;
  4. 调用usbManager.claimInterface注册通信接口。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
pipeUSBDevicePipe用于确定总线号和设备地址,需要调用connectDevice获取。
ifaceUSBInterface用于确定需要设置的接口,需要调用getDevices获取设备信息并通过id和alternateSetting确定唯一接口。

返回值:

类型说明
number设置设备接口成功返回0;设置设备接口失败返回其他错误码如下:
- 63:数据量超过预期的最大值。
- 88080385:接口未初始化。
- 88080482:服务过程中遇到无效值或参数。
- 88080484:没有权限。
- 88080492:写入服务数据包过程发生错误。
- 88080493:读取服务数据包过程发生错误。
- 88080497:服务内部逻辑执行发生错误。
- -1:调用底层接口失败。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
801Capability not supported.

示例:

let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
if (devicesList.length == 0) {
  console.log(`device list is empty`);
}

let device: usbManager.USBDevice = devicesList[0];
usbManager.requestRight(device.name);
let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(device);
let interfaces: usbManager.USBInterface = device.configs[0].interfaces[0];
let ret: number = usbManager.claimInterface(devicepipe, interfaces);
ret = usbManager.setInterface(devicepipe, interfaces);
console.log(`setInterface = ${ret}`);

usbManager.getRawDescriptor

getRawDescriptor(pipe: USBDevicePipe): Uint8Array

获取原始的USB描述符。如果USB服务异常,可能返回undefined,注意需要对接口返回值做判空处理。

  1. 需要调用usbManager.getDevices获取设备列表;
  2. 调用usbManager.requestRight获取设备请求权限;
  3. 调用usbManager.connectDevice接口得到devicepipe作为参数。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
pipeUSBDevicePipe用于确定总线号和设备地址,需要调用connectDevice获取。

返回值:

类型说明
Uint8Array返回获取的原始数据;失败返回undefined。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
801Capability not supported.

示例:

let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
if (devicesList.length == 0) {
  console.log(`device list is empty`);
}

usbManager.requestRight(devicesList[0].name);
let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(devicesList[0]);
let ret: Uint8Array = usbManager.getRawDescriptor(devicepipe);

usbManager.getFileDescriptor

getFileDescriptor(pipe: USBDevicePipe): number

获取文件描述符。

  1. 需要调用usbManager.getDevices获取设备列表;
  2. 调用usbManager.requestRight获取设备请求权限;
  3. 调用usbManager.connectDevice接口得到devicepipe作为参数。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
pipeUSBDevicePipe用于确定总线号和设备地址,需要调用connectDevice获取。

返回值:

类型说明
number返回设备对应的文件描述符;失败返回其他错误码如下:
- 63:数据量超过预期的最大值。
- 88080385:接口未初始化。
- 88080482:服务过程中遇到无效值或参数。
- 88080484:没有权限。
- 88080492:写入服务数据包过程发生错误。
- 88080493:读取服务数据包过程发生错误。
- 88080497:服务内部逻辑执行发生错误。
- -1:调用底层接口失败。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
801Capability not supported.

示例:

let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
if (devicesList.length == 0) {
  console.log(`device list is empty`);
}

usbManager.requestRight(devicesList[0].name);
let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(devicesList[0]);
let ret: number = usbManager.getFileDescriptor(devicepipe);

usbManager.controlTransfer(deprecated)

controlTransfer(pipe: USBDevicePipe, controlparam: USBControlParams, timeout ?: number): Promise<number>

控制传输。

  1. 需要调用usbManager.getDevices获取设备列表;
  2. 调用usbManager.requestRight获取设备请求权限;
  3. 调用usbManager.connectDevice接口得到devicepipe作为参数。

说明:

从 API version 9开始支持,从API version 12开始废弃。建议使用 usbControlTransfer 替代。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
pipeUSBDevicePipe用于确定设备,需要调用connectDevice获取。
controlparamUSBControlParams控制传输参数,按需设置参数,参数传参类型请参考USB协议。
timeoutnumber超时时间(单位:ms),可选参数,默认为0不超时,用户按需选择。

返回值:

类型说明
Promise<number>Promise对象,获取传输或接收到的数据块大小。失败返回其他错误码如下:
- 88080385:接口未初始化。
- 88080482:服务过程中遇到无效值或参数。
- 88080484:没有权限。
- 88080492:写入服务数据包过程发生错误。
- 88080493:读取服务数据包过程发生错误。
- 88080497:服务内部逻辑执行发生错误。
- -1:调用底层接口失败。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.

示例:

class PARA {
  request: number = 0
  reqType: usbManager.USBControlRequestType = 0
  target: usbManager.USBRequestTargetType = 0
  value: number = 0
  index: number = 0
  data: Uint8Array = new Uint8Array()
}

let param: PARA = {
  request: 0x06,
  reqType: 0x80,
  target:0,
  value: 0x01 << 8|0,
  index: 0,
  data: new Uint8Array(18)
};

let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
if (devicesList.length == 0) {
  console.log(`device list is empty`);
}

usbManager.requestRight(devicesList[0].name);
let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(devicesList[0]);
usbManager.controlTransfer(devicepipe, param).then((ret: number) => {
console.log(`controlTransfer = ${ret}`);
})

usbManager.usbControlTransfer12+

usbControlTransfer(pipe: USBDevicePipe, requestparam: USBDeviceRequestParams, timeout ?: number): Promise<number>

控制传输。

  1. 需要调用usbManager.getDevices获取设备列表;
  2. 调用usbManager.requestRight获取设备请求权限;
  3. 调用usbManager.connectDevice接口得到devicepipe作为参数。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
pipeUSBDevicePipe用于确定设备。
requestparamUSBDeviceRequestParams控制传输参数,按需设置参数,参数传参类型请参考USB协议。
timeoutnumber超时时间(单位:ms),可选参数,默认为0不超时。

返回值:

类型说明
Promise<number>Promise对象,获取传输或接收到的数据块大小。失败返回其他错误码如下:
- 88080385:接口未初始化。
- 88080482:服务过程中遇到无效值或参数。
- 88080484:没有权限。
- 88080492:写入服务数据包过程发生错误。
- 88080493:读取服务数据包过程发生错误。
- 88080497:服务内部逻辑执行发生错误。
- -1:调用底层接口失败。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
401Parameter error.Possible causes:1.Mandatory parameters are left unspecified.2.Incorrect parameter types.
801Capability not supported.

示例:

class PARA {
  bmRequestType: number = 0
  bRequest: number = 0
  wValue: number = 0
  wIndex: number = 0
  wLength: number = 0
  data: Uint8Array = new Uint8Array()
}

let param: PARA = {
  bmRequestType: 0x80,
  bRequest: 0x06,

  wValue:0x01 << 8|0,
  wIndex: 0,
  wLength: 18,
  data: new Uint8Array(18)
};

let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
if (devicesList.length == 0) {
  console.log(`device list is empty`);
}

usbManager.requestRight(devicesList[0].name);
let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(devicesList[0]);
usbManager.usbControlTransfer(devicepipe, param).then((ret: number) => {
console.log(`usbControlTransfer = ${ret}`);
})

usbManager.bulkTransfer

bulkTransfer(pipe: USBDevicePipe, endpoint: USBEndpoint, buffer: Uint8Array, timeout ?: number): Promise<number>

批量传输。

  1. 需要调用usbManager.getDevices获取设备信息列表以及endpoint;
  2. 调用usbManager.requestRight获取设备请求权限;
  3. 调用usbManager.connectDevice接口得到返回数据devicepipe;
  4. 获取接口usbManager.claimInterface
  5. 调用usbManager.bulkTransfer接口。

说明:

单次批量传输的传输数据总量(包括pipe、endpoint、buffer、timeout)请控制在200KB以下。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
pipeUSBDevicePipe用于确定设备,需要调用connectDevice获取。
endpointUSBEndpoint用于确定传输的端口,需要调用getDevices获取设备信息列表以及endpoint,address用于确定端点地址,direction用于确定端点的方向,interfaceId用于确定所属接口,当前其他属性不做处理。
bufferUint8Array用于写入或读取数据的缓冲区。
timeoutnumber超时时间(单位:ms),可选参数,默认为0不超时,用户按需选择。

返回值:

类型说明
Promise<number>Promise对象,获取传输或接收到的数据块大小。失败返回其他错误码如下:
- 63:数据量超过预期的最大值。
- 88080385:接口未初始化。
- 88080482:服务过程中遇到无效值或参数。
- 88080484:没有权限。
- 88080492:写入服务数据包过程发生错误。
- 88080493:读取服务数据包过程发生错误。
- 88080497:服务内部逻辑执行发生错误。
- -1:调用底层接口失败。
- -3:参数无效。
- -202:设备未找到。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
801Capability not supported.

示例:

说明:

以下示例代码只是调用bulkTransfer接口的必要流程,实际调用时,设备开发者需要遵循设备相关协议进行调用,确保数据的正确传输和设备的兼容性。

//usbManager.getDevices 接口返回数据集合,取其中一个设备对象,并获取权限。
//把获取到的设备对象作为参数传入usbManager.connectDevice;当usbManager.connectDevice接口成功返回之后;
//才可以调用第三个接口usbManager.claimInterface.当usbManager.claimInterface 调用成功以后,再调用该接口。
let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
if (devicesList.length == 0) {
  console.log(`device list is empty`);
}

let device: usbManager.USBDevice = devicesList[0];
usbManager.requestRight(device.name);

let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(device);
for (let i = 0; i < device.configs[0].interfaces.length; i++) {
  if (device.configs[0].interfaces[i].endpoints[0].attributes == 2) {
    let endpoint: usbManager.USBEndpoint = device.configs[0].interfaces[i].endpoints[0];
    let interfaces: usbManager.USBInterface = device.configs[0].interfaces[i];
    let ret: number = usbManager.claimInterface(devicepipe, interfaces);
    let buffer =  new Uint8Array(128);
    usbManager.bulkTransfer(devicepipe, endpoint, buffer).then((ret: number) => {
      console.log(`bulkTransfer = ${ret}`);
    });
  }
}

usbManager.usbSubmitTransfer18+

usbSubmitTransfer(transfer: UsbDataTransferParams): void

提交异步传输请求。

本接口为异步接口,调用后立刻返回,实际读写操作的结果以回调的方式返回。

  1. 需要调用usbManager.getDevices获取设备信息列表以及endpoint;
  2. 调用usbManager.requestRight获取设备请求权限;
  3. 调用usbManager.connectDevice接口得到返回数据devicepipe;
  4. 获取接口usbManager.claimInterface
  5. 调用usbManager.usbSubmitTransfer接口。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
transferUsbDataTransferParams作为通用USB数据传输接口,客户端需要填充这个对象中的参数,用以发起传输请求。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
801Capability not supported.
14400001Access right denied. Call requestRight to get the USBDevicePipe access right first.
14400007Resource busy. Possible causes: 1. The transfer has already been submitted. 2. The interface is claimed by another program or driver.
14400008No such device (it may have been disconnected).
14400009Insufficient memory. Possible causes: 1. Memory allocation failed.
14400012Transmission I/O error.

示例:

说明:

以下示例代码需要放入具体的方法中执行,只是调用usbSubmitTransfer接口的必要流程,实际调用时,设备开发者需要遵循设备相关协议进行调用,确保数据的正确传输和设备的兼容性。

//usbManager.getDevices 接口返回数据集合,取其中一个设备对象,并获取权限。
//把获取到的设备对象作为参数传入usbManager.connectDevice;当usbManager.connectDevice接口成功返回之后;
//才可以调用第三个接口usbManager.claimInterface.当usbManager.claimInterface 调用成功以后,再调用该接口。
let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
if (devicesList.length == 0) {
  console.log(`device list is empty`);
  return;
}
let device: usbManager.USBDevice = devicesList[0];
usbManager.requestRight(device.name);
let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(device);
//获取endpoint端点地址。
let endpoint = device.configs[0].interfaces[0]?.endpoints.find((value) => {
  return value.direction === 0 && value.type === 2
})
//获取设备的第一个id。
let ret: number = usbManager.claimInterface(devicepipe, device.configs[0].interfaces[0], true);

let transferParams: usbManager.UsbDataTransferParams = {
  devPipe: devicepipe,
  flags: usbManager.UsbTransferFlags.USB_TRANSFER_SHORT_NOT_OK,
  endpoint: 1,
  type: usbManager.UsbEndpointTransferType.TRANSFER_TYPE_BULK,
  timeout: 2000,
  length: 10, 
  callback: () => {},
  userData: new Uint8Array(10),
  buffer: new Uint8Array(10),
  isoPacketCount: 0,
};
try {
  transferParams.endpoint=endpoint?.address as number;
  transferParams.callback=(err, callBackData: usbManager.SubmitTransferCallback)=>{
    console.info('callBackData =' +JSON.stringify(callBackData));
  }
  usbManager.usbSubmitTransfer(transferParams); 
  console.info('USB transfer request submitted.');
} catch (error) {
  console.error('USB transfer failed:', error);
}

usbManager.usbCancelTransfer18+

usbCancelTransfer(transfer: UsbDataTransferParams): void

取消异步传输请求。

  1. 需要调用usbManager.getDevices获取设备信息列表以及endpoint;
  2. 调用usbManager.requestRight获取设备请求权限;
  3. 调用usbManager.connectDevice接口得到返回数据devicepipe;
  4. 获取接口usbManager.claimInterface
  5. 调用usbManager.usbCancelTransfer接口。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
transferUsbDataTransferParams在取消传输的接口中,只需要填充USBDevicePipe和endpoint即可。

返回值:

类型说明
<void>无。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
801Capability not supported.
14400001Access right denied. Call requestRight to get the USBDevicePipe access right first.
14400008No such device (it may have been disconnected).
14400010Other USB error. Possible causes:
1.Unrecognized discard error code.
14400011The transfer is not in progress, or is already complete or cancelled.

示例:

说明:

以下示例代码需要放入具体的方法中执行,只是调用usbCancelTransfer接口的必要流程,实际调用时,设备开发者需要遵循设备相关协议进行调用,确保数据的正确传输和设备的兼容性。

//usbManager.getDevices 接口返回数据集合,取其中一个设备对象,并获取权限。
//把获取到的设备对象作为参数传入usbManager.connectDevice;当usbManager.connectDevice接口成功返回之后;
//才可以调用第三个接口usbManager.claimInterface.当usbManager.claimInterface 调用成功以后,再调用该接口。
let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
if (devicesList.length == 0) {
  console.log(`device list is empty`);
  return;
}
let device: usbManager.USBDevice = devicesList[0];
usbManager.requestRight(device.name);
let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(device);
//获取endpoint端点地址。
let endpoint = device.configs[0].interfaces[0]?.endpoints.find((value) => {
  return value.direction === 0 && value.type === 2
})
//获取设备的第一个id。
let ret: number = usbManager.claimInterface(devicepipe, device.configs[0].interfaces[0], true);
let transferParams: usbManager.UsbDataTransferParams = {
  devPipe: devicepipe,
  flags: usbManager.UsbTransferFlags.USB_TRANSFER_SHORT_NOT_OK,
  endpoint: 1,
  type: usbManager.UsbEndpointTransferType.TRANSFER_TYPE_BULK,
  timeout: 2000,
  length: 10, 
  callback: () => {},
  userData: new Uint8Array(10),
  buffer: new Uint8Array(10),
  isoPacketCount: 0,
};
try {
  transferParams.endpoint=endpoint?.address as number;
  transferParams.callback=(err, callBackData: usbManager.SubmitTransferCallback)=>{
    console.info('callBackData =' +JSON.stringify(callBackData));
  }
  usbManager.usbSubmitTransfer(transferParams);
  usbManager.usbCancelTransfer(transferParams);
  console.info('USB transfer request submitted.');
} catch (error) {
  console.error('USB transfer failed:', error);
}

usbManager.closePipe

closePipe(pipe: USBDevicePipe): number

关闭设备消息控制通道。

  1. 需要调用usbManager.getDevices获取设备列表;
  2. 调用usbManager.requestRight获取设备请求权限;
  3. 调用usbManager.connectDevice得到devicepipe作为参数。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
pipeUSBDevicePipe用于确定USB设备消息控制通道,需要调用connectDevice获取。

返回值:

类型说明
number关闭设备消息控制通道成功返回0;关闭设备消息控制通道失败返回其他错误码如下:
- 63:数据量超过预期的最大值。
- 88080393:读取接口数据包过程发生错误。
- 88080482:服务过程中遇到无效值或参数。
- 88080484:没有权限。
- 88080493:读取服务数据包过程发生错误。
- 88080497:服务内部逻辑执行发生错误。
- -1:调用底层接口失败。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
801Capability not supported.

示例:

let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
if (devicesList.length == 0) {
  console.log(`device list is empty`);
}

usbManager.requestRight(devicesList[0].name);
let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(devicesList[0]);
let ret: number = usbManager.closePipe(devicepipe);
console.log(`closePipe = ${ret}`);

usbManager.hasAccessoryRight14+

hasAccessoryRight(accessory: USBAccessory): boolean

检查应用程序是否有权访问USB配件。

需要调用usbManager.getAccessoryList获取配件列表,得到USBAccessory作为参数。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
accessoryUSBAccessoryUSB配件,需要通过getAccessoryList获取。

返回值:

类型说明
booleantrue表示应用程序有权访问USB配件,false表示应用程序无权访问USB配件。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
801Capability not supported.
14400004Service exception. Possible causes: 1. No accessory is plugged in.
14400005Database operation exception.
14401001The target USBAccessory not matched.

示例:

import { hilog } from '@kit.PerformanceAnalysisKit';
try {
  let accList: usbManager.USBAccessory[] = usbManager.getAccessoryList()
  let flag = usbManager.hasAccessoryRight(accList[0])
  hilog.info(0, 'testTag ui', `hasAccessoryRight success, ret:${flag}`)
} catch (error) {
  hilog.info(0, 'testTag ui', `hasAccessoryRight error ${error.code}, message is ${error.message}`)
}

usbManager.requestAccessoryRight14+

requestAccessoryRight(accessory: USBAccessory): Promise<boolean>

为指定应用程序申请访问USB配件的访问权限。

需要调用usbManager.getAccessoryList获取配件列表,得到USBAccessory作为参数。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
accessoryUSBAccessoryUSB配件,需要通过getAccessoryList获取。

返回值:

类型说明
Promise<boolean>Promise对象,返回应用程序访问配件权限的申请结果。返回true表示权限申请成功;返回false表示权限申请失败。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
801Capability not supported.
14400004Service exception. Possible causes: 1. No accessory is plugged in.
14400005Database operation exception.
14401001The target USBAccessory not matched.

示例:

import { hilog } from '@kit.PerformanceAnalysisKit';
try {
  let accList: usbManager.USBAccessory[] = usbManager.getAccessoryList()
  let flag = usbManager.requestAccessoryRight(accList[0])
  hilog.info(0, 'testTag ui', `requestAccessoryRight success, ret:${flag}`)
} catch (error) {
  hilog.info(0, 'testTag ui', `requestAccessoryRight error ${error.code}, message is ${error.message}`)
}

usbManager.cancelAccessoryRight14+

cancelAccessoryRight(accessory: USBAccessory): void

取消当前应用程序访问USB配件的权限。

需要调用usbManager.getAccessoryList获取配件列表,得到USBAccessory作为参数。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
accessoryUSBAccessoryUSB配件,需要通过getAccessoryList获取。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
801Capability not supported.
14400004Service exception. Possible causes: 1. No accessory is plugged in.
14400005Database operation exception.
14401001The target USBAccessory not matched.

示例:

import { hilog } from '@kit.PerformanceAnalysisKit';
try {
  let accList: usbManager.USBAccessory[] = usbManager.getAccessoryList()
  let flag = usbManager.requestAccessoryRight(accList[0])
  usbManager.cancelAccessoryRight(accList[0])
  hilog.info(0, 'testTag ui', `cancelAccessoryRight success`)
} catch (error) {
  hilog.info(0, 'testTag ui', `cancelAccessoryRight error ${error.code}, message is ${error.message}`)
}

usbManager.getAccessoryList14+

getAccessoryList(): Array<Readonly<USBAccessory>>

获取当前已接入主机的USB配件列表。

系统能力: SystemCapability.USB.USBManager

返回值:

类型说明
Array<Readonly<USBAccessory>>只读的USB配件列表。当前仅支持列表中包含1个USB配件。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
801Capability not supported.
14400004Service exception. Possible causes: 1. No accessory is plugged in.

示例:

import { hilog } from '@kit.PerformanceAnalysisKit';
try {
  let accList: usbManager.USBAccessory[] = usbManager.getAccessoryList()
  hilog.info(0, 'testTag ui', `getAccessoryList success, accList: ${JSON.stringify(accList)}`)
} catch (error) {
  hilog.info(0, 'testTag ui', `getAccessoryList error ${error.code}, message is ${error.message}`)
}

usbManager.openAccessory14+

openAccessory(accessory: USBAccessory): USBAccessoryHandle

获取配件句柄并打开配件文件描述符。之后可以通过CoreFileKit提供的read/write接口和配件进行通信。

需要调用usbManager.getAccessoryList获取配件列表,得到USBAccessory作为参数。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
accessoryUSBAccessoryUSB配件,需要通过getAccessoryList获取。

返回值:

类型说明
USBAccessoryHandleUSB配件句柄。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
801Capability not supported.
14400001Access right denied. Call requestRight to get the USBDevicePipe access right first.
14400004Service exception. Possible causes: 1. No accessory is plugged in.
14401001The target USBAccessory not matched.
14401002Failed to open the native accessory node.
14401003Cannot reopen the accessory.

示例:

import { hilog } from '@kit.PerformanceAnalysisKit';
import { fileIo as fs } from '@kit.CoreFileKit';
try {
  let accList: usbManager.USBAccessory[] = usbManager.getAccessoryList()
  let flag = usbManager.requestAccessoryRight(accList[0])
  let handle = usbManager.openAccessory(accList[0])
  hilog.info(0, 'testTag ui', `openAccessory success`)
  let arrayBuffer = new ArrayBuffer(4096);
  let readLength = fs.readSync(handle.accessoryFd, arrayBuffer, {offset: 0, length: 4096});
  hilog.info(0, 'testTag ui', 'readSync ret: ' + readLength.toString(10));
} catch (error) {
  hilog.info(0, 'testTag ui', `openAccessory error ${error.code}, message is ${error.message}`)
}

usbManager.closeAccessory14+

closeAccessory(accessoryHandle: USBAccessoryHandle): void

关闭配件文件描述符。

需要调用usbManager.openAccessory获取配件列表,得到USBAccessoryHandle作为参数。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
accessoryHandleUSBAccessoryHandleUSB配件句柄。需要通过openAccessory获取。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
801Capability not supported.
14400004Service exception. Possible causes: 1. No accessory is plugged in.

示例:

import { hilog } from '@kit.PerformanceAnalysisKit';
try {
  let accList: usbManager.USBAccessory[] = usbManager.getAccessoryList()
  let flag = usbManager.requestAccessoryRight(accList[0])
  let handle = usbManager.openAccessory(accList[0])
  usbManager.closeAccessory(handle)
  hilog.info(0, 'testTag ui', `closeAccessory success`)
} catch (error) {
  hilog.info(0, 'testTag ui', `closeAccessory error ${error.code}, message is ${error.message}`)
}

usbManager.resetUsbDevice20+

resetUsbDevice(pipe: USBDevicePipe): boolean

重置USB外设。

本接口调用后会重置此前设置的配置和替换接口,请在调用之前确认相关业务已结束。在调用本接口之前,需要进行如下操作:

  1. 调用usbManager.getDevices获取设备列表;
  2. 调用usbManager.requestRight获取设备请求权限;
  3. 调用usbManager.connectDevice获取devicepipe作为本接口的入参。

系统能力: SystemCapability.USB.USBManager

参数:

参数名类型必填说明
pipeUSBDevicePipe用于确定总线号和设备地址,需要调用connectDevice获取。

返回值:

类型说明
booleantrue表示重置设备成功,false表示重置设备失败。

错误码:

以下错误码的详细介绍请参见USB服务错误码

错误码ID错误信息
801Capability not supported.
14400001Access right denied. Call requestRight to get the USBDevicePipe access right first.
14400004Service exception. Possible causes: 1. No accessory is plugged in.
14400008No such device (it may have been disconnected).
14400010Other USB error. Possible causes:
1.Unrecognized discard error code.
14400013The USBDevicePipe validity check failed. Possible causes:
1. The input parameters fail the validation check.
2. The call chain used to obtain the input parameters is not reasonable.

示例:

let devicesList: Array<usbManager.USBDevice> = usbManager.getDevices();
if (devicesList.length == 0) {
  console.error(`device list is empty`);
}

usbManager.requestRight(devicesList[0].name);
let devicepipe: usbManager.USBDevicePipe = usbManager.connectDevice(devicesList[0]);
try {
  let ret: boolean = usbManager.resetUsbDevice(devicepipe);
  console.info(`resetUsbDevice  = ${ret}`);
} catch (err) {
  console.error(`resetUsbDevice failed: ` + err);
}

USBEndpoint

通过USB发送和接收数据的端口。通过USBInterface获取。

系统能力: SystemCapability.USB.USBManager

名称类型必填说明
addressnumber端点地址。
attributesnumber端点属性。
intervalnumber端点间隔。
maxPacketSizenumber端点最大数据包大小。
directionUSBRequestDirection端点的方向。
numbernumber端点号。
typenumber端点类型。
interfaceIdnumber端点所属的接口的唯一标识。

USBInterface

一个USBConfiguration中可以含有多个USBInterface,每个USBInterface提供一个功能。

系统能力: SystemCapability.USB.USBManager

名称类型必填说明
idnumber接口的唯一标识。
protocolnumber接口的协议。
clazznumber设备类型。
subClassnumber设备子类。
alternateSettingnumber在同一个接口中的多个描述符中进行切换设置。
namestring接口名称。
endpointsArray<USBEndpoint>当前接口所包含的端点。

USBConfiguration

USB配置,一个USBDevice中可以含有多个配置。

系统能力: SystemCapability.USB.USBManager

名称类型必填说明
idnumber配置的唯一标识。
attributesnumber配置的属性。
maxPowernumber最大功耗,以毫安为单位。
namestring配置的名称,可以为空。
isRemoteWakeupboolean检查当前配置是否支持远程唤醒。
isSelfPoweredboolean检查当前配置是否支持独立电源。
interfacesArray <USBInterface>配置支持的接口属性。

USBDevice

USB设备信息。

系统能力: SystemCapability.USB.USBManager

名称类型必填说明
busNumnumber总线地址。
devAddressnumber设备地址。
serialstring序列号。
namestring设备名字。
manufacturerNamestring产商信息。
productNamestring产品信息。
versionstring版本。
vendorIdnumber厂商ID。
productIdnumber产品ID。
clazznumber设备类。
subClassnumber设备子类。
protocolnumber设备协议码。
configsArray<USBConfiguration>设备配置描述符信息。

USBDevicePipe

USB设备消息传输通道,用于确定设备。

系统能力: SystemCapability.USB.USBManager

名称类型必填说明
busNumnumber总线地址。
devAddressnumber设备地址。

USBControlParams(deprecated)

控制传输参数。

说明:

从 API version 9开始支持,从API version 18开始废弃。建议使用 USBDeviceRequestParams 替代。

系统能力: SystemCapability.USB.USBManager

名称类型必填说明
requestnumber请求类型。
targetUSBRequestTargetType请求目标类型。
reqTypeUSBControlRequestType请求控制类型。
valuenumber请求参数。
indexnumber请求参数value对应的索引值。
dataUint8Array用于写入或读取的缓冲区。

USBDeviceRequestParams12+

控制传输参数。

系统能力: SystemCapability.USB.USBManager

名称类型必填说明
bmRequestTypenumber请求控制类型。
bRequestnumber请求类型。
wValuenumber请求参数。
wIndexnumber请求参数value对应的索引值。
wLengthnumber请求数据的长度。
dataUint8Array用于写入或读取的缓冲区。

USBRequestTargetType

请求目标类型。

系统能力: SystemCapability.USB.USBManager

名称说明
USB_REQUEST_TARGET_DEVICE0设备。
USB_REQUEST_TARGET_INTERFACE1接口。
USB_REQUEST_TARGET_ENDPOINT2端点。
USB_REQUEST_TARGET_OTHER3其他。

USBControlRequestType

控制请求类型。

系统能力: SystemCapability.USB.USBManager

名称说明
USB_REQUEST_TYPE_STANDARD0标准。
USB_REQUEST_TYPE_CLASS1类。
USB_REQUEST_TYPE_VENDOR2厂商。

USBRequestDirection

请求方向。

系统能力: SystemCapability.USB.USBManager

名称说明
USB_REQUEST_DIR_TO_DEVICE0写数据,主设备往从设备。
USB_REQUEST_DIR_FROM_DEVICE0x80读数据,从设备往主设备。

USBAccessory14+

USB配件信息。

系统能力: SystemCapability.USB.USBManager

名称类型必填说明
manufacturerstring配件的生产厂商。
productstring配件的产品类型。
descriptionstring配件的描述。
versionstring配件的版本。
serialNumberstring配件的SN号。

USBAccessoryHandle14+

USB配件句柄。

系统能力: SystemCapability.USB.USBManager

名称类型必填说明
accessoryFdnumber配件文件描述符。合法的accessoryFd是正整数。

UsbDataTransferParams18+

作为通用USB数据传输接口,客户端需要填充这个对象中的参数,用以发起传输请求。

系统能力: SystemCapability.USB.USBManager

名称类型必填说明
devPipeUSBDevicePipe用于确定总线号和设备地址,需要调用connectDevice获取。
flagsUsbTransferFlagsUSB传输标志。
endpointnumber端点地址,正整数。
typeUsbEndpointTransferType传输类型。
timeoutnumber超时时间,单位为毫秒。
lengthnumber数据缓冲区的长度,必须是非负数(期望长度),单位为字节。
callbackAsyncCallback<SubmitTransferCallback>传输完成时的回调信息。
userDataUint8Array用户上下文数据。
bufferUint8Array用于存储读或者写请求时的数据。
isoPacketCountnumber实时传输时数据包的数量,仅用于具有实时传输端点的I/O。必须是非负数,单位为个数。

UsbTransferFlags18+

USB传输标志。

系统能力: SystemCapability.USB.USBManager

名称说明
USB_TRANSFER_SHORT_NOT_OK0将短帧报告为错误。
USB_TRANSFER_FREE_BUFFER1自动释放传输缓冲区。
USB_TRANSFER_FREE_TRANSFER2完成回调后自动传输。
USB_TRANSFER_ADD_ZERO_PACKET3传输将增加一个额外的数据包。

UsbEndpointTransferType18+

Usb传输类型。

系统能力: SystemCapability.USB.USBManager

名称说明
TRANSFER_TYPE_ISOCHRONOUS0x1实时传输。
TRANSFER_TYPE_BULK0x2批量传输。
TRANSFER_TYPE_INTERRUPT0x3中断传输。

SubmitTransferCallback18+

Usb异步传输回调。

系统能力: SystemCapability.USB.USBManager

名称类型必填说明
actualLengthnumber读写操作的实际长度值,单位为字节。
statusUsbTransferStatus读写操作完成的状态。
isoPacketDescsArray<Readonly<UsbIsoPacketDescriptor>>实时传输的分包信息。

UsbTransferStatus18+

数据处理完成后通过回调返回的状态码。

系统能力: SystemCapability.USB.USBManager

名称说明
TRANSFER_COMPLETED0传输完成。
TRANSFER_ERROR1传输失败。
TRANSFER_TIMED_OUT2传输超时。
TRANSFER_CANCELED3传输已被取消。
TRANSFER_STALL4检测到暂停(批量/中断端点)。
TRANSFER_NO_DEVICE5设备已断开。
TRANSFER_OVERFLOW6设备发送的数据比请求的多。

UsbIsoPacketDescriptor18+

实时传输模式回调返回的分包信息。

系统能力: SystemCapability.USB.USBManager

名称类型必填说明
lengthnumber读写操作的期望长度值,单位为字节。
actualLengthnumber读写操作的实际长度值,单位为字节。
statusUsbTransferStatus实时传输分包的状态码。

你可能感兴趣的鸿蒙文章

harmony 鸿蒙Basic Services Kit(基础服务)

harmony 鸿蒙DeviceInfo

harmony 鸿蒙OH_Print

harmony 鸿蒙Print_Margin

harmony 鸿蒙Print_PageSize

harmony 鸿蒙Print_PrintAttributes

harmony 鸿蒙Print_PrintDocCallback

harmony 鸿蒙Print_Range

harmony 鸿蒙TimeService

harmony 鸿蒙ohscan.h

  • 所属分类: 后端技术
  • 本文标签: 鸿蒙 软件
  • 版权声明: 本文链接 https://seaxiang.com/blog/ZknnZj