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&lt;USBDevicePipe&gt;
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&lt;[USBDevicePipe](#usbdevicepipe)&gt; | 指定的传输通道对象。 |
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&lt;boolean&gt;
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&lt;boolean&gt; | 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&nbsp;,表示不强制获取,用户按需选择。|
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&lt;number&gt;
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&lt;number&gt; | 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&lt;number&gt;
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&lt;number&gt; | 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&lt;number&gt;
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&lt;number&gt; | 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&lt;[USBEndpoint](#usbendpoint)&gt; | 是 |当前接口所包含的端点。           |
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&nbsp;&lt;[USBInterface](#usbinterface)&gt; | 是 |配置支持的接口属性。      |
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&lt;[USBConfiguration](#usbconfiguration)&gt; | 是 |设备配置描述符信息。 |
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