codecamp

USB管理

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

说明

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

导入模块

  1. ```ts
  2. import usb from "@ohos.usbManager";

usb.getDevices

getDevices(): Array<Readonly<USBDevice>>

获取接入主设备的USB设备列表。如果没有设备接入,那么将会返回一个空的列表。

系统能力: SystemCapability.USB.USBManager

返回值:

类型

说明

Array<Readonly<USBDevice>>

设备信息列表。

示例:

  1. ```ts
  2. let devicesList: Array<usb.USBDevice> = usb.getDevices();
  3. console.log(`devicesList = ${devicesList}`);
  4. /*
  5. devicesList 返回的数据结构,此处提供一个简单的示例,如下
  6. [
  7. {
  8. name: "1-1",
  9. serial: "",
  10. manufacturerName: "",
  11. productName: "",
  12. version: "",
  13. vendorId: 7531,
  14. productId: 2,
  15. clazz: 9,
  16. subClass: 0,
  17. protocol: 1,
  18. devAddress: 1,
  19. busNum: 1,
  20. configs: [
  21. {
  22. id: 1,
  23. attributes: 224,
  24. isRemoteWakeup: true,
  25. isSelfPowered: true,
  26. maxPower: 0,
  27. name: "1-1",
  28. interfaces: [
  29. {
  30. id: 0,
  31. protocol: 0,
  32. clazz: 9,
  33. subClass: 0,
  34. alternateSetting: 0,
  35. name: "1-1",
  36. endpoints: [
  37. {
  38. address: 129,
  39. attributes: 3,
  40. interval: 12,
  41. maxPacketSize: 4,
  42. direction: 128,
  43. number: 1,
  44. type: 3,
  45. interfaceId: 0,
  46. },
  47. ],
  48. },
  49. ],
  50. },
  51. ],
  52. },
  53. ]
  54. */

usb.connectDevice

connectDevice(device: USBDevice): Readonly<USBDevicePipe>

根据getDevices()返回的设备信息打开USB设备。

需要调用usb.getDevices获取设备信息以及device,再调用usb.requestRight请求使用该设备的权限。

系统能力: SystemCapability.USB.USBManager

参数:

参数名

类型

必填

说明

device

USBDevice

是

USB设备信息。

返回值:

类型

说明

Readonly<USBDevicePipe>

指定的传输通道对象。

错误码:

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

错误码ID

错误信息

14400001

Permission denied. Need call requestRight to get permission.

示例:

  1. ```ts
  2. let devicesList: Array<usb.USBDevice> = usb.getDevices();
  3. if (devicesList.length == 0) {
  4. console.log(`device list is empty`);
  5. }
  6. let device: USBDevice = devicesList[0];
  7. usb.requestRight(device.name);
  8. let devicepipe: USBDevicePipe = usb.connectDevice(device);
  9. console.log(`devicepipe = ${devicepipe}`);

usb.hasRight

hasRight(deviceName: string): boolean

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

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

系统能力: SystemCapability.USB.USBManager

参数:

参数名

类型

必填

说明

deviceName

string

是

设备名称。

返回值:

类型

说明

boolean

true表示有访问设备的权限,false表示没有访问设备的权限。

示例:

  1. let devicesName="1-1";
  2. let bool = usb.hasRight(devicesName);
  3. console.log(`${bool}`);

usb.requestRight

requestRight(deviceName: string): Promise<boolean>

请求软件包的临时权限以访问设备。使用Promise异步回调。

系统能力: SystemCapability.USB.USBManager

参数:

参数名

类型

必填

说明

deviceName

string

是

设备名称。

返回值:

类型

说明

Promise<boolean>

Promise对象,返回临时权限的申请结果。返回true表示临时权限申请成功;返回false则表示临时权限申请失败。

示例:

  1. ```ts
  2. let devicesName: string = "1-1";
  3. usb.requestRight(devicesName:).then((ret: number) => {
  4. console.log(`requestRight = ${ret}`);
  5. });

usb.removeRight

removeRight(deviceName: string): boolean

移除软件包访问设备的权限。

系统能力: SystemCapability.USB.USBManager

参数:

参数名

类型

必填

说明

deviceName

string

是

设备名称。

返回值:

类型

说明

boolean

返回权限移除结果。返回true表示权限移除成功;返回false则表示权限移除失败。

示例:

  1. let devicesName="1-1";
  2. if (usb.removeRight(devicesName)) {
  3. console.log(`Succeed in removing right`);
  4. }

usb.claimInterface

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

注册通信接口。

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

系统能力: SystemCapability.USB.USBManager

参数:

参数名

类型

必填

说明

