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, bevor Sie diese produktiv verwenden.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Dieses Feature ist verfügbar in Web Workers.
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 bereitgestelltenUSBAlternateInterface
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 aufUSBDevice
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.
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
BCD tables only load in the browser