chrome.usb

Beschreibung

Verwenden Sie die chrome.usb API, um mit verbundenen USB-Geräten zu interagieren. Diese API bietet Zugriff auf USB-Vorgänge im Kontext einer App. Mit dieser API können Apps als Treiber für Hardwaregeräte fungieren. Fehler, die von dieser API generiert werden, werden durch Festlegen von runtime.lastError und Ausführen des regulären Callbacks der Funktion gemeldet. Die regulären Parameter des Callbacks sind in diesem Fall nicht definiert.

Berechtigungen

usb

Verfügbarkeit

Nur ChromeOS

Typen

ConfigDescriptor

Attribute

  • aktiv

    boolean

    Chrome 47 oder höher

    Ist dies die aktive Konfiguration?

  • configurationValue

    Zahl

    Die Konfigurationsnummer.

  • Beschreibung

    String optional

    Beschreibung der Konfiguration.

  • extra_data

    ArrayBuffer

    Zusätzliche Deskriptordaten, die mit dieser Konfiguration verknüpft sind.

  • Schnittstellen

    Verfügbare Oberflächen.

  • maxPower

    Zahl

    Die maximale Leistung, die dieses Gerät benötigt, in Milliampere (mA).

  • remoteWakeup

    boolean

    Das Gerät unterstützt Remote-Wakeup.

  • selfPowered

    boolean

    Das Gerät ist selbstversorgend.

ConnectionHandle

Attribute

  • Handle (der)

    Zahl

    Ein opakes Handle, das diese Verbindung zum USB-Gerät und alle zugehörigen beanspruchten Schnittstellen und ausstehenden Übertragungen darstellt. Bei jedem Öffnen des Geräts wird ein neues Handle erstellt. Das Verbindungshandle unterscheidet sich von Device.device.

  • productId

    Zahl

    Die Produkt-ID.

  • vendorId

    Zahl

    Die Anbieter-ID des Geräts.

ControlTransferInfo

Attribute

  • Daten

    ArrayBuffer optional

    Die zu übertragenden Daten (nur für ausgehende Übertragungen erforderlich).

  • direction

    Die Übertragungsrichtung ("in" oder "out").

  • Index

    Zahl

    Das Feld wIndex, siehe Ebd..

  • Länge

    number optional

    Die maximale Anzahl von Byte, die empfangen werden sollen (nur für Eingabeübertragungen erforderlich).

  • Empfänger

    Das Übertragungsziel. Das durch index angegebene Ziel muss beansprucht werden, wenn "interface" oder "endpoint".

  • Anfrage

    Zahl

    Das Feld bRequest, siehe Universal Serial Bus Specification Revision 1.1, § 9.3.

  • requestType

    Der Anfragetyp.

  • Zeitüberschreitung

    number optional

    Chrome 43 oder höher

    Zeitlimit für die Anfrage (in Millisekunden). Der Standardwert 0 bedeutet, dass kein Zeitlimit festgelegt ist.

  • Wert

    Zahl

    Das Feld wValue, siehe Ebd..

Device

Attribute

  • Gerät

    Zahl

    Eine intransparente ID für das USB-Gerät. Sie bleibt unverändert, bis das Gerät vom Stromnetz getrennt wird.

  • manufacturerName

    String

    Chrome 46 oder höher

    Der vom Gerät gelesene iManufacturer-String, falls verfügbar.

  • productId

    Zahl

    Die Produkt-ID.

  • productName (Produktname)

    String

    Chrome 46 oder höher

    Der vom Gerät gelesene iProduct-String, falls verfügbar.

  • serialNumber

    String

    Chrome 46 oder höher

    Der vom Gerät gelesene iSerialNumber-String, falls verfügbar.

  • vendorId

    Zahl

    Die Anbieter-ID des Geräts.

  • Version

    Zahl

    Chrome 51 oder höher

    Die Geräteversion (Feld „bcdDevice“).

DeviceFilter

Attribute

  • interfaceClass

    number optional

    USB-Schnittstellenklasse, die mit jeder Schnittstelle auf dem Gerät übereinstimmt.

  • interfaceProtocol

    number optional

    USB-Schnittstellenprotokoll, wird nur geprüft, wenn die Schnittstellenunterklasse übereinstimmt.

  • interfaceSubclass

    number optional

    Unterklasse der USB-Schnittstelle, wird nur geprüft, wenn die Schnittstellenklasse übereinstimmt.

  • productId

    number optional

    Produkt-ID des Geräts, wird nur geprüft, wenn die Anbieter-ID übereinstimmt.

  • vendorId

    number optional

    Geräteanbieter-ID