pipe

USBDevicePipe

是

用于确定总线号和设备地址。

iface

USBInterface

是

用于确定需要获取接口的索引。

force

boolean

否

可选参数,是否强制获取。默认值为false ,表示不强制获取。

返回值:

类型

说明

number

注册通信接口成功返回0;注册通信接口失败返回其他错误码。

示例:

  1. let ret = usb.claimInterface(devicepipe, interfaces);
  2. console.log(`claimInterface = ${ret}`);

usb.releaseInterface

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

释放注册过的通信接口。

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

系统能力: SystemCapability.USB.USBManager

参数:

参数名

类型

必填

说明

pipe

USBDevicePipe

是

用于确定总线号和设备地址。

iface

USBInterface

是

用于确定需要释放接口的索引。

返回值:

类型

说明

number

释放接口成功返回0;释放接口失败返回其他错误码。

示例:

  1. let ret = usb.releaseInterface(devicepipe, interfaces);
  2. console.log(`releaseInterface = ${ret}`);

usb.setConfiguration

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

设置设备配置。

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

系统能力: SystemCapability.USB.USBManager

参数:

参数名

类型

必填

说明

pipe

USBDevicePipe

是

用于确定总线号和设备地址。

config

USBConfiguration

是

用于确定需要设置的配置。

返回值:

类型

说明

number

设置设备配置成功返回0;设置设备配置失败返回其他错误码。

示例:

  1. let ret = usb.setConfiguration(devicepipe, config);
  2. console.log(`setConfiguration = ${ret}`);

usb.setInterface

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

设置设备接口。

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

系统能力: SystemCapability.USB.USBManager

参数:

参数名

类型

必填

说明

pipe

USBDevicePipe

是

用于确定总线号和设备地址。

iface

USBInterface

是

用于确定需要设置的接口。

返回值:

类型

说明

number

设置设备接口成功返回0;设置设备接口失败返回其他错误码。

示例:

  1. let ret = usb.setInterface(devicepipe, interfaces);
  2. console.log(`setInterface = ${ret}`);

usb.getRawDescriptor

getRawDescriptor(pipe: USBDevicePipe): Uint8Array

获取原始的USB描述符。

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

系统能力: SystemCapability.USB.USBManager

参数:

参数名

类型

必填

说明

pipe

USBDevicePipe

是

用于确定总线号和设备地址。

返回值:

类型

说明

Uint8Array

返回获取的原始数据;失败返回undefined。

示例:

  1. let ret = usb.getRawDescriptor(devicepipe);

usb.getFileDescriptor

getFileDescriptor(pipe: USBDevicePipe): number

获取文件描述符。

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

系统能力: SystemCapability.USB.USBManager

参数:

参数名

类型

必填

说明

pipe

USBDevicePipe

是

用于确定总线号和设备地址。

返回值:

类型

说明

number

返回设备对应的文件描述符;失败返回-1。

示例:

  1. let ret = usb.getFileDescriptor(devicepipe);

usb.controlTransfer

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

控制传输。

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

系统能力: SystemCapability.USB.USBManager

参数:

参数名

类型

必填

说明

pipe

USBDevicePipe

是

用于确定设备。

controlparam

USBControlParams

是

控制传输参数。

timeout

number

否

超时时间(单位:ms),可选参数,默认为0不超时。

返回值:

类型

说明

Promise<number>

Promise对象,获取传输或接收到的数据块大小。失败返回-1。

示例:

  1. let param = {
  2. request: 0,
  3. reqType: 0,
  4. target:0,
  5. value: 0,
  6. index: 0,
  7. data: null
  8. };
  9. usb.controlTransfer(devicepipe, param).then((ret) => {
  10. console.log(`controlTransfer = ${ret}`);
  11. })

usb.bulkTransfer

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

批量传输。

需要调用usb.getDevices获取设备信息列表以及endpoint;再调用usb.requestRight获取设备请求权限;然后调用usb.connectDevice接口得到返回数据devicepipe之后,再次获取接口usb.claimInterface;再调用usb.bulkTransfer接口。

系统能力: SystemCapability.USB.USBManager

参数:

参数名

类型

必填

说明

pipe

USBDevicePipe

是

用于确定设备。

endpoint

USBEndpoint

是

用于确定传输的端口。

buffer

Uint8Array

是

用于写入或读取的缓冲区。

timeout

number

否

超时时间(单位:ms),可选参数,默认为0不超时。

返回值:

类型

说明

Promise<number>

Promise对象,获取传输或接收到的数据块大小。失败返回-1。

