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