Descrição
Use a API chrome.usb
para interagir com dispositivos USB conectados. Essa API oferece 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 definindo runtime.lastError
e executando o callback regular da função. Nesse caso, os parâmetros regulares do callback serão indefinidos.
Permissões
usb
Tipos
ConfigDescriptor
Propriedades
-
ativo
booleano
Chrome 47 e versões mais recentesEsta é a configuração ativa?
-
configurationValue
number
O número da configuração.
-
descrição
string opcional
Descrição da configuração.
-
extra_data
ArrayBuffer
Dados de descritor extras associados a essa configuração.
-
interfaces
Interfaces disponíveis.
-
maxPower
number
Potência máxima necessária para este dispositivo em milissegundos (mA).
-
remoteWakeup
booleano
O dispositivo oferece suporte à ativação remota.
-
selfPowered
booleano
O dispositivo é independente.
ConnectionHandle
Propriedades
-
handle
number
Uma alça opaca que representa essa conexão com o dispositivo USB e todas as interfaces reivindicadas associadas e transferências pendentes. Um novo identificador é criado sempre que o dispositivo é aberto. O identificador de conexão é diferente do
Device.device
. -
productId
number
O ID do produto.
-
vendorId
number
O ID do fornecedor do dispositivo.
ControlTransferInfo
Propriedades
-
dados
ArrayBuffer opcional
Os dados a serem transmitidos (obrigatórios apenas para transferências de saída).
-
direção
A direção de baldeação (
"in"
ou"out"
). -
index
number
Para o campo
wIndex
, consulte Ibid. -
comprimento
número opcional
O número máximo de bytes a receber (obrigatório apenas para transferências de entrada).
-
destinatário
O destino da transferência. O destino fornecido por
index
precisa ser reivindicado se"interface"
ou"endpoint"
. -
solicitação
number
O campo
bRequest
. Consulte a Especificação de bus serial universal, revisão 1.1, § 9.3. -
requestType
O tipo de solicitação.
-
timeout
número opcional
Chrome 43 e versões mais recentesTempo limite da solicitação (em milissegundos). O valor padrão
0
indica que não há tempo limite. -
valor
number
Para o campo
wValue
, consulte Ibid.
Device
Propriedades
-
dispositivo
number
Um código 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
number
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
number
O ID do fornecedor do dispositivo.
-
version
number
Chrome 51 e versões mais recentesA versão do dispositivo (campo bcdDevice).
DeviceFilter
Propriedades
-
interfaceClass
número opcional
Classe de interface USB, corresponde a qualquer interface no dispositivo.
-
interfaceProtocol
número opcional
Protocolo de interface USB, marcado apenas se a subclasse de interface corresponder.
-
interfaceSubclass
número opcional
Subclasse da interface USB, marcada apenas se a classe da interface corresponder.
-
productId
número opcional
ID do produto do dispositivo, verificado apenas se o ID do fornecedor corresponder.
-
vendorId
número opcional
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 filtro serão exibidos.
-
várias
booleano opcional
Permita que o usuário selecione vários dispositivos.
Direction
Direction, Recipient, RequestType e TransferType são mapeados para os nomes correspondentes na especificação USB.
Enumeração
"in"
"out"
EndpointDescriptor
Propriedades
-
endereço
number
Endereço do endpoint.
-
direção
Direção da baldeação.
-
extra_data
ArrayBuffer
Dados extras do descritor associados a este endpoint.
-
maximumPacketSize
number
Tamanho máximo do pacote.
-
pollingInterval
número opcional
Intervalo de pesquisa (somente interrupção e isócrona).
-
sincronização
SynchronizationType opcional
Modo de transferência de sincronização (somente isocrono).
-
tipo
Tipo de transferência.
-
utilização
UsageType opcional
Dica de uso do endpoint.
EnumerateDevicesAndRequestAccessOptions
Propriedades
-
interfaceId
número opcional
O ID da interface para solicitar acesso. Disponível apenas no ChromeOS. Ela não tem efeito em outras plataformas.
-
productId
number
O ID do produto.
-
vendorId
number
O ID do fornecedor do dispositivo.
EnumerateDevicesOptions
Propriedades
-
filtros
DeviceFilter[] opcional
Um dispositivo correspondente a qualquer filtro será retornado. Uma lista de filtros vazia retornará todos os dispositivos para os quais o app tem permissão.
-
productId
número opcional
DescontinuadoEquivale a definir
DeviceFilter.productId
. -
vendorId
número opcional
DescontinuadoÉ equivalente à configuração de
DeviceFilter.vendorId
.
GenericTransferInfo
Propriedades
-
dados
ArrayBuffer opcional
Os dados a serem transmitidos (obrigatórios apenas para transferências de saída).
-
direção
A direção de baldeação (
"in"
ou"out"
). -
endpoint
number
O endereço do endpoint de destino. A interface que contém esse endpoint precisa ser reivindicada.
-
comprimento
número opcional
O número máximo de bytes a receber (obrigatório apenas para transferências de entrada).
-
timeout
número opcional
Chrome 43 e versões mais recentesTempo limite da solicitação (em milissegundos). O valor padrão
0
indica que não há tempo limite.
InterfaceDescriptor
Propriedades
-
alternateSetting
number
O número da configuração alternativa da interface (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
number
A classe de interface USB.
-
interfaceNumber
number
O número da interface.
-
interfaceProtocol
number
O protocolo de interface USB.
-
interfaceSubclass
number
A subclasse de interface USB.
IsochronousTransferInfo
Propriedades
-
packetLength
number
O tamanho de cada pacote nessa transferência.
-
pacotes
number
O número total de pacotes nessa transferência.
-
transferInfo
Parâmetros de transferência. O comprimento da transferência ou o buffer de dados especificados neste bloco de parâmetro é dividido ao longo dos limites de
packetLength
para formar os pacotes individuais da transferência.
Recipient
Enumeração
"device"
"endpoint"
"other"
RequestType
Enumeração
SynchronizationType
Para modos de interrupção e isocrônico, SynchronizationType e UsageType são mapeados para os nomes correspondentes na especificação USB.
Enumeração
"assíncrono"
"adaptativo"
TransferResultInfo
Propriedades
-
dados
ArrayBuffer opcional
Os dados retornados por uma transferência de entrada.
undefined
para transferências de saída. -
resultCode
número opcional
Um valor de
0
indica que a transferência foi bem-sucedida. Outros valores indicam falha.
TransferType
Enumeração
"bulk"
UsageType
Enumeração
"data"
"feedback"
"periodic"
Métodos
bulkTransfer()
chrome.usb.bulkTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
)
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 opcional
O parâmetro
callback
tem este formato:(info: TransferResultInfo) => void
-
informações
-
Retorna
-
Promessa<TransferResultInfo>
Chrome 116 ou versões mais recentesAs promessas só são compatíveis com o Manifesto V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
claimInterface()
chrome.usb.claimInterface(
handle: ConnectionHandle,
interfaceNumber: number,
callback?: function,
)
Reivindica uma interface em um dispositivo USB. Antes que os dados possam ser transferidos para uma interface ou endpoints associados, a interface deve ser reivindicada. Somente um identificador de conexão pode reivindicar uma interface a qualquer momento. Se a interface já tiver sido reivindicada, essa chamada vai falhar.
O releaseInterface
precisa ser chamado quando a interface não for mais necessária.
Parâmetros
-
handle
Uma conexão aberta com o dispositivo.
-
interfaceNumber
number
A interface a ser reivindicada.
-
callback
função opcional
O parâmetro
callback
tem esta aparência:() => void
Retorna
-
Promise<void>
Chrome 116 e versões mais recentesAs promessas só são compatíveis com o Manifesto V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
closeDevice()
chrome.usb.closeDevice(
handle: ConnectionHandle,
callback?: function,
)
Fecha um identificador de conexão. Invocar operações em um identificador depois do fechamento é uma operação segura, mas não faz com que nenhuma ação seja realizada.
Parâmetros
-
handle
O
ConnectionHandle
para fechar. -
callback
função opcional
O parâmetro
callback
tem este formato:() => void
Retorna
-
Promise<void>
Chrome 116 ou versões mais recentesAs promessas têm suporte apenas para o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
controlTransfer()
chrome.usb.controlTransfer(
handle: ConnectionHandle,
transferInfo: ControlTransferInfo,
callback?: function,
)
Transfere o controle para o 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 um endpoint exigem que a interface seja reivindicada.
Parâmetros
-
handle
Uma conexão aberta com o dispositivo.
-
transferInfo
-
callback
função opcional
O parâmetro
callback
tem esta aparência:(info: TransferResultInfo) => void
-
informações
-
Retorna
-
Promise<TransferResultInfo>
Chrome 116 ou versões mais recentesAs promessas têm suporte apenas para o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
findDevices()
chrome.usb.findDevices(
options: EnumerateDevicesAndRequestAccessOptions,
callback?: function,
)
Encontra dispositivos USB especificados pelo fornecedor, produto e (opcionalmente) IDs de interface e, se as permissões permitirem, os abre para uso.
Se a solicitação de acesso for rejeitada 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 opcional
O parâmetro
callback
tem este formato:(handles: ConnectionHandle[]) => void
-
alças
-
Retorna
-
Promise<ConnectionHandle[]>
Chrome 116 e versões mais recentesAs promessas só são compatíveis com o Manifesto V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
getConfiguration()
chrome.usb.getConfiguration(
handle: ConnectionHandle,
callback?: function,
)
Recebe o descritor da configuração selecionada no momento.
Parâmetros
-
handle
Uma conexão aberta com o dispositivo.
-
callback
função opcional
O parâmetro
callback
tem esta aparência:(config: ConfigDescriptor) => void
-
config
-
Retorna
-
Promise<ConfigDescriptor>
Chrome 116 ou versões mais recentesAs promessas têm suporte apenas para o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
getConfigurations()
chrome.usb.getConfigurations(
device: Device,
callback?: function,
)
Retorna o conjunto completo de descritores de configuração do dispositivo.
Parâmetros
-
dispositivo
O
Device
para buscar descritores. -
callback
função opcional
O parâmetro
callback
tem este formato:(configs: ConfigDescriptor[]) => void
-
configs
-
Retorna
-
Promise<ConfigDescriptor[]>
Chrome 116 e versões mais recentesAs promessas só são compatíveis com o Manifesto V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
getDevices()
chrome.usb.getDevices(
options: EnumerateDevicesOptions,
callback?: function,
)
Enumera os dispositivos USB conectados.
Parâmetros
-
opções
As propriedades a serem pesquisadas nos dispositivos de destino.
-
callback
função opcional
O parâmetro
callback
tem esta aparência:(devices: Device[]) => void
-
dispositivo
-
Retorna
-
Promessa<Dispositivo[]>
Chrome 116 e versões mais recentesAs promessas só são compatíveis com o Manifesto V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
getUserSelectedDevices()
chrome.usb.getUserSelectedDevices(
options: DevicePromptOptions,
callback?: function,
)
Apresenta um seletor de dispositivo ao usuário e retorna as Device
s selecionadas. Se o usuário cancelar, os dispositivos do seletor vão estar vazios. Um gesto do usuário é necessário para que a caixa de diálogo seja exibida. Sem um gesto do usuário, 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 dispositivo.
-
callback
função opcional
O parâmetro
callback
tem esta aparência:(devices: Device[]) => void
-
dispositivo
-
Retorna
-
Promise<Device[]>
Chrome 116 e versões mais recentesAs promessas têm suporte apenas para o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
interruptTransfer()
chrome.usb.interruptTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
)
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 opcional
O parâmetro
callback
tem este formato:(info: TransferResultInfo) => void
-
informações
-
Retorna
-
Promessa<TransferResultInfo>
Chrome 116 e versões mais recentesAs promessas só são compatíveis com o Manifesto V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
isochronousTransfer()
chrome.usb.isochronousTransfer(
handle: ConnectionHandle,
transferInfo: IsochronousTransferInfo,
callback?: function,
)
Executa uma transferência isócrona no dispositivo específico.
Parâmetros
-
handle
Uma conexão aberta com o dispositivo.
-
transferInfo
-
callback
função opcional
O parâmetro
callback
tem este formato:(info: TransferResultInfo) => void
-
informações
-
Retorna
-
Promessa<TransferResultInfo>
Chrome 116 e versões mais recentesAs promessas só são compatíveis com o Manifesto V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
listInterfaces()
chrome.usb.listInterfaces(
handle: ConnectionHandle,
callback?: function,
)
Lista todas as interfaces em um dispositivo USB.
Parâmetros
-
handle
Uma conexão aberta com o dispositivo.
-
callback
função opcional
O parâmetro
callback
tem este formato:(descriptors: InterfaceDescriptor[]) => void
-
descritores
-
Retorna
-
Promise<InterfaceDescriptor[]>
Chrome 116 e versões mais recentesAs promessas só são compatíveis com o Manifesto V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
openDevice()
chrome.usb.openDevice(
device: Device,
callback?: function,
)
Abre um dispositivo USB retornado por getDevices
.
Parâmetros
-
dispositivo
O
Device
a ser aberto. -
callback
função opcional
O parâmetro
callback
tem esta aparência:(handle: ConnectionHandle) => void
-
handle
-
Retorna
-
Promise<ConnectionHandle>
Chrome 116 ou versões mais recentesAs promessas têm suporte apenas para o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
releaseInterface()
chrome.usb.releaseInterface(
handle: ConnectionHandle,
interfaceNumber: number,
callback?: function,
)
Liberta uma interface reivindicada.
Parâmetros
-
handle
Uma conexão aberta com o dispositivo.
-
interfaceNumber
number
A interface a ser lançada.
-
callback
função opcional
O parâmetro
callback
tem este formato:() => void
Retorna
-
Promise<void>
Chrome 116 ou versões mais recentesAs promessas têm suporte apenas para o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
requestAccess()
chrome.usb.requestAccess(
device: Device,
interfaceId: number,
callback?: function,
)
Essa função era específica para o Chrome OS e chamá-la em outras plataformas falharia. Essa operação agora é executada implicitamente como parte de openDevice
, e essa função retorna true
em todas as plataformas.
Solicita acesso do agente de permissões a um dispositivo reivindicado pelo Chrome OS se a interface fornecida no dispositivo não for reivindicada.
Parâmetros
-
dispositivo
O
Device
que vai receber o acesso. -
interfaceId
number
A interface específica solicitada.
-
callback
função opcional
O parâmetro
callback
tem este formato:(success: boolean) => void
-
sucesso
booleano
-
Retorna
-
Promise<boolean>
Chrome 116 ou versões mais recentesAs promessas só são compatíveis com o Manifesto V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
resetDevice()
chrome.usb.resetDevice(
handle: ConnectionHandle,
callback?: function,
)
Tenta redefinir o dispositivo USB. Se a redefinição falhar, o identificador de conexão 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 a ser redefinido.
-
callback
função opcional
O parâmetro
callback
tem esta aparência:(success: boolean) => void
-
sucesso
booleano
-
Retorna
-
Promise<boolean>
Chrome 116 e versões mais recentesAs promessas só são compatíveis com o Manifesto V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
setConfiguration()
chrome.usb.setConfiguration(
handle: ConnectionHandle,
configurationValue: number,
callback?: function,
)
Selecione uma configuração do dispositivo.
Essa função redefine o dispositivo efetivamente ao selecionar uma das configurações disponíveis do dispositivo. Somente valores de configuração maiores que 0
são válidos. No entanto, alguns dispositivos com bugs têm uma configuração 0
em funcionamento. Por isso, esse valor é permitido.
Parâmetros
-
handle
Uma conexão aberta com o dispositivo.
-
configurationValue
number
-
callback
função opcional
O parâmetro
callback
tem este formato:() => void
Retorna
-
Promise<void>
Chrome 116 e versões mais recentesAs promessas só são compatíveis com o Manifesto V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
setInterfaceAlternateSetting()
chrome.usb.setInterfaceAlternateSetting(
handle: ConnectionHandle,
interfaceNumber: number,
alternateSetting: number,
callback?: function,
)
Seleciona uma configuração alternativa em uma interface reivindicada.
Parâmetros
-
handle
Uma conexão aberta com o dispositivo em que a interface foi reivindicada.
-
interfaceNumber
number
A interface a ser configurada.
-
alternateSetting
number
A configuração alternativa a ser definida.
-
callback
função opcional
O parâmetro
callback
tem este formato:() => void
Retorna
-
Promise<void>
Chrome 116 e versões mais recentesAs promessas só são compatíveis com o Manifesto 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 somente 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 meio de getUserSelectedDevices
.
Parâmetros
-
callback
função
O parâmetro
callback
tem este formato:(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
tem este formato:(device: Device) => void
-
dispositivo
-