Descripción
Usa la API de chrome.usb
para interactuar con dispositivos USB conectados. Esta API proporciona acceso a las operaciones USB desde el contexto de una app. Con esta API, las apps pueden funcionar como controladores de dispositivos de hardware. Para informar los errores que genera esta API, configura runtime.lastError
y ejecuta la devolución de llamada normal de la función. En este caso, los parámetros regulares de la devolución de llamada no estarán definidos.
Permisos
usb
Tipos
ConfigDescriptor
Propiedades
-
activo
boolean
Chrome 47 y versiones posteriores¿Esta es la configuración activa?
-
configurationValue
número
El número de configuración.
-
descripción
cadena opcional
Descripción de la configuración.
-
extra_data
ArrayBuffer
Datos de descriptor adicionales asociados con esta configuración.
-
interfaces
Interfaces disponibles.
-
maxPower
número
La potencia máxima que necesita este dispositivo en miliamperios (mA).
-
remoteWakeup
boolean
El dispositivo admite el despertar remoto.
-
selfPowered
boolean
El dispositivo tiene alimentación propia.
ConnectionHandle
Propiedades
-
handle
número
Es un identificador opaco que representa esta conexión al dispositivo USB y todas las interfaces reclamadas asociadas y las transferencias pendientes. Se crea un identificador nuevo cada vez que se abre el dispositivo. El identificador de conexión es diferente de
Device.device
. -
productId
número
Es el ID del producto.
-
vendorId
número
Es el ID del proveedor del dispositivo.
ControlTransferInfo
Propiedades
-
datos
ArrayBuffer opcional
Los datos que se transmitirán (obligatorio solo para las transferencias de salida).
-
dirección
La dirección de transferencia (
"in"
o"out"
). -
index
número
El campo
wIndex
; consulta Ibid. -
longitud
número opcional
La cantidad máxima de bytes que se recibirán (obligatorio solo para las transferencias de entrada).
-
destinatario
El destino de la transferencia. El objetivo que proporciona
index
se debe reclamar si es"interface"
o"endpoint"
. -
request
número
El campo
bRequest
, consulta el artículo 9.3 de la Especificación del Bus Universal en Serie, revisión 1.1. -
requestType
Es el tipo de solicitud.
-
tiempo de espera agotado
número opcional
Chrome 43 y versiones posterioresTiempo de espera de la solicitud (en milisegundos). El valor predeterminado
0
indica que no hay tiempo de espera. -
valor
número
El campo
wValue
; consulta Ibid.
Device
Propiedades
-
dispositivo
número
Es un ID opaco para el dispositivo USB. Permanecerá sin cambios hasta que se desconecte el dispositivo.
-
manufacturerName
string
Chrome 46 y versiones posterioresEs la cadena de iManufacturer que lee del dispositivo, si está disponible.
-
productId
número
Es el ID del producto.
-
NombreProducto
string
Chrome 46 y versiones posterioresEs la cadena de iProduct que se lee del dispositivo, si está disponible.
-
serialNumber
string
Chrome 46 y versiones posterioresLa cadena iSerialNumber que se lee del dispositivo, si está disponible
-
vendorId
número
Es el ID del proveedor del dispositivo.
-
versión
número
Chrome 51 y versiones posterioresLa versión del dispositivo (campo bcdDevice)
DeviceFilter
Propiedades
-
interfaceClass
número opcional
Clase de interfaz USB, coincide con cualquier interfaz del dispositivo
-
interfaceProtocol
número opcional
Es el protocolo de interfaz USB, que se verifica solo si coincide la subclase de la interfaz.
-
interfaceSubclass
número opcional
Es la subclase de la interfaz USB, que se verifica solo si la clase de interfaz coincide.
-
productId
número opcional
Es el ID de producto del dispositivo, que se verifica solo si coincide el ID del proveedor.
-
vendorId
número opcional
Es el ID del proveedor del dispositivo.
DevicePromptOptions
Propiedades
-
filtros
DeviceFilter[] opcional
Filtra la lista de dispositivos que se presenta al usuario. Si se proporcionan varios filtros, se mostrarán los dispositivos que coincidan con cualquiera de ellos.
-
múltiples
booleano opcional
Permite que el usuario seleccione varios dispositivos.
Direction
Direction, Recipient, RequestType y TransferType se asignan a sus homónimos dentro de la especificación USB.
Enum
EndpointDescriptor
Propiedades
-
dirección
número
Dirección del extremo
-
dirección
Dirección de transferencia.
-
extra_data
ArrayBuffer
Datos de descriptor adicionales asociados con este extremo.
-
maximumPacketSize
número
Tamaño máximo del paquete.
-
pollingInterval
número opcional
Intervalo de sondeo (solo interrupción e isócrono).
-
sincronización
SynchronizationType opcional
Modo de sincronización de la transferencia (solo modo isocrónico).
-
tipo
Tipo de transferencia.
-
uso
UsageType opcional
Sugerencia de uso del extremo.
EnumerateDevicesAndRequestAccessOptions
Propiedades
-
interfaceId
número opcional
El ID de interfaz para solicitar acceso. Solo está disponible en ChromeOS. No tiene ningún efecto en otras plataformas.
-
productId
número
Es el ID del producto.
-
vendorId
número
Es el ID del proveedor del dispositivo.
EnumerateDevicesOptions
Propiedades
-
filtros
DeviceFilter[] opcional
Se mostrará un dispositivo que coincida con cualquier filtro determinado. Si la lista de filtros está vacía, se mostrarán todos los dispositivos para los que la app tenga permiso.
-
productId
número opcional
ObsoletoEquivale a la configuración
DeviceFilter.productId
. -
vendorId
número opcional
ObsoletoEquivale a la configuración
DeviceFilter.vendorId
.
GenericTransferInfo
Propiedades
-
datos
ArrayBuffer opcional
Los datos que se transmitirán (obligatorio solo para las transferencias de salida).
-
dirección
La dirección de la transferencia (
"in"
o"out"
). -
extremo
número
La dirección del extremo de destino. Se debe reclamar la interfaz que contiene este extremo.
-
longitud
número opcional
Es la cantidad máxima de bytes que se recibirán (solo se requiere para las transferencias de entrada).
-
tiempo de espera agotado
número opcional
Chrome 43 y versiones posterioresTiempo de espera de la solicitud (en milisegundos). El valor predeterminado
0
indica que no hay tiempo de espera.
InterfaceDescriptor
Propiedades
-
alternateSetting
número
El número de configuración alternativo de la interfaz (el valor predeterminado es
0
) -
descripción
cadena opcional
Descripción de la interfaz.
-
extremos
Extremos disponibles.
-
extra_data
ArrayBuffer
Datos de descriptor adicionales asociados con esta interfaz.
-
interfaceClass
número
Es la clase de interfaz USB.
-
interfaceNumber
número
Es el número de interfaz.
-
interfaceProtocol
número
Protocolo de interfaz USB
-
interfaceSubclass
número
Es la subclase de la interfaz USB.
IsochronousTransferInfo
Propiedades
-
packetLength
número
La longitud de cada uno de los paquetes en esta transferencia.
-
paquetes
número
Es la cantidad total de paquetes en esta transferencia.
-
transferInfo
Parámetros de transferencia. La longitud de transferencia o el búfer de datos especificados en este bloque de parámetros se dividen a lo largo de los límites de
packetLength
para formar los paquetes individuales de la transferencia.
Recipient
Enum
"interface"
RequestType
Enum
SynchronizationType
En el caso de los modos isócrono y de interrupción, SynchronizationType y UsageType se asignan a sus homónimos dentro de la especificación USB.
Enum
"asynchronous"
"adaptativa"
"síncrona"
TransferResultInfo
Propiedades
-
datos
ArrayBuffer opcional
Los datos que muestra una transferencia de entrada.
undefined
para las transferencias de salida. -
resultCode
número opcional
Un valor de
0
indica que la transferencia se realizó correctamente. Otros valores indican una falla.
TransferType
Enum
"control"
"interrupt"
UsageType
Enum
"data"
"explicitFeedback"
"notification"
Métodos
bulkTransfer()
chrome.usb.bulkTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
)
Realiza una transferencia masiva en el dispositivo especificado.
Parámetros
-
handle
Una conexión abierta al dispositivo.
-
transferInfo
Los parámetros de transferencia
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:(info: TransferResultInfo) => void
-
información
-
Muestra
-
Promise<TransferResultInfo>
Chrome 116 y versiones posterioresLas promesas solo se admiten para Manifest V3 y versiones posteriores. Otras plataformas deben usar devoluciones de llamada.
claimInterface()
chrome.usb.claimInterface(
handle: ConnectionHandle,
interfaceNumber: number,
callback?: function,
)
Reclama una interfaz en un dispositivo USB. Antes de que los datos se puedan transferir a una interfaz o a extremos asociados, se debe reclamar la interfaz. Solo un identificador de conexión puede reclamar una interfaz en un momento determinado. Si ya se reclamó la interfaz, la llamada fallará.
Se debe llamar a releaseInterface
cuando ya no se necesita la interfaz.
Parámetros
-
handle
Una conexión abierta al dispositivo.
-
interfaceNumber
número
Es la interfaz que se reclamará.
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:() => void
Muestra
-
Promesa<void>
Chrome 116 y versiones posterioresLas promesas solo se admiten para Manifest V3 y versiones posteriores. Otras plataformas deben usar devoluciones de llamada.
closeDevice()
chrome.usb.closeDevice(
handle: ConnectionHandle,
callback?: function,
)
Cierra un controlador de conexión. Invocar operaciones en un controlador después de que se cerró es una operación segura, pero no implica que se tomen medidas.
Parámetros
-
handle
El
ConnectionHandle
que se debe cerrar. -
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:() => void
Muestra
-
Promesa<void>
Chrome 116 y versiones posterioresLas promesas solo son compatibles con Manifest V3 y versiones posteriores; otras plataformas deben usar devoluciones de llamada.
controlTransfer()
chrome.usb.controlTransfer(
handle: ConnectionHandle,
transferInfo: ControlTransferInfo,
callback?: function,
)
Realiza una transferencia de controles en el dispositivo especificado.
Las transferencias de control se refieren al dispositivo, a una interfaz o a un extremo. Las transferencias a una interfaz o un extremo requieren que se reclame la interfaz.
Parámetros
-
handle
Una conexión abierta al dispositivo
-
transferInfo
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:(info: TransferResultInfo) => void
-
información
-
Muestra
-
Promise<TransferResultInfo>
Chrome 116 y versiones posterioresLas promesas solo se admiten para Manifest V3 y versiones posteriores. Otras plataformas deben usar devoluciones de llamada.
findDevices()
chrome.usb.findDevices(
options: EnumerateDevicesAndRequestAccessOptions,
callback?: function,
)
Busca dispositivos USB especificados por los IDs de proveedor, producto y, de manera opcional, interfaz, y, si los permisos lo permiten, los abre para su uso.
Si se rechaza la solicitud de acceso o no se puede abrir el dispositivo, no se creará ni se mostrará el controlador de conexión.
Llamar a este método equivale a llamar a getDevices
seguido de openDevice
para cada dispositivo.
Parámetros
-
Las propiedades que se buscarán en los dispositivos de destino.
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:(handles: ConnectionHandle[]) => void
-
controles
-
Muestra
-
Promise<ConnectionHandle[]>
Chrome 116 y versiones posterioresLas promesas solo son compatibles con Manifest V3 y versiones posteriores; otras plataformas deben usar devoluciones de llamada.
getConfiguration()
chrome.usb.getConfiguration(
handle: ConnectionHandle,
callback?: function,
)
Obtiene el descriptor de configuración de la configuración seleccionada actualmente.
Parámetros
-
handle
Una conexión abierta al dispositivo.
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:(config: ConfigDescriptor) => void
-
config
-
Muestra
-
Promise<ConfigDescriptor>
Chrome 116 y versiones posterioresLas promesas solo son compatibles con Manifest V3 y versiones posteriores; otras plataformas deben usar devoluciones de llamada.
getConfigurations()
chrome.usb.getConfigurations(
device: Device,
callback?: function,
)
Devuelve el conjunto completo de descriptores de configuración del dispositivo.
Parámetros
-
dispositivo
El
Device
del que se recuperarán los descriptores. -
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:(configs: ConfigDescriptor[]) => void
-
configs
-
Muestra
-
Promise<ConfigDescriptor[]>
Chrome 116 y versiones posterioresLas promesas solo son compatibles con Manifest V3 y versiones posteriores; otras plataformas deben usar devoluciones de llamada.
getDevices()
chrome.usb.getDevices(
options: EnumerateDevicesOptions,
callback?: function,
)
Enumera los dispositivos USB conectados.
Parámetros
Muestra
-
Promesa<Dispositivo[]>
Chrome 116 y versiones posterioresLas promesas solo se admiten para Manifest V3 y versiones posteriores. Otras plataformas deben usar devoluciones de llamada.
getUserSelectedDevices()
chrome.usb.getUserSelectedDevices(
options: DevicePromptOptions,
callback?: function,
)
Presenta un selector de dispositivos al usuario y muestra los Device
seleccionados. Si el usuario cancela, los dispositivos del selector estarán vacíos. Se requiere un gesto del usuario para que se muestre el diálogo. Sin un gesto del usuario, la devolución de llamada se ejecutará como si el usuario hubiera cancelado.
Parámetros
Muestra
-
Promise<Device[]>
Chrome 116 y versiones posterioresLas promesas solo se admiten para Manifest V3 y versiones posteriores. Otras plataformas deben usar devoluciones de llamada.
interruptTransfer()
chrome.usb.interruptTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
)
Realiza una transferencia de interrupción en el dispositivo especificado.
Parámetros
-
handle
Una conexión abierta al dispositivo.
-
transferInfo
Los parámetros de transferencia
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:(info: TransferResultInfo) => void
-
información
-
Muestra
-
Promise<TransferResultInfo>
Chrome 116 y versiones posterioresLas promesas solo se admiten para Manifest V3 y versiones posteriores. Otras plataformas deben usar devoluciones de llamada.
isochronousTransfer()
chrome.usb.isochronousTransfer(
handle: ConnectionHandle,
transferInfo: IsochronousTransferInfo,
callback?: function,
)
Realiza una transferencia isócrona en el dispositivo específico.
Parámetros
-
handle
Una conexión abierta al dispositivo.
-
transferInfo
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:(info: TransferResultInfo) => void
-
información
-
Muestra
-
Promise<TransferResultInfo>
Chrome 116 y versiones posterioresLas promesas solo son compatibles con Manifest V3 y versiones posteriores; otras plataformas deben usar devoluciones de llamada.
listInterfaces()
chrome.usb.listInterfaces(
handle: ConnectionHandle,
callback?: function,
)
Muestra una lista de todas las interfaces de un dispositivo USB.
Parámetros
-
handle
Una conexión abierta al dispositivo
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:(descriptors: InterfaceDescriptor[]) => void
-
descriptores
-
Muestra
-
Promise<InterfaceDescriptor[]>
Chrome 116 y versiones posterioresLas promesas solo son compatibles con Manifest V3 y versiones posteriores; otras plataformas deben usar devoluciones de llamada.
openDevice()
chrome.usb.openDevice(
device: Device,
callback?: function,
)
Abre un dispositivo USB que devolvió getDevices
.
Parámetros
-
dispositivo
El
Device
para abrirlo. -
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:(handle: ConnectionHandle) => void
-
handle
-
Muestra
-
Promise<ConnectionHandle>
Chrome 116 y versiones posterioresLas promesas solo se admiten para Manifest V3 y versiones posteriores. Otras plataformas deben usar devoluciones de llamada.
releaseInterface()
chrome.usb.releaseInterface(
handle: ConnectionHandle,
interfaceNumber: number,
callback?: function,
)
Libera una interfaz reclamada.
Parámetros
-
handle
Una conexión abierta al dispositivo.
-
interfaceNumber
número
La interfaz que se lanzará.
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:() => void
Muestra
-
Promesa<void>
Chrome 116 y versiones posterioresLas promesas solo se admiten para Manifest V3 y versiones posteriores. Otras plataformas deben usar devoluciones de llamada.
requestAccess()
chrome.usb.requestAccess(
device: Device,
interfaceId: number,
callback?: function,
)
Esta función era específica de ChromeOS y no se podía llamar desde otras plataformas. Ahora, esta operación se realiza de forma implícita como parte de openDevice
, y esta función mostrará true
en todas las plataformas.
Solicita acceso del agente de permisos a un dispositivo reclamado por ChromeOS si no se reclama la interfaz determinada en el dispositivo.
Parámetros
-
dispositivo
El
Device
al que deseas solicitar acceso. -
interfaceId
número
Es la interfaz particular solicitada.
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:(success: boolean) => void
-
correcto
boolean
-
Muestra
-
Promise<boolean>
Chrome 116 y versiones posterioresLas promesas solo se admiten para Manifest V3 y versiones posteriores. Otras plataformas deben usar devoluciones de llamada.
resetDevice()
chrome.usb.resetDevice(
handle: ConnectionHandle,
callback?: function,
)
Intenta restablecer el dispositivo USB. Si el restablecimiento falla, se cerrará el identificador de conexión determinado y el dispositivo USB parecerá estar desconectado y, luego, se volverá a conectar. En este caso, se debe volver a llamar a getDevices
o findDevices
para adquirir el dispositivo.
Parámetros
-
handle
Un controlador de conexión para restablecer.
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:(success: boolean) => void
-
correcto
boolean
-
Muestra
-
Promise<boolean>
Chrome 116 y versiones posterioresLas promesas solo se admiten para Manifest V3 y versiones posteriores. Otras plataformas deben usar devoluciones de llamada.
setConfiguration()
chrome.usb.setConfiguration(
handle: ConnectionHandle,
configurationValue: number,
callback?: function,
)
Selecciona una configuración del dispositivo.
Esta función restablece de manera efectiva el dispositivo seleccionando una de las configuraciones disponibles. Solo son válidos los valores de configuración superiores a 0
. Sin embargo, algunos dispositivos con errores tienen una configuración 0
que funciona, por lo que se permite este valor.
Parámetros
-
handle
Una conexión abierta al dispositivo
-
configurationValue
número
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:() => void
Muestra
-
Promesa<void>
Chrome 116 y versiones posterioresLas promesas solo se admiten para Manifest V3 y versiones posteriores. Otras plataformas deben usar devoluciones de llamada.
setInterfaceAlternateSetting()
chrome.usb.setInterfaceAlternateSetting(
handle: ConnectionHandle,
interfaceNumber: number,
alternateSetting: number,
callback?: function,
)
Selecciona un parámetro de configuración alternativo en una interfaz reclamada anteriormente.
Parámetros
-
handle
Una conexión abierta con el dispositivo en el que se reclamó esta interfaz.
-
interfaceNumber
número
La interfaz que se configurará.
-
alternateSetting
número
El parámetro de configuración alternativo que se debe establecer.
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:() => void
Muestra
-
Promesa<void>
Chrome 116 y versiones posterioresLas promesas solo se admiten para Manifest V3 y versiones posteriores. Otras plataformas deben usar devoluciones de llamada.
Eventos
onDeviceAdded
chrome.usb.onDeviceAdded.addListener(
callback: function,
)
Es un evento que se genera cuando se agrega un dispositivo al sistema. Los eventos solo se transmiten a las apps y extensiones que tienen permiso para acceder al dispositivo. Es posible que se haya otorgado el permiso en el momento de la instalación, cuando el usuario aceptó un permiso opcional (consulta permissions.request
) o a través de getUserSelectedDevices
.
Parámetros
-
callback
función
El parámetro
callback
se ve de la siguiente manera:(device: Device) => void
-
dispositivo
-
onDeviceRemoved
chrome.usb.onDeviceRemoved.addListener(
callback: function,
)
Evento generado cuando se quita un dispositivo del sistema. Consulta onDeviceAdded
para ver qué eventos se publican.
Parámetros
-
callback
función
El parámetro
callback
se ve de la siguiente manera:(device: Device) => void
-
dispositivo
-