DevicePromptOptions

Attribute

  • Filter

    DeviceFilter[] optional

    Filtern Sie die Liste der Geräte, die dem Nutzer angezeigt werden. Wenn mehrere Filter angegeben sind, werden Geräte angezeigt, die mit einem der Filter übereinstimmen.

  • mehrere

    Boolesch optional

    Erlaube dem Nutzer, mehrere Geräte auszuwählen.

Direction

Direction, Recipient, RequestType und TransferType entsprechen den gleichnamigen Elementen in der USB-Spezifikation.

Enum

"in"

"out"

EndpointDescriptor

Attribute

  • Adresse

    Zahl

    Endpunktadresse.

  • direction

    Übertragungsrichtung.

  • extra_data

    ArrayBuffer

    Zusätzliche Deskriptordaten, die mit diesem Endpunkt verknüpft sind.

  • maximumPacketSize

    Zahl

    Maximale Paketgröße.

  • pollingInterval

    number optional

    Polling-Intervall (nur Interrupt und isochron).

  • Synchronisierung

    Synchronisierungsmodus für die Übertragung (nur isochron).

  • Übertragungstyp.

  • Verwendung

    UsageType optional

    Hinweis zur Endpunktnutzung.

EnumerateDevicesAndRequestAccessOptions

Attribute

  • interfaceId

    number optional

    Die Schnittstellen-ID, für die Zugriff angefordert werden soll. Nur unter Chrome OS verfügbar. Sie haben keine Auswirkungen auf andere Plattformen.

  • productId

    Zahl

    Die Produkt-ID.

  • vendorId

    Zahl

    Die Anbieter-ID des Geräts.

EnumerateDevicesOptions

Attribute

  • Filter

    DeviceFilter[] optional

    Es wird ein Gerät zurückgegeben, das einem der angegebenen Filter entspricht. Wenn die Filterliste leer ist, werden alle Geräte zurückgegeben, für die die App eine Berechtigung hat.

  • productId

    number optional

    Eingestellt

    Entspricht dem Festlegen von DeviceFilter.productId.

  • vendorId

    number optional

    Eingestellt

    Entspricht dem Festlegen von DeviceFilter.vendorId.

GenericTransferInfo

Attribute

  • Daten

    ArrayBuffer optional

    Die zu übertragenden Daten (nur für ausgehende Übertragungen erforderlich).

  • direction

    Die Übertragungsrichtung ("in" oder "out").

  • Endpunkt

    Zahl

    Die Zielendpunktadresse. Die Schnittstelle, die diesen Endpunkt enthält, muss beansprucht werden.

  • Länge

    number optional

    Die maximale Anzahl von Byte, die empfangen werden sollen (nur für Eingabeübertragungen erforderlich).

  • Zeitüberschreitung

    number optional

    Chrome 43 oder höher

    Zeitlimit für die Anfrage (in Millisekunden). Der Standardwert 0 bedeutet, dass kein Zeitlimit festgelegt ist.

InterfaceDescriptor

Attribute

  • alternateSetting

    Zahl

    Die Nummer der alternativen Einstellung der Schnittstelle (Standardwert ist 0)

  • Beschreibung

    String optional

    Beschreibung der Schnittstelle.

  • Endpunkte

    Verfügbare Endpunkte.

  • extra_data

    ArrayBuffer

    Zusätzliche Deskriptordaten, die mit dieser Schnittstelle verknüpft sind.

  • interfaceClass

    Zahl

    Die USB-Schnittstellenklasse.

  • interfaceNumber

    Zahl

    Die Schnittstellennummer.

  • interfaceProtocol

    Zahl

    Das USB-Schnittstellenprotokoll.

  • interfaceSubclass

    Zahl

    Die Unterklasse der USB-Schnittstelle.

IsochronousTransferInfo

