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