1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
---
title: USB.requestDevice()
slug: Web/API/USB/requestDevice
tags:
- API
- USB
- WebUSB
- WebUSB API
- getDevices()
- Определение
- метод
translation_of: Web/API/USB/requestDevice
---
<p>{{APIRef("WebUSB API")}}{{SeeCompatTable}}{{securecontext_header}}</p>
<p>Метод <strong><code>requestDevice()</code></strong> интерфейса {{domxref("USB")}} возвращает {{jsxref("Promise")}}, возвращающий экземпляр {{domxref("USBDevice")}}, если необходимое устройство было найдено. Вызов этого метода начинает процесс соединения браузера с устройством.</p>
<h2 id="Синтаксис">Синтаксис</h2>
<pre class="syntaxbox notranslate"><em>USB</em>.requestDevice([<em>filters</em>])</pre>
<h3 id="Параметры">Параметры</h3>
<dl>
<dt>filters</dt>
<dd>Массив объектов, определяющих фильтры для устройств, к которым требуется подключиться. Каждый фильтр может содержать следующие свойства:
<ul>
<li><code>vendorId</code> - ИД производителя (USB VID)</li>
<li><code>productId</code> - ИД устройства USB PID</li>
<li><code>classCode</code> - код класса функциональности устройства</li>
<li><code>subclassCode</code> - код подкласса</li>
<li><code>protocolCode</code> - код протокола</li>
<li><code>serialNumber</code> - серийный номер</li>
</ul>
</dd>
</dl>
<h3 id="Возвращаемое_значение">Возвращаемое значение</h3>
<p>{{JSxRef("Promise")}}, возвращающий экземпляр {{DOMxRef("USBDevice")}}.</p>
<h2 id="Пример">Пример</h2>
<p>Этот пример запрашивает любое из перечисленных USB-устройств. Обратите внимание, указаны два разных PID. Оба присутствуют в списке фильтров для <code>requestDevice()</code>. При этом браузер покажет окно для выбора и подтверждения доступа к устройству. Только выбранное пользователем устройство будет передано в <code>then()</code>.</p>
<p>Количество фильтров не определяет количество устройств, показываемых браузером. Например, если найдено только USB-устройство с product ID <code>0xa800</code>, браузер отобразит только одно устройство. Но, если браузер определит два устройства, совпадающих с первым фильтром, и ещё одно, совпадающее со вторым, будут показаны все три устройства.</p>
<pre class="brush: js notranslate">const filters = [
{vendorId: 0x1209, productId: 0xa800},
{vendorId: 0x1209, productId: 0xa850}
];
navigator.usb.requestDevice({filters: filters})
.then(usbDevice => {
console.log("Product name: " + usbDevice.productName);
})
.catch(e => {
console.log("There is no device. " + e);
});
</pre>
<h2 id="Спецификации">Спецификации</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Спецификация</th>
<th scope="col">Статус</th>
<th scope="col">Комментарий</th>
</tr>
<tr>
<td>{{SpecName("Web USB","#dom-usb-requestdevice-options-options","requestDevice")}}</td>
<td>{{Spec2("Web USB")}}</td>
<td>Изначальное определение.</td>
</tr>
</tbody>
</table>
<h2 id="Совместимость">Совместимость</h2>
<p>{{Compat("api.USB.requestDevice")}}</p>
|