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
usbTipos
ConfigDescriptor
Propriedades
-
ativo
booleano
Chrome 47 ou mais recenteEsta é 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 miliampères (mA).
-
remoteWakeup
booleano
O dispositivo é compatível com ativação remota.
-
selfPowered
booleano
O dispositivo é alimentado por bateria.
ConnectionHandle
Propriedades
-
handle
número
Um handle 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 (obrigatório apenas para transferências de saída).
-
direção
A direção da transferência (
"in"ou"out"). -
index
número
O campo
wIndex, consulte Ibid. -
comprimento
number optional
O número máximo de bytes a serem recebidos (obrigatório apenas para transferências de entrada).
-
destinatário
O destino da transferência. O destino fornecido por
indexprecisa ser reivindicado se for"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
number optional
Chrome 43 ou mais recenteTempo 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.
-
version
número
Chrome 51 ou mais recenteA versão do dispositivo (campo bcdDevice).
DeviceFilter
Propriedades
-
interfaceClass
number optional
Classe de interface USB, corresponde a qualquer interface no dispositivo.
-
interfaceProtocol
number optional
Protocolo de interface USB, verificado apenas se a subclasse da interface corresponder.
-
interfaceSubclass
number optional
Subclasse da interface USB, verificada apenas se a classe da interface corresponder.
-
productId
number optional
ID do produto do dispositivo, verificado apenas se o ID do fornecedor corresponder.
-
vendorId
number optional
ID do fornecedor do dispositivo.
DevicePromptOptions
Propriedades
-
filtros
DeviceFilter[] opcional
Filtra a lista de dispositivos apresentada ao usuário. Se vários filtros forem fornecidos, os dispositivos que corresponderem a qualquer um deles serão mostrados.
-
várias
booleano opcional
Permita que o usuário selecione vários dispositivos.
Direction
Direction, Recipient, RequestType e TransferType são mapeados para seus 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 este endpoint.
-
maximumPacketSize
número
Tamanho máximo do pacote.
-
pollingInterval
number optional
Intervalo de pesquisa (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
number optional
O ID da interface para solicitar acesso. Disponível apenas no Chrome OS. Isso 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 será retornado. Uma lista de filtros vazia vai retornar todos os dispositivos em que o app tem permissão.
-
productId
number optional
DescontinuadoEquivale a definir
DeviceFilter.productId. -
vendorId
number optional
DescontinuadoEquivale a definir
DeviceFilter.vendorId.
GenericTransferInfo
Propriedades
-
dados
ArrayBuffer opcional
Os dados a serem transmitidos (obrigatório 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
number optional
O número máximo de bytes a serem recebidos (obrigatório apenas para transferências de entrada).
-
timeout
number optional
Chrome 43 ou mais recenteTempo 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 comprimento de cada pacote nesta transferência.
-
pacotes
número
O número total de pacotes nesta transferência.
-
transferInfo
Parâmetros de transferência. O comprimento da transferência ou o buffer de dados especificado neste bloco de parâmetros é dividido ao longo dos limites
packetLengthpara formar os pacotes individuais da transferência.
Recipient
Enumeração
"device"
"interface"
"endpoint"
"other"
RequestType
Enumeração
"padrão"
"class"
"vendor"
"reserved"
SynchronizationType
Para os modos de interrupção e isócrono, SynchronizationType e UsageType são mapeados para seus homônimos na especificação USB.
Enumeração
"assíncrono"
"adaptive"
"synchronous"
TransferResultInfo
Propriedades
-
dados
ArrayBuffer opcional
Os dados retornados por uma transferência de entrada.
undefinedpara transferências de saída. -
resultCode
number optional
Um valor de
0indica que a transferência foi concluída. Outros valores indicam falha.
TransferType
Enumeração
"controle"
"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 opcional
O parâmetro
callbacktem esta aparência:(info: TransferResultInfo) => void
-
informações
-
Retorna
-
Promise<TransferResultInfo>
Chrome 116 ou mais recenteAs 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á estiver 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 opcional
O parâmetro
callbacktem esta aparência:() => void
Retorna
-
Promise<void>
Chrome 116 ou mais recenteAs 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 é fechado é uma operação segura, mas não causa nenhuma ação.
Parâmetros
-
handle
O
ConnectionHandlea ser fechado. -
callback
função opcional
O parâmetro
callbacktem esta aparência:() => void
Retorna
-
Promise<void>
Chrome 116 ou mais recenteAs 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. Para transferir para uma interface ou endpoint, é necessário reivindicar a interface.
Parâmetros
-
handle
Uma conexão aberta com o dispositivo.
-
transferInfo
-
callback
função opcional
O parâmetro
callbacktem esta aparência:(info: TransferResultInfo) => void
-
informações
-
Retorna
-
Promise<TransferResultInfo>
Chrome 116 ou mais recenteAs 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 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 puder ser 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
callbacktem esta aparência:(handles: ConnectionHandle[]) => void
-
identificadores
-
Retorna
-
Promise<ConnectionHandle[]>
Chrome 116 ou mais recenteAs 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 opcional
O parâmetro
callbacktem esta aparência:(config: ConfigDescriptor) => void
-
config
-
Retorna
-
Promise<ConfigDescriptor>
Chrome 116 ou mais recenteAs 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 opcional
O parâmetro
callbacktem esta aparência:(configs: ConfigDescriptor[]) => void
-
configs
-
Retorna
-
Promise<ConfigDescriptor[]>
Chrome 116 ou mais recenteAs 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 dispositivos USB conectados.
Parâmetros
Retorna
-
Promise<Device[]>
Chrome 116 ou mais recenteAs 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ário um gesto do usuá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
Retorna
-
Promise<Device[]>
Chrome 116 ou mais recenteAs 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>
Realiza 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
callbacktem esta aparência:(info: TransferResultInfo) => void
-
informações
-
Retorna
-
Promise<TransferResultInfo>
Chrome 116 ou mais recenteAs 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 opcional
O parâmetro
callbacktem esta aparência:(info: TransferResultInfo) => void
-
informações
-
Retorna
-
Promise<TransferResultInfo>
Chrome 116 ou mais recenteAs 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 opcional
O parâmetro
callbacktem esta aparência:(descriptors: InterfaceDescriptor[]) => void
-
descritores
-
Retorna
-
Promise<InterfaceDescriptor[]>
Chrome 116 ou mais recenteAs 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 opcional
O parâmetro
callbacktem esta aparência:(handle: ConnectionHandle) => void
-
handle
-
Retorna
-
Promise<ConnectionHandle>
Chrome 116 ou mais recenteAs 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 lançada.
-
callback
função opcional
O parâmetro
callbacktem esta aparência:() => void
Retorna
-
Promise<void>
Chrome 116 ou mais recenteAs 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 falhava quando chamada em outras plataformas. Agora, essa operação é realizada implicitamente como parte de openDevice, e essa função vai retornar true em todas as plataformas.
Solicita acesso do broker de permissões a um dispositivo reivindicado pelo Chrome OS se a interface especificada no dispositivo não for reivindicada.
Parâmetros
-
dispositivo
O
Devicepara solicitar acesso. -
interfaceId
número
A interface específica solicitada.
-
callback
função opcional
O parâmetro
callbacktem esta aparência:(success: boolean) => void
-
sucesso
booleano
-
Retorna
-
Promise<boolean>
Chrome 116 ou mais recenteAs 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 será fechado, e o dispositivo USB vai parecer desconectado e 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
callbacktem esta aparência:(success: boolean) => void
-
sucesso
booleano
-
Retorna
-
Promise<boolean>
Chrome 116 ou mais recenteAs 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 uma configuração de dispositivo.
Essa função redefine o dispositivo selecionando uma das configurações disponíveis. Apenas valores de configuração maiores que 0 são válidos, mas alguns dispositivos com bugs têm uma configuração 0 funcional. Por isso, esse valor é permitido.
Parâmetros
-
handle
Uma conexão aberta com o dispositivo.
-
configurationValue
número
-
callback
função opcional
O parâmetro
callbacktem esta aparência:() => void
Retorna
-
Promise<void>
Chrome 116 ou mais recenteAs 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 a ser definida.
-
callback
função opcional
O parâmetro
callbacktem esta aparência:() => void
Retorna
-
Promise<void>
Chrome 116 ou mais recenteAs 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ó são transmitidos 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
callbacktem esta aparência:(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
callbacktem esta aparência:(device: Device) => void
-
dispositivo
-