Descrizione
Utilizza l'API chrome.usb
per interagire con i dispositivi USB connessi. Questa API consente di accedere alle operazioni USB dall'interno di un'app. Utilizzando questa API, le app possono fungere da driver per i dispositivi hardware. Gli errori generati da questa API vengono segnalati impostando runtime.lastError
ed eseguendo il normale callback della funzione. In questo caso, i parametri normali del callback non saranno definiti.
Autorizzazioni
usb
Tipi
ConfigDescriptor
Proprietà
-
attivo
booleano
Chrome 47 e versioni successive .Questa è la configurazione attiva?
-
configurationValue
numero
Il numero di configurazione.
-
descrizione
stringa facoltativo
Descrizione della configurazione.
-
extra_data
ArrayBuffer
Dati dei descrittori aggiuntivi associati a questa configurazione.
-
interfacce
Interfacce disponibili.
-
maxPower
numero
La potenza massima richiesta da questo dispositivo in milliampere (mA).
-
remoteWakeup
booleano
Il dispositivo supporta la riattivazione remota.
-
selfPowered
booleano
Il dispositivo è autoalimentato.
ConnectionHandle
Proprietà
-
handle
numero
Un handle opaco che rappresenta questa connessione al dispositivo USB e tutte le interfacce dichiarate associate e i trasferimenti in attesa. Ogni volta che apri il dispositivo viene creato un nuovo handle. L'handle di connessione è diverso da
Device.device
. -
productId
numero
L'ID del prodotto.
-
vendorId
numero
L'ID del fornitore del dispositivo.
ControlTransferInfo
Proprietà
-
dati
ArrayBuffer facoltativo
I dati da trasmettere (richiesti solo per i trasferimenti di output).
-
direction
La direzione di trasferimento (
"in"
o"out"
). -
indice
numero
Il campo
wIndex
, vedi Ibid. -
lunghezza
numero facoltativo
Il numero massimo di byte da ricevere (richiesto solo per i trasferimenti di input).
-
destinatario
La destinazione del trasferimento. Il target specificato da
index
deve essere rivendicato se"interface"
o"endpoint"
. -
richiesta
numero
Il campo
bRequest
, vedi Universal Serial Bus Specification Revisione 1.1 § 9.3. -
requestType
Il tipo di richiesta.
-
timeout
numero facoltativo
Chrome 43 e versioni successive .Timeout richiesta (in millisecondi). Il valore predefinito
0
indica nessun timeout. -
valore
numero
Il campo
wValue
, vedi Ibid.
Device
Proprietà
-
dispositivo
numero
Un ID opaco per il dispositivo USB. e rimane invariata finché il dispositivo non viene scollegato dall'alimentazione.
-
manufacturerName
stringa
Chrome 46 e versioni successive .La stringa iManufacturer letta dal dispositivo, se disponibile.
-
productId
numero
L'ID del prodotto.
-
productName
stringa
Chrome 46 e versioni successive .La stringa iProduct letta dal dispositivo, se disponibile.
-
serialNumber
stringa
Chrome 46 e versioni successive .La stringa iSerialNumber letta dal dispositivo, se disponibile.
-
vendorId
numero
L'ID del fornitore del dispositivo.
-
versione
numero
Chrome 51 e versioni successive .La versione del dispositivo (campo bcdDevice).
DeviceFilter
Proprietà
-
interfaceClass
numero facoltativo
Classe di interfaccia USB, corrisponde a qualsiasi interfaccia sul dispositivo.
-
interfaceProtocol
numero facoltativo
Protocollo di interfaccia USB, controllato solo se la sottoclasse dell'interfaccia corrisponde.
-
interfaceSubclass
numero facoltativo
Sottoclasse dell'interfaccia USB, selezionata solo se la classe dell'interfaccia corrisponde.
-
productId
numero facoltativo
ID prodotto dispositivo, controllato solo se l'ID fornitore corrisponde.
-
vendorId
numero facoltativo
ID del fornitore del dispositivo.
DevicePromptOptions
Proprietà
-
filtri
DeviceFilter[] facoltativo
Filtra l'elenco dei dispositivi presentati all'utente. Se sono disponibili più filtri, verranno visualizzati i dispositivi che corrispondono a un filtro qualsiasi.
-
multiple
booleano facoltativo
Consenti all'utente di selezionare più dispositivi.
Direction
Direction, Recipient, RequestType e TransferType corrispondono tutti ai rispettivi nomi all'interno della specifica USB.
Enum
"in"
"out"
EndpointDescriptor
Proprietà
-
indirizzo
numero
Indirizzo endpoint.
-
direction
Direzione di trasferimento.
-
extra_data
ArrayBuffer
Dati dei descrittori aggiuntivi associati a questo endpoint.
-
maximumPacketSize
numero
Dimensione massima del pacchetto.
-
pollingInterval
numero facoltativo
Intervallo di polling (solo interrupt e incrono).
-
dell'audiodescrizione
SynchronizationType facoltativo
Modalità di sincronizzazione dei trasferimenti (solo sincronizzazione cronologica).
-
tipo
Tipo di trasferimento.
-
utilizzo
UsageType facoltativo
Suggerimento per l'utilizzo degli endpoint.
EnumerateDevicesAndRequestAccessOptions
Proprietà
-
interfaceId
numero facoltativo
L'ID interfaccia per richiedere l'accesso. Disponibile solo su ChromeOS. Non avrà alcun effetto sulle altre piattaforme.
-
productId
numero
L'ID del prodotto.
-
vendorId
numero
L'ID del fornitore del dispositivo.
EnumerateDevicesOptions
Proprietà
-
filtri
DeviceFilter[] facoltativo
Verrà restituito un dispositivo corrispondente a un determinato filtro. Un elenco di filtri vuoto restituirà tutti i dispositivi per cui l'app è autorizzata.
-
productId
numero facoltativo
ObsoletaEquivale all'impostazione
DeviceFilter.productId
. -
vendorId
numero facoltativo
ObsoletaEquivale all'impostazione
DeviceFilter.vendorId
.
GenericTransferInfo
Proprietà
-
dati
ArrayBuffer facoltativo
I dati da trasmettere (richiesti solo per i trasferimenti di output).
-
direction
La direzione di trasferimento (
"in"
o"out"
). -
endpoint
numero
L'indirizzo dell'endpoint di destinazione. È necessario rivendicare l'interfaccia contenente questo endpoint.
-
lunghezza
numero facoltativo
Il numero massimo di byte da ricevere (richiesto solo per i trasferimenti di input).
-
timeout
numero facoltativo
Chrome 43 e versioni successive .Timeout richiesta (in millisecondi). Il valore predefinito
0
indica nessun timeout.
InterfaceDescriptor
Proprietà
-
alternateSetting
numero
Il numero di impostazione alternativa dell'interfaccia (il valore predefinito è
0
) -
descrizione
stringa facoltativo
Descrizione dell'interfaccia.
-
endpoints
Endpoint disponibili.
-
extra_data
ArrayBuffer
Dati dei descrittori aggiuntivi associati a questa interfaccia.
-
interfaceClass
numero
La classe dell'interfaccia USB.
-
interfaceNumber
numero
Il numero di interfaccia.
-
interfaceProtocol
numero
Il protocollo dell'interfaccia USB.
-
interfaceSubclass
numero
La sottoclasse dell'interfaccia USB.
IsochronousTransferInfo
Proprietà
-
packetLength
numero
La lunghezza di ciascuno dei pacchetti in questo trasferimento.
-
pacchetti
numero
Il numero totale di pacchetti in questo trasferimento.
-
transferInfo
Parametri di trasferimento. La lunghezza di trasferimento o il buffer di dati specificati in questo blocco di parametri sono suddivisi lungo i limiti di
packetLength
per formare i singoli pacchetti del trasferimento.
Recipient
Enum
"dispositivo"
"interfaccia"
"endpoint"
"altro"
RequestType
Enum
"standard"
"classe"
"fornitore"
"prenotato"
SynchronizationType
Per le modalità di interruzione e di sincronizzazione, SynchronizationType e UsageType mappano ai rispettivi nomi all'interno della specifica USB.
Enum
"asincrono"
"adattiva"
"sincrono"
TransferResultInfo
Proprietà
-
dati
ArrayBuffer facoltativo
I dati restituiti da un trasferimento di input.
undefined
per i trasferimenti di output. -
resultCode
numero facoltativo
Il valore
0
indica che il trasferimento è stato eseguito correttamente. Altri valori indicano un errore.
TransferType
Enum
"control"
"interrupt"
"isocrono"
"collettivo"
UsageType
Enum
"dati"
"feedback"
"explicitFeedback"
"periodic"
"notifica"
Metodi
bulkTransfer()
chrome.usb.bulkTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
)
Esegue un trasferimento collettivo sul dispositivo specificato.
Parametri
-
handle
Una connessione aperta al dispositivo.
-
transferInfo
I parametri di trasferimento.
-
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:(info: TransferResultInfo) => void
-
informazioni
-
Resi
-
Promise<TransferResultInfo>
Chrome 116 e versioni successive .Le promesse sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.
claimInterface()
chrome.usb.claimInterface(
handle: ConnectionHandle,
interfaceNumber: number,
callback?: function,
)
Rivendica un'interfaccia su un dispositivo USB. Prima che i dati possano essere trasferiti a un'interfaccia o agli endpoint associati, è necessario rivendicare l'interfaccia. Un solo handle di connessione può rivendicare un'interfaccia in un determinato momento. Se l'interfaccia è già stata rivendicata, questa chiamata non andrà a buon fine.
releaseInterface
dovrebbe essere chiamato quando l'interfaccia non è più necessaria.
Parametri
-
handle
Una connessione aperta al dispositivo.
-
interfaceNumber
numero
L'interfaccia da rivendicare.
-
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:() => void
Resi
-
Promesso<void>
Chrome 116 e versioni successive .Le promesse sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.
closeDevice()
chrome.usb.closeDevice(
handle: ConnectionHandle,
callback?: function,
)
Chiude un handle di connessione. Chiamare operazioni su un handle dopo averlo chiuso è un'operazione sicura, ma non comporta alcuna azione.
Parametri
-
handle
La
ConnectionHandle
per chiudere. -
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:() => void
Resi
-
Promesso<void>
Chrome 116 e versioni successive .Le promesse sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.
controlTransfer()
chrome.usb.controlTransfer(
handle: ConnectionHandle,
transferInfo: ControlTransferInfo,
callback?: function,
)
Esegue un trasferimento del controllo sul dispositivo specificato.
Per trasferimenti di controllo si intendono il dispositivo, un'interfaccia o un endpoint. I trasferimenti a un'interfaccia o a un endpoint richiedono la rivendicazione dell'interfaccia.
Parametri
-
handle
Una connessione aperta al dispositivo.
-
transferInfo
-
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:(info: TransferResultInfo) => void
-
informazioni
-
Resi
-
Promise<TransferResultInfo>
Chrome 116 e versioni successive .Le promesse sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.
findDevices()
chrome.usb.findDevices(
options: EnumerateDevicesAndRequestAccessOptions,
callback?: function,
)
Trova i dispositivi USB specificati dagli ID fornitore, prodotto e (facoltativamente) interfaccia e, se le autorizzazioni lo consentono, li apre per l'uso.
Se la richiesta di accesso viene rifiutata o se il dispositivo non si apre, non verrà creato né restituito un handle di connessione.
Questo metodo equivale a chiamare getDevices
seguito da openDevice
per ogni dispositivo.
Parametri
-
Le proprietà da cercare sui dispositivi di destinazione.
-
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:(handles: ConnectionHandle[]) => void
-
handle
-
Resi
-
Promise<ConnectionHandle[]>
Chrome 116 e versioni successive .Le promesse sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.
getConfiguration()
chrome.usb.getConfiguration(
handle: ConnectionHandle,
callback?: function,
)
Recupera il descrittore di configurazione per la configurazione attualmente selezionata.
Parametri
-
handle
Una connessione aperta al dispositivo.
-
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:(config: ConfigDescriptor) => void
-
config
-
Resi
-
Promise<ConfigDescriptor>
Chrome 116 e versioni successive .Le promesse sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.
getConfigurations()
chrome.usb.getConfigurations(
device: Device,
callback?: function,
)
Restituisce l'insieme completo dei descrittori di configurazione del dispositivo.
Parametri
-
dispositivo
Il
Device
da cui recuperare i descrittori. -
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:(configs: ConfigDescriptor[]) => void
-
configs
-
Resi
-
Promise<ConfigDescriptor[]>
Chrome 116 e versioni successive .Le promesse sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.
getDevices()
chrome.usb.getDevices(
options: EnumerateDevicesOptions,
callback?: function,
)
Sono elencati i dispositivi USB connessi.
Parametri
-
opzioni
Le proprietà da cercare sui dispositivi di destinazione.
-
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:(devices: Device[]) => void
-
dispositivi
-
Resi
-
Prometti <dispositivo[]>
Chrome 116 e versioni successive .Le promesse sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.
getUserSelectedDevices()
chrome.usb.getUserSelectedDevices(
options: DevicePromptOptions,
callback?: function,
)
Presenta un selettore dispositivo all'utente e restituisce i Device
selezionati. Se l'utente annulla l'operazione, i dispositivi di selezione saranno vuoti. Per visualizzare la finestra di dialogo è necessario un gesto dell'utente. Senza un gesto dell'utente, il callback verrà eseguito come se l'utente avesse annullato.
Parametri
-
opzioni
Configurazione della finestra di dialogo del selettore dispositivo.
-
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:(devices: Device[]) => void
-
dispositivi
-
Resi
-
Prometti <dispositivo[]>
Chrome 116 e versioni successive .Le promesse sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.
interruptTransfer()
chrome.usb.interruptTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
)
Esegue un trasferimento di interruzione sul dispositivo specificato.
Parametri
-
handle
Una connessione aperta al dispositivo.
-
transferInfo
I parametri di trasferimento.
-
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:(info: TransferResultInfo) => void
-
informazioni
-
Resi
-
Promise<TransferResultInfo>
Chrome 116 e versioni successive .Le promesse sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.
isochronousTransfer()
chrome.usb.isochronousTransfer(
handle: ConnectionHandle,
transferInfo: IsochronousTransferInfo,
callback?: function,
)
Viene eseguito un trasferimento sincrono sul dispositivo specifico.
Parametri
-
handle
Una connessione aperta al dispositivo.
-
transferInfo
-
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:(info: TransferResultInfo) => void
-
informazioni
-
Resi
-
Promise<TransferResultInfo>
Chrome 116 e versioni successive .Le promesse sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.
listInterfaces()
chrome.usb.listInterfaces(
handle: ConnectionHandle,
callback?: function,
)
Elenca tutte le interfacce presenti in un dispositivo USB.
Parametri
-
handle
Una connessione aperta al dispositivo.
-
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:(descriptors: InterfaceDescriptor[]) => void
-
descrittori
-
Resi
-
Promise<InterfaceDescriptor[]>
Chrome 116 e versioni successive .Le promesse sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.
openDevice()
chrome.usb.openDevice(
device: Device,
callback?: function,
)
Apre un dispositivo USB restituito da getDevices
.
Parametri
-
dispositivo
L'elemento
Device
da aprire. -
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:(handle: ConnectionHandle) => void
-
handle
-
Resi
-
Promise<ConnectionHandle>
Chrome 116 e versioni successive .Le promesse sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.
releaseInterface()
chrome.usb.releaseInterface(
handle: ConnectionHandle,
interfaceNumber: number,
callback?: function,
)
Rilascia un'interfaccia rivendicata.
Parametri
-
handle
Una connessione aperta al dispositivo.
-
interfaceNumber
numero
L'interfaccia da rilasciare.
-
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:() => void
Resi
-
Promesso<void>
Chrome 116 e versioni successive .Le promesse sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.
requestAccess()
chrome.usb.requestAccess(
device: Device,
interfaceId: number,
callback?: function,
)
Questa funzione era specifica di ChromeOS e non sarebbe possibile chiamarla su altre piattaforme. Questa operazione ora viene eseguita implicitamente come parte di openDevice
e questa funzione restituirà true
su tutte le piattaforme.
Richiedi l'accesso dal broker di autorizzazioni a un dispositivo rivendicato da Chrome OS se l'interfaccia specificata sul dispositivo non è stata rivendicata.
Parametri
-
dispositivo
Il
Device
per cui richiedere l'accesso. -
interfaceId
numero
La specifica interfaccia richiesta.
-
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:(success: boolean) => void
-
operazione riuscita
booleano
-
Resi
-
Promise<boolean>
Chrome 116 e versioni successive .Le promesse sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.
resetDevice()
chrome.usb.resetDevice(
handle: ConnectionHandle,
callback?: function,
)
Tenta di reimpostare il dispositivo USB. Se il ripristino non va a buon fine, l'handle di connessione specificato verrà chiuso e il dispositivo USB risulterà disconnesso e poi ricollegato. In questo caso, è necessario chiamare di nuovo getDevices
o findDevices
per acquisire il dispositivo.
Parametri
-
handle
Un handle di connessione da reimpostare.
-
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:(success: boolean) => void
-
operazione riuscita
booleano
-
Resi
-
Promise<boolean>
Chrome 116 e versioni successive .Le promesse sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.
setConfiguration()
chrome.usb.setConfiguration(
handle: ConnectionHandle,
configurationValue: number,
callback?: function,
)
Seleziona una configurazione del dispositivo.
Questa funzione reimposta il dispositivo in modo efficace selezionando una delle configurazioni disponibili del dispositivo. Solo i valori di configurazione maggiori di 0
sono validi, tuttavia alcuni dispositivi con bug presentano una configurazione funzionante (0
), pertanto questo valore è consentito.
Parametri
-
handle
Una connessione aperta al dispositivo.
-
configurationValue
numero
-
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:() => void
Resi
-
Promesso<void>
Chrome 116 e versioni successive .Le promesse sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.
setInterfaceAlternateSetting()
chrome.usb.setInterfaceAlternateSetting(
handle: ConnectionHandle,
interfaceNumber: number,
alternateSetting: number,
callback?: function,
)
seleziona un'impostazione alternativa in un'interfaccia rivendicata in precedenza.
Parametri
-
handle
Una connessione aperta al dispositivo su cui è stata rivendicata questa interfaccia.
-
interfaceNumber
numero
L'interfaccia da configurare.
-
alternateSetting
numero
L'impostazione alternativa da configurare.
-
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:() => void
Resi
-
Promesso<void>
Chrome 116 e versioni successive .Le promesse sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.
Eventi
onDeviceAdded
chrome.usb.onDeviceAdded.addListener(
callback: function,
)
Evento generato quando un dispositivo viene aggiunto al sistema. Gli eventi vengono trasmessi soltanto alle app e alle estensioni che dispongono dell'autorizzazione per accedere al dispositivo. L'autorizzazione potrebbe essere stata concessa al momento dell'installazione, quando l'utente ha accettato un'autorizzazione facoltativa (vedi permissions.request
) o tramite getUserSelectedDevices
.
Parametri
-
callback
funzione
Il parametro
callback
ha il seguente aspetto:(device: Device) => void
-
dispositivo
-
onDeviceRemoved
chrome.usb.onDeviceRemoved.addListener(
callback: function,
)
Evento generato quando un dispositivo viene rimosso dal sistema. Vedi onDeviceAdded
per sapere quali eventi vengono pubblicati.
Parametri
-
callback
funzione
Il parametro
callback
ha il seguente aspetto:(device: Device) => void
-
dispositivo
-