USBEndpoint
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。
Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。
WebUSB API の USBEndpoint
インターフェイスは、USB デバイスが提供するエンドポイントの情報を提供します。エンドポイントは、デバイスに送信またはデバイスから受信する単方向のデータストリームを表します。
コンストラクター
USBEndpoint()
Experimental-
渡された
USBAlternateInterface
の指定のエンドポイント番号と転送方向のエンドポイントの情報が格納される新しいUSBEndpoint
オブジェクトを生成します。
インスタンスプロパティ
USBEndpoint.endpointNumber
Experimental-
このエンドポイントの「エンドポイント番号」を返します。これは、このエンドポイントを定義しているエンドポイントディスクリプターの
bEndpointAddress
フィールドから取り出した 1 から 15 までの値です。この値は、USBDevice
のメソッドを呼ぶ際にエンドポイントを特定するのに用います。 USBEndpoint.direction
Experimental-
このエンドポイントがデータを転送する方向を返します。以下のいずれかです。
"in"
— データはデバイスからホストに転送されます。"out"
— データはホストからデバイスに転送されます。
USBEndpoint.type
Experimental-
エンドポイントの種類を返します。以下のいずれかです。
"bulk"
— 大きいペイロード向けの信頼性があるデータ転送を提供します。バルクエンドポイントで送信されるデータは、転送されるかエラーを発生させることが保証されますが、他のデータトラフィックに割り込まれる可能性があります。"interrupt"
— 小さいペイロード向けの信頼性があるデータ転送を提供します。インタラプトエンドポイントで送信されるデータは、転送されるかエラーを発生させることが保証され、さらに転送用に専用のバス時間が与えられます。"isochronous"
— 定期的に転送する必要があるペイロード向けの信頼性がないデータ転送を提供します。専用のバス時間が与えられますが、締切を過ぎるとデータは破棄されます。
USBEndpoint.packetSize
Experimental-
このエンドポイントで送信されるデータが分割されるパケットのサイズを返します。
例
開発者はデバイスのエンドポイントの完全な配置を事前に知っていることもありますが、実行時に検出しなければならない場合もあります。たとえば、USB シリアルデバイスはバルク入力と出力のエンドポイントを提供しなければなりませんが、それらのエンドポイント番号はデバイスが提供する他のインターフェイスによって変わるでしょう。
このコードは、まず USB CDC インターフェイスクラスを実装しているインターフェイスを探し、続いて種類と方向を用いて候補となるエンドポイントを特定することにより、正しいエンドポイントを特定します。
let inEndpoint = undefined;
let outEndpoint = undefined;
for (const { alternates } of device.configuration.interfaces) {
// オルタネイトインターフェイスを複数持たないデバイスのみに対応します。
const alternate = alternates[0];
// USB CDC クラスを実装しているインターフェイスを特定します。
const USB_CDC_CLASS = 10;
if (alternate.interfaceClass !== USB_CDC_CLASS) {
continue;
}
for (const endpoint of alternate.endpoints) {
// バルク転送のエンドポイントを特定します。
if (endpoint.type !== "bulk") {
continue;
}
if (endpoint.direction === "in") {
inEndpoint = endpoint.endpointNumber;
} else if (endpoint.direction === "out") {
outEndpoint = endpoint.endpointNumber;
}
}
}
仕様書
Specification |
---|
WebUSB API # usbendpoint-interface |
ブラウザーの互換性
BCD tables only load in the browser