Attribute

  • packetLength

    Zahl

    Die Länge der einzelnen Pakete in dieser Übertragung.

  • Pakete

    Zahl

    Die Gesamtzahl der Pakete in dieser Übertragung.

  • transferInfo

    Übertragungsparameter. Die in diesem Parameterblock angegebene Übertragungslänge oder der Datenpuffer wird entlang der packetLength-Grenzen aufgeteilt, um die einzelnen Pakete der Übertragung zu bilden.

Recipient

Enum

"device"

"interface"

"endpoint"

"other"

RequestType

Enum

"standard"

"class"

"vendor"

"reserved"

SynchronizationType

Für den Interrupt- und den isochronen Modus werden „SynchronizationType“ und „UsageType“ ihren Namensvettern in der USB-Spezifikation zugeordnet.

Enum

"asynchronous"

"adaptive"

"synchronous"

TransferResultInfo

Attribute

  • Daten

    ArrayBuffer optional

    Die von einer Eingabeübertragung zurückgegebenen Daten. undefined für Ausgabeübertragungen.

  • resultCode

    number optional

    Der Wert 0 gibt an, dass die Übertragung erfolgreich war. Andere Werte weisen auf einen Fehler hin.

TransferType

Enum

"control"

"interrupt"

"isochronous"

"bulk"

UsageType

Enum

"data"

"feedback"

"explicitFeedback"

"periodic"

"notification"

Methoden

bulkTransfer()

Promise
chrome.usb.bulkTransfer(
  handle: ConnectionHandle,
  transferInfo: GenericTransferInfo,
  callback?: function,
)
: Promise<TransferResultInfo>

Führt eine Bulk-Übertragung auf dem angegebenen Gerät aus.

Parameter

Ausgabe

  • Chrome 116 oder höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

claimInterface()

Promise
chrome.usb.claimInterface(
  handle: ConnectionHandle,
  interfaceNumber: number,
  callback?: function,
)
: Promise<void>

Beansprucht eine Schnittstelle auf einem USB-Gerät. Bevor Daten an eine Schnittstelle oder zugehörige Endpunkte übertragen werden können, muss die Schnittstelle beansprucht werden. Eine Schnittstelle kann jeweils nur von einem Verbindungshandle beansprucht werden. Wenn die Schnittstelle bereits beansprucht wird, schlägt dieser Aufruf fehl.

releaseInterface sollte aufgerufen werden, wenn die Schnittstelle nicht mehr benötigt wird.

Parameter

  • Handle (der)

    Eine offene Verbindung zum Gerät.

  • interfaceNumber

    Zahl

    Die Schnittstelle, die beansprucht werden soll.

  • callback

    function optional

    Der Parameter callback sieht so aus:

    () => void

Ausgabe

  • Promise<void>

    Chrome 116 oder höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

closeDevice()

Promise
chrome.usb.closeDevice(
  handle: ConnectionHandle,
  callback?: function,
)
: Promise<void>

Schließt ein Verbindungshandle. Das Aufrufen von Vorgängen für ein Handle, nachdem es geschlossen wurde, ist ein sicherer Vorgang, führt aber zu keiner Aktion.

Parameter

Ausgabe

  • Promise<void>

    Chrome 116 oder höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

controlTransfer()

Promise
chrome.usb.controlTransfer(
  handle: ConnectionHandle,
  transferInfo: ControlTransferInfo,
  callback?: function,
)
: Promise<TransferResultInfo>

Führt eine Steuerungsübertragung auf dem angegebenen Gerät aus.

Steuerungsübertragungen beziehen sich entweder auf das Gerät, eine Schnittstelle oder einen Endpunkt. Für Übertragungen an eine Schnittstelle oder einen Endpunkt muss die Schnittstelle beansprucht werden.

Parameter

Ausgabe

  • Chrome 116 oder höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

findDevices()

Promise
chrome.usb.findDevices(
  options: EnumerateDevicesAndRequestAccessOptions,
  callback?: function,
)
: Promise<ConnectionHandle[]>

Sucht nach USB-Geräten, die durch die Anbieter-, Produkt- und (optional) Schnittstellen-IDs angegeben sind, und öffnet sie zur Verwendung, wenn die Berechtigungen dies zulassen.

Wenn die Zugriffsanfrage abgelehnt wird oder das Gerät nicht geöffnet werden kann, wird kein Verbindungshandle erstellt oder zurückgegeben.

Der Aufruf dieser Methode entspricht dem Aufruf von getDevices gefolgt von openDevice für jedes Gerät.

