Описание
Используйте 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
- устройство