USBEndpoint

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Das USBEndpoint-Interface der WebUSB API liefert Informationen über einen vom USB-Gerät bereitgestellten Endpunkt. Ein Endpunkt stellt einen unidirektionalen Datenstrom in oder aus einem Gerät dar.

Konstruktor

USBEndpoint() Experimentell

Erstellt ein neues USBEndpoint-Objekt, das mit Informationen über den Endpunkt auf dem bereitgestellten USBAlternateInterface mit der gegebenen Endpunktnummer und Übertragungsrichtung gefüllt wird.

Instanzeigenschaften

USBEndpoint.endpointNumber Experimentell

Gibt die "Endpunktnummer" dieses Endpunkts zurück, die ein Wert von 1 bis 15 ist, der aus dem bEndpointAddress-Feld des Endpunktdeskriptors, der diesen Endpunkt definiert, extrahiert wurde. Dieser Wert wird verwendet, um den Endpunkt zu identifizieren, wenn Methoden auf USBDevice aufgerufen werden.

USBEndpoint.direction Experimentell

Gibt die Richtung zurück, in der dieser Endpunkt Daten überträgt, eine der folgenden:

  • "in" - Daten werden vom Gerät zum Host übertragen.
  • "out" - Daten werden vom Host zum Gerät übertragen.
USBEndpoint.type Experimentell

Gibt den Typ dieses Endpunkts zurück, einer der folgenden:

  • "bulk" - Bietet zuverlässige Datenübertragung für große Nutzlasten. Daten, die über einen Massen-Endpunkt gesendet werden, sind garantiert zugestellt oder führen zu einem Fehler, können jedoch durch anderen Datenverkehr unterbrochen werden.
  • "interrupt" - Bietet zuverlässige Datenübertragung für kleine Nutzlasten. Daten, die über einen Interrupt-Endpunkt gesendet werden, sind garantiert zugestellt oder führen zu einem Fehler und erhalten außerdem dedizierte Buszeit für die Übertragung.
  • "isochronous" - Bietet unzuverlässige Datenübertragung für Nutzlasten, die periodisch geliefert werden müssen. Sie erhalten dedizierte Buszeit, aber wenn eine Frist versäumt wird, werden die Daten verworfen.
USBEndpoint.packetSize Experimentell

Gibt die Größe der Pakete zurück, in die die durch diesen Endpunkt gesendeten Daten unterteilt werden.

Beispiele

Während der Entwickler manchmal im Voraus die genaue Anordnung der Endpunkte eines Geräts kennt, gibt es Fälle, in denen dies zur Laufzeit entdeckt werden muss. Beispielsweise muss ein USB-Seriellgerät Massen-Ein- und Ausgabepunkte bereitstellen, aber ihre Endpunktnummern hängen davon ab, welche anderen Schnittstellen das Gerät bereitstellt.

Dieser Code identifiziert die richtigen Endpunkte, indem er nach der Schnittstelle sucht, die die USB-CDC-Schnittstellenklasse implementiert, und dann die Kandidatenendpunkte basierend auf ihrem Typ und ihrer Richtung identifiziert.

js
let inEndpoint = undefined;
let outEndpoint = undefined;

for (const { alternates } of device.configuration.interfaces) {
  // Only support devices with out multiple alternate interfaces.
  const alternate = alternates[0];

  // Identify the interface implementing the USB CDC class.
  const USB_CDC_CLASS = 10;
  if (alternate.interfaceClass !== USB_CDC_CLASS) {
    continue;
  }

  for (const endpoint of alternate.endpoints) {
    // Identify the bulk transfer endpoints.
    if (endpoint.type !== "bulk") {
      continue;
    }

    if (endpoint.direction === "in") {
      inEndpoint = endpoint.endpointNumber;
    } else if (endpoint.direction === "out") {
      outEndpoint = endpoint.endpointNumber;
    }
  }
}

Spezifikationen

Specification
WebUSB API
# usbendpoint-interface

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
USBEndpoint
Experimental
USBEndpoint() constructor
Experimental
direction
Experimental
endpointNumber
Experimental
packetSize
Experimental
type
Experimental
Available in workers
Experimental

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
No support
No support
Experimental. Expect behavior to change in the future.
See implementation notes.
Has more compatibility info.