Parameter

Ausgabe

  • Promise<ConnectionHandle[]>

    Chrome 116 oder höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

getConfiguration()

Promise
chrome.usb.getConfiguration(
  handle: ConnectionHandle,
  callback?: function,
)
: Promise<ConfigDescriptor>

Ruft den Konfigurationsdeskriptor für die aktuell ausgewählte Konfiguration ab.

Parameter

Ausgabe

  • Chrome 116 oder höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

getConfigurations()

Promise Chrome 47 und höher
chrome.usb.getConfigurations(
  device: Device,
  callback?: function,
)
: Promise<ConfigDescriptor[]>

Gibt den vollständigen Satz von Gerätekonfigurationsdeskriptoren zurück.

Parameter

Ausgabe

  • Promise<ConfigDescriptor[]>

    Chrome 116 oder höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

getDevices()

Promise
chrome.usb.getDevices(
  options: EnumerateDevicesOptions,
  callback?: function,
)
: Promise<Device[]>

Listet verbundene USB-Geräte auf.

Parameter

  • Die Eigenschaften, nach denen auf Zielgeräten gesucht werden soll.

  • callback

    function optional

    Der Parameter callback sieht so aus:

    (devices: Device[]) => void

Ausgabe

  • Promise<Device[]>

    Chrome 116 oder höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

getUserSelectedDevices()

Promise
chrome.usb.getUserSelectedDevices(
  options: DevicePromptOptions,
  callback?: function,
)
: Promise<Device[]>

Zeigt dem Nutzer eine Geräteauswahl an und gibt die ausgewählten Devices zurück. Wenn der Nutzer die Auswahl abbricht, ist die Liste der Geräte leer. Damit das Dialogfeld angezeigt wird, ist eine Nutzergeste erforderlich. Ohne Nutzergeste wird der Callback so ausgeführt, als hätte der Nutzer abgebrochen.

Parameter

  • Konfiguration des Dialogfelds für die Geräteauswahl.

  • callback

    function optional

    Der Parameter callback sieht so aus:

    (devices: Device[]) => void

Ausgabe

  • Promise<Device[]>

    Chrome 116 oder höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

interruptTransfer()

Promise
chrome.usb.interruptTransfer(
  handle: ConnectionHandle,
  transferInfo: GenericTransferInfo,
  callback?: function,
)
: Promise<TransferResultInfo>

Führt eine Interrupt-Übertragung auf dem angegebenen Gerät aus.

Parameter

Ausgabe

  • Chrome 116 oder höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

isochronousTransfer()

Promise
chrome.usb.isochronousTransfer(
  handle: ConnectionHandle,
  transferInfo: IsochronousTransferInfo,
  callback?: function,
)
: Promise<TransferResultInfo>

Führt eine isochrone Übertragung auf dem angegebenen Gerät aus.

Parameter

Ausgabe

  • Chrome 116 oder höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

listInterfaces()

Promise
chrome.usb.listInterfaces(
  handle: ConnectionHandle,
  callback?: function,
)
: Promise<InterfaceDescriptor[]>

Listet alle Schnittstellen auf einem USB-Gerät auf.

Parameter

Ausgabe

  • Chrome 116 oder höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

openDevice()

Promise
chrome.usb.openDevice(
  device: Device,
  callback?: function,
)
: Promise<ConnectionHandle>

Öffnet ein USB-Gerät, das von getDevices zurückgegeben wurde.

Parameter

Ausgabe

  • Chrome 116 oder höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

releaseInterface()

Promise
chrome.usb.releaseInterface(
  handle: ConnectionHandle,
  interfaceNumber: number,
  callback?: function,
)
: Promise<void>

Gibt eine beanspruchte Schnittstelle frei.

Parameter

  • Handle (der)

    Eine offene Verbindung zum Gerät.

  • interfaceNumber

    Zahl

    Die freizugebende Schnittstelle.

  • callback

    function optional

    Der Parameter callback sieht so aus:

    () => void

Ausgabe

  • Promise<void>

    Chrome 116 oder höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

requestAccess()

Promise Eingestellt
chrome.usb.requestAccess(
  device: Device,
  interfaceId: number,
  callback?: function,
)
: Promise<boolean>