示例:

  1. //usb.getDevices 接口返回数据集合,取其中一个设备对象,并获取权限 。
  2. //把获取到的设备对象作为参数传入usb.connectDevice;当usb.connectDevice接口成功返回之后;
  3. //才可以调用第三个接口usb.claimInterface.当usb.claimInterface 调用成功以后,再调用该接口。
  4. usb.bulkTransfer(devicepipe, endpoint, buffer).then((ret) => {
  5. console.log(`bulkTransfer = ${ret}`);
  6. });

usb.closePipe

closePipe(pipe: USBDevicePipe): number

关闭设备消息控制通道。

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

系统能力: SystemCapability.USB.USBManager

参数:

参数名

类型

必填

说明

pipe

USBDevicePipe

是

用于确定USB设备消息控制通道。

返回值:

类型

说明

number

关闭设备消息控制通道成功返回0;关闭设备消息控制通道失败返回其他错误码。

示例:

  1. let ret = usb.closePipe(devicepipe);
  2. console.log(`closePipe = ${ret}`);

USBEndpoint

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

系统能力: SystemCapability.USB.USBManager

名称

类型

必填

说明

address

number

是

端点地址。

attributes

number

是

端点属性。

interval

number

是

端点间隔。

maxPacketSize

number

是

端点最大数据包大小。

direction

USBRequestDirection

是

端点的方向。

number

number

是

端点号。

type

number

是

端点类型。

interfaceId

number

是

端点所属的接口的唯一标识。

USBInterface

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

系统能力: SystemCapability.USB.USBManager

名称

类型

必填

说明

id

number

是

接口的唯一标识。

protocol

number

是

接口的协议。

clazz

number

是

设备类型。

subClass

number

是

设备子类。

alternateSetting

number

是

在同一个接口中的多个描述符中进行切换设置。

name

string

是

接口名称。

endpoints

Array<USBEndpoint>

是

当前接口所包含的端点。

USBConfiguration

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

系统能力: SystemCapability.USB.USBManager

名称

类型

必填

说明

id

number

是

配置的唯一标识。

attributes

number

是

配置的属性。

maxPower

number

是

最大功耗,以毫安为单位。

name

string

是

配置的名称,可以为空。

isRemoteWakeup

boolean

是

检查当前配置是否支持远程唤醒。

isSelfPowered

boolean

是

检查当前配置是否支持独立电源。

interfaces

Array <USBInterface>

是

配置支持的接口属性。

USBDevice

USB设备信息。

系统能力: SystemCapability.USB.USBManager

名称

类型

必填

说明

busNum

number

是

总线地址。

devAddress

number

是

设备地址。

serial

string

是

序列号。

name

string

是

设备名字。

manufacturerName

string

是

产商信息。

productName

string

是

产品信息。

version

string

是

版本。

vendorId

number

是

厂商ID。

productId

number

是

产品ID。

clazz

number

是

设备类。

subClass

number

是

设备子类。

protocol

number

是

设备协议码。

configs

Array<USBConfiguration>

是

设备配置描述符信息。

USBDevicePipe

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

系统能力: SystemCapability.USB.USBManager

名称

类型

必填

说明

busNum

number

是

总线地址。

devAddress

number

是

设备地址。

USBControlParams

控制传输参数。

系统能力: SystemCapability.USB.USBManager

名称

类型

必填

说明

request

number

是

请求类型。

target

USBRequestTargetType

是

请求目标类型。

reqType

USBControlRequestType

是

请求控制类型。

value

number

是

请求参数。

index

number

是

请求参数value对应的索引值。

data

Uint8Array

是

用于写入或读取的缓冲区。

USBRequestTargetType

请求目标类型。

系统能力: SystemCapability.USB.USBManager

名称

值

说明

USB_REQUEST_TARGET_DEVICE

0

设备。

USB_REQUEST_TARGET_INTERFACE

1

接口。

USB_REQUEST_TARGET_ENDPOINT

2

端点。

USB_REQUEST_TARGET_OTHER

3

其他。

USBControlRequestType

控制请求类型。

系统能力: SystemCapability.USB.USBManager

名称

值

说明

USB_REQUEST_TYPE_STANDARD

0

标准。

USB_REQUEST_TYPE_CLASS

1

类。

USB_REQUEST_TYPE_VENDOR

2

厂商。

USBRequestDirection

请求方向。

系统能力: SystemCapability.USB.USBManager

名称

值

说明

USB_REQUEST_DIR_TO_DEVICE

0

写数据,主设备往从设备。

USB_REQUEST_DIR_FROM_DEVICE

0x80

读数据,从设备往主设备。

热管理
振动
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

媒体组件

像素

枚举

类型

接口

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }