Descrição
Use a API chrome.usb para interagir com dispositivos USB conectados. Essa API fornece acesso a operações USB no contexto de um app. Com ela, os apps podem funcionar como drivers para dispositivos de hardware. Os erros gerados por essa API são informados ao definir runtime.lastError e executar o callback regular da função. Os parâmetros regulares do callback serão indefinidos nesse caso.
Permissões
usbDisponibilidade
Tipos
ConfigDescriptor
Propriedades
-
ativo
booleano
Chrome 47+Esta é a configuração ativa?
-
configurationValue
número
O número da configuração.
-
descrição
string opcional
Descrição da configuração.
-
extra_data
ArrayBuffer
Dados extras do descritor associados a essa configuração.
-
interfaces
Interfaces disponíveis.
-
maxPower
número
A potência máxima necessária para este dispositivo em miliamperes (mA).
-
remoteWakeup
booleano
O dispositivo é compatível com ativação remota.
-
selfPowered
booleano
O dispositivo tem alimentação própria.
ConnectionHandle
Propriedades
-
handle
número
Um identificador opaco que representa essa conexão com o dispositivo USB e todas as interfaces reivindicadas e transferências pendentes associadas. Um novo identificador é criado sempre que o dispositivo é aberto. O identificador de conexão é diferente de
Device.device. -
productId
número
O ID do produto.
-
vendorId
número
O ID do fornecedor do dispositivo.
ControlTransferInfo
Propriedades
-
dados
ArrayBuffer opcional
Os dados a serem transmitidos (necessários apenas para transferências de saída).
-
direção
A direção da transferência (
"in"ou"out"). -
índice
número
O campo
wIndex, consulte Ibid. -
comprimento
número optional
O número máximo de bytes a serem recebidos (necessário apenas para transferências de entrada).
-
destinatário
O destino da transferência. O destino fornecido por
indexprecisa ser reivindicado se"interface"ou"endpoint". -
solicitação
número
O campo
bRequest, consulte Universal Serial Bus Specification Revision 1.1 § 9.3. -
requestType
O tipo de solicitação.
-
timeout
número optional
Chrome 43+Tempo limite da solicitação (em milissegundos). O valor padrão
0indica que não há tempo limite. -
valor
número
O campo
wValue, consulte Ibid.
Device
Propriedades
-
dispositivo
número
Um ID opaco para o dispositivo USB. Ele permanece inalterado até que o dispositivo seja desconectado.
-
manufacturerName
string
Chrome 46 ou mais recenteA string iManufacturer lida do dispositivo, se disponível.
-
productId
número
O ID do produto.
-
productName
string
Chrome 46 ou mais recenteA string iProduct lida do dispositivo, se disponível.
-
serialNumber
string
Chrome 46 ou mais recenteA string iSerialNumber lida do dispositivo, se disponível.
-
vendorId
número
O ID do fornecedor do dispositivo.
-
versão
número
Chrome 51 ou mais recenteA versão do dispositivo (campo bcdDevice).
DeviceFilter
Propriedades
-
interfaceClass
número optional
Classe de interface USB, corresponde a qualquer interface no dispositivo.
-
interfaceProtocol
número optional
Protocolo de interface USB, verificado apenas se a subclasse da interface corresponder.
-
interfaceSubclass
número optional
Subclasse da interface USB, verificada apenas se a classe da interface corresponder.
-
productId
número optional
ID do produto do dispositivo, verificado apenas se o ID do fornecedor corresponder.
-
vendorId
número optional
ID do fornecedor do dispositivo.
DevicePromptOptions
Propriedades
-
filtros
DeviceFilter[] opcional
Filtre a lista de dispositivos apresentada ao usuário. Se vários filtros forem fornecidos, os dispositivos que corresponderem a qualquer um deles serão exibidos.
-
várias
booleano opcional
Permitir que o usuário selecione vários dispositivos.
Direction
Direction, Recipient, RequestType e TransferType são mapeados para os homônimos na especificação USB.
Enumeração
"in"
"out"
EndpointDescriptor
Propriedades
-
endereço
número
Endereço do endpoint.
-
direção
Direção da transferência.
-
extra_data
ArrayBuffer
Dados extras do descritor associados a esse endpoint.
-
maximumPacketSize
número
Tamanho máximo do pacote.
-
pollingInterval
número optional
Intervalo de sondagem (somente interrupção e isócrono).
-
sincronização
SynchronizationType opcional
Modo de sincronização de transferência (somente isócrono).
-
tipo
Tipo de transferência.
-
utilização
UsageType opcional
Dica de uso do endpoint.
EnumerateDevicesAndRequestAccessOptions
Propriedades
-
interfaceId
número optional
O ID da interface para solicitar acesso. Disponível apenas no Chrome OS. Ela não afeta outras plataformas.
-
productId
número
O ID do produto.
-
vendorId
número
O ID do fornecedor do dispositivo.
EnumerateDevicesOptions
Propriedades
-
filtros
DeviceFilter[] opcional
Um dispositivo que corresponda a qualquer filtro fornecido será retornado. Uma lista de filtros vazia vai retornar todos os dispositivos para os quais o app tem permissão.
-
productId
número optional
DescontinuadoEquivale a definir
DeviceFilter.productId. -
vendorId
número optional
DescontinuadoEquivale a definir
DeviceFilter.vendorId.
GenericTransferInfo
Propriedades
-
dados
ArrayBuffer opcional
Os dados a serem transmitidos (necessários apenas para transferências de saída).
-
direção
A direção da transferência (
"in"ou"out"). -
endpoint
número
O endereço do endpoint de destino. A interface que contém esse endpoint precisa ser reivindicada.
-
comprimento
número optional
O número máximo de bytes a serem recebidos (necessário apenas para transferências de entrada).
-
timeout
número optional
Chrome 43+Tempo limite da solicitação (em milissegundos). O valor padrão
0indica que não há tempo limite.
InterfaceDescriptor
Propriedades
-
alternateSetting
número
O número da configuração alternativa da interface (o padrão é
0). -
descrição
string opcional
Descrição da interface.
-
endpoints
Endpoints disponíveis.
-
extra_data
ArrayBuffer
Dados extras do descritor associados a essa interface.
-
interfaceClass
número
A classe de interface USB.
-
interfaceNumber
número
O número da interface.
-
interfaceProtocol
número
O protocolo de interface USB.
-
interfaceSubclass
número
A subclasse da interface USB.
IsochronousTransferInfo
Propriedades
-
packetLength
número
O tamanho de cada um dos pacotes nessa transferência.
-
pacotes
número
O número total de pacotes nesta transferência.
-
transferInfo
Parâmetros de transferência. O tamanho da transferência ou o buffer de dados especificado neste bloco de parâmetros é dividido ao longo dos limites de
packetLengthpara formar os pacotes individuais da transferência.
Recipient
Enumeração
"device"
"interface"
"endpoint"
"other"
RequestType
Enumeração
"standard"
"class"
"vendor"
"reserved"
SynchronizationType
Para os modos de interrupção e isócrono, SynchronizationType e UsageType são mapeados para os homônimos na especificação USB.
Enumeração
"asynchronous"
"adaptive"
"synchronous"
TransferResultInfo
Propriedades
-
dados
ArrayBuffer opcional
Os dados retornados por uma transferência de entrada.
undefinedpara transferências de saída. -
resultCode
número optional
O valor
0indica que a transferência foi bem-sucedida. Outros valores indicam falha.
TransferType
Enumeração
"control"
"interrupt"
"isochronous"
"bulk"
UsageType
Enumeração
"data"
"feedback"
"explicitFeedback"
"periodic"
"notification"
Métodos
bulkTransfer()
chrome.usb.bulkTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
Realiza uma transferência em massa no dispositivo especificado.
Parâmetros
-
handle
Uma conexão aberta com o dispositivo.
-
transferInfo
Os parâmetros de transferência.
-
callback
função optional
O parâmetro
callbacké semelhante a:(info: TransferResultInfo) => void
-
informações
-
Retorna
-
Promise<TransferResultInfo>
Chrome 116+As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
claimInterface()
chrome.usb.claimInterface(
handle: ConnectionHandle,
interfaceNumber: number,
callback?: function,
): Promise<void>
Reivindica uma interface em um dispositivo USB. Antes que os dados possam ser transferidos para uma interface ou endpoints associados, a interface precisa ser reivindicada. Apenas um identificador de conexão pode reivindicar uma interface por vez. Se a interface já tiver sido reivindicada, essa chamada vai falhar.
releaseInterface precisa ser chamado quando a interface não for mais necessária.
Parâmetros
-
handle
Uma conexão aberta com o dispositivo.
-
interfaceNumber
número
A interface a ser reivindicada.
-
callback
função optional
O parâmetro
callbacké semelhante a:() => void
Retorna
-
Promessa<void>
Chrome 116+As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
closeDevice()
chrome.usb.closeDevice(
handle: ConnectionHandle,
callback?: function,
): Promise<void>
Fecha um identificador de conexão. Invocar operações em um identificador depois que ele foi fechado é uma operação segura, mas não causa nenhuma ação.
Parâmetros
-
handle
O
ConnectionHandlepara fechar. -
callback
função optional
O parâmetro
callbacké semelhante a:() => void
Retorna
-
Promessa<void>
Chrome 116+As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
controlTransfer()
chrome.usb.controlTransfer(
handle: ConnectionHandle,
transferInfo: ControlTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
Executa uma transferência de controle no dispositivo especificado.
As transferências de controle se referem ao dispositivo, a uma interface ou a um endpoint. As transferências para uma interface ou endpoint exigem que a interface seja reivindicada.
Parâmetros
-
handle
Uma conexão aberta com o dispositivo.
-
transferInfo
-
callback
função optional
O parâmetro
callbacké semelhante a:(info: TransferResultInfo) => void
-
informações
-
Retorna
-
Promise<TransferResultInfo>
Chrome 116+As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
findDevices()
chrome.usb.findDevices(
options: EnumerateDevicesAndRequestAccessOptions,
callback?: function,
): Promise<ConnectionHandle[]>
Encontra dispositivos USB especificados pelos IDs de fornecedor, produto e (opcionalmente) interface e, se as permissões permitirem, os abre para uso.
Se o pedido de acesso for rejeitado ou o dispositivo não for aberto, um identificador de conexão não será criado nem retornado.
Chamar esse método é equivalente a chamar getDevices seguido de openDevice para cada dispositivo.
Parâmetros
-
As propriedades a serem pesquisadas nos dispositivos de destino.
-
callback
função optional
O parâmetro
callbacké semelhante a:(handles: ConnectionHandle[]) => void
-
identificadores
-
Retorna
-
Promise<ConnectionHandle[]>
Chrome 116+As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
getConfiguration()
chrome.usb.getConfiguration(
handle: ConnectionHandle,
callback?: function,
): Promise<ConfigDescriptor>
Recebe o descritor da configuração selecionada no momento.
Parâmetros
-
handle
Uma conexão aberta com o dispositivo.
-
callback
função optional
O parâmetro
callbacké semelhante a:(config: ConfigDescriptor) => void
-
config
-
Retorna
-
Promise<ConfigDescriptor>
Chrome 116+As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
getConfigurations()
chrome.usb.getConfigurations(
device: Device,
callback?: function,
): Promise<ConfigDescriptor[]>
Retorna o conjunto completo de descritores de configuração do dispositivo.
Parâmetros
-
dispositivo
O
Devicede onde os descritores serão buscados. -
callback
função optional
O parâmetro
callbacké semelhante a:(configs: ConfigDescriptor[]) => void
-
configs
-
Retorna
-
Promise<ConfigDescriptor[]>
Chrome 116+As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
getDevices()
chrome.usb.getDevices(
options: EnumerateDevicesOptions,
callback?: function,
): Promise<Device[]>
Enumera os dispositivos USB conectados.
Parâmetros
-
opções
As propriedades a serem pesquisadas nos dispositivos de destino.
-
callback
função optional
O parâmetro
callbacké semelhante a:(devices: Device[]) => void
-
dispositivos
-
Retorna
-
Promise<Device[]>
Chrome 116+As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
getUserSelectedDevices()
chrome.usb.getUserSelectedDevices(
options: DevicePromptOptions,
callback?: function,
): Promise<Device[]>
Apresenta um seletor de dispositivos ao usuário e retorna os Devices selecionados. Se o usuário cancelar o seletor, os dispositivos vão ficar vazios. É necessária uma interação do usuário para que a caixa de diálogo seja exibida. Sem uma interação inicial, o callback será executado como se o usuário tivesse cancelado.
Parâmetros
-
opções
Configuração da caixa de diálogo do seletor de dispositivos.
-
callback
função optional
O parâmetro
callbacké semelhante a:(devices: Device[]) => void
-
dispositivos
-
Retorna
-
Promise<Device[]>
Chrome 116+As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
interruptTransfer()
chrome.usb.interruptTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
Executa uma transferência de interrupção no dispositivo especificado.
Parâmetros
-
handle
Uma conexão aberta com o dispositivo.
-
transferInfo
Os parâmetros de transferência.
-
callback
função optional
O parâmetro
callbacké semelhante a:(info: TransferResultInfo) => void
-
informações
-
Retorna
-
Promise<TransferResultInfo>
Chrome 116+As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
isochronousTransfer()
chrome.usb.isochronousTransfer(
handle: ConnectionHandle,
transferInfo: IsochronousTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
Realiza uma transferência isócrona no dispositivo específico.
Parâmetros
-
handle
Uma conexão aberta com o dispositivo.
-
transferInfo
-
callback
função optional
O parâmetro
callbacké semelhante a:(info: TransferResultInfo) => void
-
informações
-
Retorna
-
Promise<TransferResultInfo>
Chrome 116+As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
listInterfaces()
chrome.usb.listInterfaces(
handle: ConnectionHandle,
callback?: function,
): Promise<InterfaceDescriptor[]>
Lista todas as interfaces em um dispositivo USB.
Parâmetros
-
handle
Uma conexão aberta com o dispositivo.
-
callback
função optional
O parâmetro
callbacké semelhante a:(descriptors: InterfaceDescriptor[]) => void
-
descritores
-
Retorna
-
Promise<InterfaceDescriptor[]>
Chrome 116+As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
openDevice()
chrome.usb.openDevice(
device: Device,
callback?: function,
): Promise<ConnectionHandle>
Abre um dispositivo USB retornado por getDevices.
Parâmetros
-
dispositivo
O
Devicea ser aberto. -
callback
função optional
O parâmetro
callbacké semelhante a:(handle: ConnectionHandle) => void
-
handle
-
Retorna
-
Promise<ConnectionHandle>
Chrome 116+As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
releaseInterface()
chrome.usb.releaseInterface(
handle: ConnectionHandle,
interfaceNumber: number,
callback?: function,
): Promise<void>
Libera uma interface reivindicada.
Parâmetros
-
handle
Uma conexão aberta com o dispositivo.
-
interfaceNumber
número
A interface a ser liberada.
-
callback
função optional
O parâmetro
callbacké semelhante a:() => void
Retorna
-
Promessa<void>
Chrome 116+As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
requestAccess()
chrome.usb.requestAccess(
device: Device,
interfaceId: number,
callback?: function,
): Promise<boolean>
Essa função era específica do Chrome OS, e chamá-la em outras plataformas resultava em falha. Essa operação agora é realizada implicitamente como parte de openDevice, e essa função vai retornar true em todas as plataformas.
Solicita acesso do agente de permissões a um dispositivo reivindicado pelo ChromeOS se a interface fornecida no dispositivo não for reivindicada.
Parâmetros
-
dispositivo
O
Devicepara solicitar acesso. -
interfaceId
número
A interface específica solicitada.
-
callback
função optional
O parâmetro
callbacké semelhante a:(success: boolean) => void
-
sucesso
booleano
-
Retorna
-
Promise<boolean>
Chrome 116+As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
resetDevice()
chrome.usb.resetDevice(
handle: ConnectionHandle,
callback?: function,
): Promise<boolean>
Tenta redefinir o dispositivo USB. Se a redefinição falhar, o identificador de conexão fornecido será fechado, e o dispositivo USB vai parecer desconectado e depois reconectado. Nesse caso, getDevices ou findDevices precisa ser chamado novamente para adquirir o dispositivo.
Parâmetros
-
handle
Um identificador de conexão para redefinir.
-
callback
função optional
O parâmetro
callbacké semelhante a:(success: boolean) => void
-
sucesso
booleano
-
Retorna
-
Promise<boolean>
Chrome 116+As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
setConfiguration()
chrome.usb.setConfiguration(
handle: ConnectionHandle,
configurationValue: number,
callback?: function,
): Promise<void>
Selecione um Configurador do dispositivo.
Essa função redefine o dispositivo selecionando uma das configurações disponíveis. Somente valores de configuração maiores que 0 são válidos, mas alguns dispositivos com bugs têm uma configuração 0 que funciona, então esse valor é permitido.
Parâmetros
-
handle
Uma conexão aberta com o dispositivo.
-
configurationValue
número
-
callback
função optional
O parâmetro
callbacké semelhante a:() => void
Retorna
-
Promessa<void>
Chrome 116+As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
setInterfaceAlternateSetting()
chrome.usb.setInterfaceAlternateSetting(
handle: ConnectionHandle,
interfaceNumber: number,
alternateSetting: number,
callback?: function,
): Promise<void>
Seleciona uma configuração alternativa em uma interface reivindicada anteriormente.
Parâmetros
-
handle
Uma conexão aberta com o dispositivo em que essa interface foi reivindicada.
-
interfaceNumber
número
A interface a ser configurada.
-
alternateSetting
número
A configuração alternativa.
-
callback
função optional
O parâmetro
callbacké semelhante a:() => void
Retorna
-
Promessa<void>
Chrome 116+As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
Eventos
onDeviceAdded
chrome.usb.onDeviceAdded.addListener(
callback: function,
)
Evento gerado quando um dispositivo é adicionado ao sistema. Os eventos são transmitidos apenas para apps e extensões que têm permissão para acessar o dispositivo. A permissão pode ter sido concedida no momento da instalação, quando o usuário aceitou uma permissão opcional (consulte permissions.request) ou por getUserSelectedDevices.
Parâmetros
-
callback
função
O parâmetro
callbacké semelhante a:(device: Device) => void
-
dispositivo
-
onDeviceRemoved
chrome.usb.onDeviceRemoved.addListener(
callback: function,
)
Evento gerado quando um dispositivo é removido do sistema. Consulte onDeviceAdded para saber quais eventos são entregues.
Parâmetros
-
callback
função
O parâmetro
callbacké semelhante a:(device: Device) => void
-
dispositivo
-