Diese Funktion war ChromeOS-spezifisch und ein Aufruf auf anderen Plattformen schlug fehl. Dieser Vorgang wird jetzt implizit als Teil von openDevice ausgeführt und diese Funktion gibt auf allen Plattformen true zurück.

Fordert vom Berechtigungs-Broker Zugriff auf ein von ChromeOS beanspruchtes Gerät an, wenn die angegebene Schnittstelle auf dem Gerät nicht beansprucht wird.

Parameter

  • Gerät

    Die Device, für die Zugriff angefordert werden soll.

  • interfaceId

    Zahl

    Die angeforderte Schnittstelle.

  • callback

    function optional

    Der Parameter callback sieht so aus:

    (success: boolean) => void

    • Erfolg

      boolean

Ausgabe

  • Promise<boolean>

    Chrome 116 oder höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

resetDevice()

Promise
chrome.usb.resetDevice(
  handle: ConnectionHandle,
  callback?: function,
)
: Promise<boolean>

Versucht, das USB-Gerät zurückzusetzen. Wenn das Zurücksetzen fehlschlägt, wird das angegebene Verbindungshandle geschlossen und das USB-Gerät wird scheinbar getrennt und dann wieder verbunden. In diesem Fall muss getDevices oder findDevices noch einmal aufgerufen werden, um das Gerät zu erfassen.

Parameter

  • Handle (der)

    Ein Verbindungshandle, das zurückgesetzt werden soll.

  • callback

    function optional

    Der Parameter callback sieht so aus:

    (success: boolean) => void

    • Erfolg

      boolean

Ausgabe

  • Promise<boolean>

    Chrome 116 oder höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

setConfiguration()

Promise
chrome.usb.setConfiguration(
  handle: ConnectionHandle,
  configurationValue: number,
  callback?: function,
)
: Promise<void>

Wählen Sie eine Gerätekonfiguration aus.

Mit dieser Funktion wird das Gerät effektiv zurückgesetzt, indem eine der verfügbaren Konfigurationen des Geräts ausgewählt wird. Nur Konfigurationswerte größer als 0 sind gültig. Einige fehlerhafte Geräte haben jedoch eine funktionierende Konfiguration 0, sodass dieser Wert zulässig ist.

Parameter

  • Handle (der)

    Eine offene Verbindung zum Gerät.

  • configurationValue

    Zahl

  • callback

    function optional

    Der Parameter callback sieht so aus:

    () => void

Ausgabe

  • Promise<void>

    Chrome 116 oder höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

setInterfaceAlternateSetting()

Promise
chrome.usb.setInterfaceAlternateSetting(
  handle: ConnectionHandle,
  interfaceNumber: number,
  alternateSetting: number,
  callback?: function,
)
: Promise<void>

Wählt eine alternative Einstellung für eine zuvor beanspruchte Schnittstelle aus.

Parameter

  • Handle (der)

    Eine offene Verbindung zum Gerät, auf dem diese Schnittstelle beansprucht wurde.

  • interfaceNumber

    Zahl

    Die zu konfigurierende Schnittstelle.

  • alternateSetting

    Zahl

    Die alternative Einstellung, die konfiguriert werden soll.

  • callback

    function optional

    Der Parameter callback sieht so aus:

    () => void

Ausgabe

  • Promise<void>

    Chrome 116 oder höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

Ereignisse

onDeviceAdded

chrome.usb.onDeviceAdded.addListener(
  callback: function,
)

Ereignis, das generiert wird, wenn ein Gerät dem System hinzugefügt wird. Ereignisse werden nur an Apps und Erweiterungen übertragen, die Zugriff auf das Gerät haben. Die Berechtigung wurde möglicherweise bei der Installation erteilt, als der Nutzer eine optionale Berechtigung akzeptiert hat (siehe permissions.request), oder über getUserSelectedDevices.

Parameter

  • callback

    Funktion

    Der Parameter callback sieht so aus:

    (device: Device) => void

onDeviceRemoved

chrome.usb.onDeviceRemoved.addListener(
  callback: function,
)

Ereignis, das generiert wird, wenn ein Gerät aus dem System entfernt wird. Unter onDeviceAdded finden Sie Informationen dazu, welche Ereignisse übermittelt werden.

Parameter

  • callback

    Funktion

    Der Parameter callback sieht so aus:

    (device: Device) => void