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 bietet Informationen über einen Endpunkt, der vom USB-Gerät bereitgestellt wird. Ein Endpunkt repräsentiert einen unidirektionalen Datenstrom in ein Gerät hinein oder aus einem Gerät heraus.

Konstruktor

USBEndpoint() Experimentell

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

Instanz-Eigenschaften

USBEndpoint.endpointNumber Experimentell

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

USBEndpoint.direction Experimentell

Gibt die Richtung zurück, in die 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 von:

  • "bulk" - Bietet zuverlässige Datenübertragung für große Nutzdaten. Daten, die über einen Bulk-Endpunkt gesendet werden, sind garantiert geliefert oder erzeugen einen Fehler, können jedoch von anderem Datenverkehr unterbrochen werden.
  • "interrupt" - Bietet zuverlässige Datenübertragung für kleine Nutzdaten. Daten, die über einen Interrupt-Endpunkt gesendet werden, sind garantiert geliefert oder erzeugen einen Fehler und erhalten auch dedizierte Buszeit für die Übertragung.
  • "isochronous" - Bietet unzuverlässige Datenübertragung für Nutzdaten, 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 Daten durch diesen Endpunkt aufgeteilt werden.

Beispiele

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

Dieser Code identifiziert die korrekten Endpunkte, indem er nach der Schnittstelle sucht, die die USB-CDC-Schnittstellenklasse implementiert, und dann die Endpunktkandidaten 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