Описание
 Используйте API chrome.usb для взаимодействия с подключенными USB-устройствами. Этот API обеспечивает доступ к USB-операциям из контекста приложения. Используя этот API, приложения могут выступать в роли драйверов для устройств. Ошибки, генерируемые этим API, сообщаются путем установки runtime.lastError и выполнения обычного обратного вызова функции. В этом случае обычные параметры обратного вызова будут неопределенными.
Разрешения
usb Типы
ConfigDescriptor
Характеристики
- активныйбулев Хром 47+Это активная конфигурация? 
- configurationValueчисло Номер конфигурации. 
- описаниестрока необязательная Описание конфигурации. 
- дополнительные_данныеArrayBuffer Дополнительные данные дескриптора, связанные с этой конфигурацией. 
- интерфейсыДоступные интерфейсы. 
- maxPowerчисло Максимальная мощность, необходимая данному устройству, в миллиамперах (мА). 
- удаленное пробуждениебулев Устройство поддерживает функцию удаленного пробуждения. 
- самоходныйбулев Устройство имеет автономное питание. 
ConnectionHandle
Характеристики
- ручкачисло Непрозрачный дескриптор, представляющий это подключение к USB-устройству и все связанные с ним заявленные интерфейсы и ожидающие передачи данных. Новый дескриптор создаётся при каждом открытии устройства. Дескриптор подключения отличается от Device.device.
- productIdчисло Идентификатор продукта. 
- идентификатор поставщикачисло Идентификатор поставщика устройства. 
ControlTransferInfo
Характеристики
- данныеArrayBuffer необязательный Данные для передачи (требуются только для исходящих передач). 
- направлениеНаправление передачи ( "in"или"out").
- индексчисло Поле wIndexсм. там же .
- длинаномер необязательно Максимальное количество принимаемых байтов (требуется только для входных передач). 
- получательЦель передачи. Цель, заданная index, должна быть заявлена, если это"interface"или"endpoint".
- запросчисло Поле bRequest, см. Спецификацию универсальной последовательной шины, редакция 1.1 § 9.3.
- requestTypeТип запроса. 
- тайм-аутномер необязательно Хром 43+Время ожидания запроса (в миллисекундах). Значение по умолчанию 0означает отсутствие времени ожидания.
- ценитьчисло Поле wValueсм. там же .
Device
Характеристики
- устройствочисло Непрозрачный идентификатор USB-устройства. Он остаётся неизменным до тех пор, пока устройство не будет отключено. 
- Имя производителянить Хром 46+Строка iManufacturer, считанная с устройства, если доступна. 
- productIdчисло Идентификатор продукта. 
- Название продуктанить Хром 46+Строка iProduct, считанная с устройства, если доступна. 
- серийный номернить Хром 46+Строка iSerialNumber, считанная с устройства, если доступна. 
- идентификатор поставщикачисло Идентификатор поставщика устройства. 
- версиячисло Хром 51+Версия устройства (поле bcdDevice). 
DeviceFilter
Характеристики
- interfaceClassномер необязательно Класс интерфейса USB, соответствует любому интерфейсу на устройстве. 
- интерфейсПротоколномер необязательно Протокол интерфейса USB, проверяется только при совпадении подкласса интерфейса. 
- interfaceSubclassномер необязательно Подкласс интерфейса USB, проверяется только в случае соответствия класса интерфейса. 
- productIdномер необязательно Идентификатор продукта устройства проверяется только в том случае, если совпадает идентификатор поставщика. 
- идентификатор поставщиканомер необязательно Идентификатор поставщика устройства. 
DevicePromptOptions
Характеристики
- фильтрыDeviceFilter [] необязательно Фильтрация списка устройств, представленных пользователю. Если указано несколько фильтров, будут отображены устройства, соответствующие любому из них. 
- несколькологическое необязательное Разрешить пользователю выбирать несколько устройств. 
Direction
Direction, Recipient, RequestType и TransferType соответствуют своим тезкам в спецификации USB.
Перечисление
 "в"   "вне" 
