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 bereitgestelltenUSBAlternateInterface
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 aufUSBDevice
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.
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 |