EndpointDescriptor
Характеристики
- адресчисло Адрес конечной точки. 
- направлениеНаправление передачи. 
- дополнительные_данныеArrayBuffer Дополнительные данные дескриптора, связанные с этой конечной точкой. 
- максимальный размер пакетачисло Максимальный размер пакета. 
- pollingIntervalномер необязательно Интервал опроса (только прерывание и изохронный). 
- синхронизацияТип синхронизации (необязательно) Режим синхронизации передачи (только изохронный). 
- типТип передачи. 
- использованиеТип использования (необязательно) Подсказка по использованию конечной точки. 
EnumerateDevicesAndRequestAccessOptions
Характеристики
- interfaceIdномер необязательно Идентификатор интерфейса, к которому необходимо запрашивать доступ. Доступно только в Chrome OS. Не имеет значения для других платформ. 
- productIdчисло Идентификатор продукта. 
- идентификатор поставщикачисло Идентификатор поставщика устройства. 
EnumerateDevicesOptions
Характеристики
- фильтрыDeviceFilter [] необязательно Будет возвращено устройство, соответствующее любому заданному фильтру. Пустой список фильтров вернет все устройства, для которых у приложения есть разрешение. 
- productIdномер необязательно УстаревшийЭквивалентно настройке DeviceFilter.productId.
- идентификатор поставщиканомер необязательно УстаревшийЭквивалентно настройке DeviceFilter.vendorId.
GenericTransferInfo
Характеристики
- данныеArrayBuffer необязательный Данные для передачи (требуются только для исходящих передач). 
- направлениеНаправление передачи ( "in"или"out").
- конечная точкачисло Адрес целевой конечной точки. Интерфейс, содержащий эту конечную точку, должен быть заявлен. 
- длинаномер необязательно Максимальное количество принимаемых байтов (требуется только для входных передач). 
- тайм-аутномер необязательно Хром 43+Время ожидания запроса (в миллисекундах). Значение по умолчанию 0означает отсутствие времени ожидания.
InterfaceDescriptor
Характеристики
- альтернативная настройкачисло Номер альтернативной настройки интерфейса (по умолчанию 0
- описаниестрока необязательная Описание интерфейса. 
- конечные точкиДоступные конечные точки. 
- дополнительные_данныеArrayBuffer Дополнительные данные дескриптора, связанные с этим интерфейсом. 
- interfaceClassчисло Класс интерфейса USB. 
- Номер_интерфейсачисло Номер интерфейса. 
- интерфейсПротоколчисло Протокол интерфейса USB. 
- interfaceSubclassчисло Подкласс интерфейса USB. 
IsochronousTransferInfo
Характеристики
- Длина пакетачисло Длина каждого пакета в этой передаче. 
- пакетычисло Общее количество пакетов в этой передаче. 
- transferInfoПараметры передачи. Длина передачи или буфер данных, указанный в этом блоке параметров, разделяется по границам packetLengthдля формирования отдельных пакетов передачи.
Recipient
Перечисление
 "устройство"   "интерфейс"   "конечная точка"   "другой" 
RequestType
Перечисление
 "стандартный"   "сорт"   "продавец"   "сдержанный" 
SynchronizationType
Для режимов прерывания и изохронного режима параметры SynchronizationType и UsageType соответствуют своим одноименным параметрам в спецификации USB.
Перечисление
 "асинхронный"   "адаптивный"   "синхронный" 
TransferResultInfo
Характеристики
- данныеArrayBuffer необязательный Данные, возвращаемые входящей передачей. undefinedдля исходящих передач.
- resultCodeномер необязательно Значение 0указывает на успешную передачу. Остальные значения указывают на неудачу.
TransferType
Перечисление
 "контроль"   "прерывать"   "изохронный"   "масса" 
UsageType
Перечисление
 "данные"   "обратная связь"   "explicitFeedback"   "периодический"   "уведомление" 
Методы
bulkTransfer()
chrome.usb.bulkTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
Выполняет массовую передачу данных на указанное устройство.
Параметры
- ручкаОткрытое соединение с устройством. 
- transferInfoПараметры передачи. 
- перезвонитьфункция необязательна Параметр callbackвыглядит так:(info: TransferResultInfo) => void - информация
 
Возврат
- Обещание< TransferResultInfo > Хром 116+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
claimInterface()
chrome.usb.claimInterface(
handle: ConnectionHandle,
interfaceNumber: number,
callback?: function,
): Promise<void>
Запрашивает интерфейс на USB-устройстве. Перед передачей данных на интерфейс или связанные с ним конечные точки интерфейс должен быть запрошен. Только один дескриптор соединения может запрошен интерфейсом одновременно. Если интерфейс уже запрошен, вызов завершится ошибкой.
 releaseInterface следует вызывать, когда интерфейс больше не нужен. 
Параметры
- ручкаОткрытое соединение с устройством. 
- Номер_интерфейсачисло Интерфейс, который будет заявлен. 
- перезвонитьфункция необязательна Параметр callbackвыглядит так:() => void 
Возврат
- Обещание<void> Хром 116+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
closeDevice()
chrome.usb.closeDevice(
handle: ConnectionHandle,
callback?: function,
): Promise<void>
Закрывает дескриптор соединения. Вызов операций над дескриптором после его закрытия является безопасной операцией, но не приводит к выполнению каких-либо действий.
Параметры
- ручкаConnectionHandleдля закрытия.
- перезвонитьфункция необязательна Параметр callbackвыглядит так:() => void 
Возврат
- Обещание<void> Хром 116+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
controlTransfer()
chrome.usb.controlTransfer(
handle: ConnectionHandle,
transferInfo: ControlTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
Выполняет передачу управления на указанном устройстве.
Передача управления относится либо к устройству, либо к интерфейсу, либо к конечной точке. Для передачи управления интерфейсу или конечной точке требуется, чтобы интерфейс был запрошен.
Параметры
- ручкаОткрытое соединение с устройством. 
- transferInfo
- перезвонитьфункция необязательна Параметр callbackвыглядит так:(info: TransferResultInfo) => void - информация
 
Возврат
- Обещание< TransferResultInfo > Хром 116+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
findDevices()
chrome.usb.findDevices(
options: EnumerateDevicesAndRequestAccessOptions,
callback?: function,
): Promise<ConnectionHandle[]>
Находит USB-устройства, указанные поставщиком, продуктом и (опционально) идентификаторами интерфейса, и, если разрешения позволяют, открывает их для использования.
Если запрос на доступ отклонен или устройство не удалось открыть, дескриптор соединения не будет создан или возвращен.
 Вызов этого метода эквивалентен вызову getDevices с последующим openDevice для каждого устройства. 
Параметры
- параметрыСвойства для поиска на целевых устройствах. 
- перезвонитьфункция необязательна Параметр callbackвыглядит так:(handles: ConnectionHandle[]) => void - ручки
 
Возврат
- Обещание< ConnectionHandle []> Хром 116+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
getConfiguration()
chrome.usb.getConfiguration(
handle: ConnectionHandle,
callback?: function,
): Promise<ConfigDescriptor>
Получает дескриптор конфигурации для текущей выбранной конфигурации.
Параметры
- ручкаОткрытое соединение с устройством. 
- перезвонитьфункция необязательна Параметр callbackвыглядит так:(config: ConfigDescriptor) => void - конфигурация
 
Возврат
- Обещание< Конфигурационный дескриптор > Хром 116+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
getConfigurations()
chrome.usb.getConfigurations(
device: Device,
callback?: function,
): Promise<ConfigDescriptor[]>
Возвращает полный набор дескрипторов конфигурации устройства.
Параметры
- устройствоDevice, из которого извлекаются дескрипторы.
- перезвонитьфункция необязательна Параметр callbackвыглядит так:(configs: ConfigDescriptor[]) => void - конфиги
 
Возврат
- Обещание< Конфигурационный дескриптор []> Хром 116+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
getDevices()
chrome.usb.getDevices(
options: EnumerateDevicesOptions,
callback?: function,
): Promise<Device[]>
Перечисляет подключенные USB-устройства.
Параметры
- параметрыСвойства для поиска на целевых устройствах. 
- перезвонитьфункция необязательна Параметр callbackвыглядит так:(devices: Device[]) => void - устройстваУстройство [] 
 
Возврат
- Обещание< Устройство []> Хром 116+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
getUserSelectedDevices()
chrome.usb.getUserSelectedDevices(
options: DevicePromptOptions,
callback?: function,
): Promise<Device[]>
 Предоставляет пользователю окно выбора устройств и возвращает выбранные Device . Если пользователь отменяет выбор, устройство в окне выбора будет пустым. Для отображения диалогового окна требуется жест пользователя. Без жеста пользователя обратный вызов будет выполнен так, как будто пользователь отменил выбор. 
Параметры
- параметрыНастройка диалогового окна выбора устройств. 
- перезвонитьфункция необязательна Параметр callbackвыглядит так:(devices: Device[]) => void - устройстваУстройство [] 
 
Возврат
- Обещание< Устройство []> Хром 116+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
interruptTransfer()
chrome.usb.interruptTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
Выполняет передачу прерывания на указанном устройстве.
Параметры
- ручкаОткрытое соединение с устройством. 
- transferInfoПараметры передачи. 
- перезвонитьфункция необязательна Параметр callbackвыглядит так:(info: TransferResultInfo) => void - информация
 
Возврат
- Обещание< TransferResultInfo > Хром 116+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
isochronousTransfer()
chrome.usb.isochronousTransfer(
handle: ConnectionHandle,
transferInfo: IsochronousTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
Выполняет изохронную передачу на определенном устройстве.
Параметры
- ручкаОткрытое соединение с устройством. 
- transferInfo
- перезвонитьфункция необязательна Параметр callbackвыглядит так:(info: TransferResultInfo) => void - информация
 
Возврат
- Обещание< TransferResultInfo > Хром 116+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
listInterfaces()
chrome.usb.listInterfaces(
handle: ConnectionHandle,
callback?: function,
): Promise<InterfaceDescriptor[]>
Перечисляет все интерфейсы на USB-устройстве.
Параметры
- ручкаОткрытое соединение с устройством. 
- перезвонитьфункция необязательна Параметр callbackвыглядит так:(descriptors: InterfaceDescriptor[]) => void - дескрипторы
 
Возврат
- Обещание< InterfaceDescriptor []> Хром 116+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
openDevice()
chrome.usb.openDevice(
device: Device,
callback?: function,
): Promise<ConnectionHandle>
 Открывает USB-устройство, возвращенное getDevices . 
Параметры
- устройствоDeviceдля открытия.
- перезвонитьфункция необязательна Параметр callbackвыглядит так:(handle: ConnectionHandle) => void - ручка
 
Возврат
- Promise <ConnectionHandle> Хром 116+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
releaseInterface()
chrome.usb.releaseInterface(
handle: ConnectionHandle,
interfaceNumber: number,
callback?: function,
): Promise<void>
Освобождает заявленный интерфейс.
Параметры
- ручкаОткрытое соединение с устройством. 
- Номер_интерфейсачисло Интерфейс, который будет выпущен. 
- перезвонитьфункция необязательна Параметр callbackвыглядит так:() => void 
Возврат
- Обещание<void> Хром 116+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
requestAccess()
chrome.usb.requestAccess(
device: Device,
interfaceId: number,
callback?: function,
): Promise<boolean>
 Эта функция была специфична для Chrome OS, и её вызов на других платформах приводил к ошибке. Теперь эта операция неявно выполняется в рамках openDevice , и эта функция будет возвращать true на всех платформах.
Запрашивает доступ у брокера разрешений к устройству, заявленному Chrome OS, если указанный интерфейс на устройстве не заявлен.
Параметры
- устройствоDevice, к которому необходимо запросить доступ.
- interfaceIdчисло Конкретный запрошенный интерфейс. 
- перезвонитьфункция необязательна Параметр callbackвыглядит так:(success: boolean) => void - успехбулев 
 
Возврат
- Обещание<логическое> Хром 116+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
resetDevice()
chrome.usb.resetDevice(
handle: ConnectionHandle,
callback?: function,
): Promise<boolean>
 Пытается сбросить USB-устройство. В случае неудачного сброса указанный дескриптор соединения будет закрыт, и USB-устройство будет выглядеть отключённым, а затем снова подключенным. В этом случае для получения устройства необходимо повторно вызвать getDevices или findDevices . 
Параметры
- ручкаДескриптор соединения для сброса. 
- перезвонитьфункция необязательна Параметр callbackвыглядит так:(success: boolean) => void - успехбулев 
 
Возврат
- Обещание<логическое> Хром 116+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
setConfiguration()
chrome.usb.setConfiguration(
handle: ConnectionHandle,
configurationValue: number,
callback?: function,
): Promise<void>
Выберите конфигурацию устройства.
 Эта функция фактически сбрасывает настройки устройства, выбирая одну из доступных конфигураций. Допустимы только значения конфигурации больше 0 , однако некоторые неисправные устройства имеют рабочую конфигурацию 0 , поэтому это значение допустимо. 
Параметры
- ручкаОткрытое соединение с устройством. 
- configurationValueчисло 
- перезвонитьфункция необязательна Параметр callbackвыглядит так:() => void 
Возврат
- Обещание<void> Хром 116+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
setInterfaceAlternateSetting()
chrome.usb.setInterfaceAlternateSetting(
handle: ConnectionHandle,
interfaceNumber: number,
alternateSetting: number,
callback?: function,
): Promise<void>
Выбирает альтернативную настройку на ранее заявленном интерфейсе.
Параметры
- ручкаОткрытое соединение с устройством, на котором заявлен этот интерфейс. 
- Номер_интерфейсачисло Интерфейс для настройки. 
- альтернативная настройкачисло Альтернативный параметр для настройки. 
- перезвонитьфункция необязательна Параметр callbackвыглядит так:() => void 
Возврат
- Обещание<void> Хром 116+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
События
onDeviceAdded
chrome.usb.onDeviceAdded.addListener(
callback: function,
)
 Событие генерируется при добавлении устройства в систему. События транслируются только приложениям и расширениям, имеющим разрешение на доступ к устройству. Разрешение могло быть предоставлено во время установки, когда пользователь принял необязательное разрешение (см. permissions.request ), или через getUserSelectedDevices . 
Параметры
- перезвонитьфункция Параметр callbackвыглядит так:(device: Device) => void - устройство
 
onDeviceRemoved
chrome.usb.onDeviceRemoved.addListener(
callback: function,
)
 Событие генерируется при удалении устройства из системы. Сведения о том, какие события доставляются, см. onDeviceAdded 
Параметры
- перезвонитьфункция Параметр callbackвыглядит так:(device: Device) => void - устройство