このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

Serial

利用可能性は限定的

この機能はベースラインではありません。最も広く使用されているブラウザーの一部で動作しません。

安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

メモ: この機能は専用ウェブワーカー内で利用可能です。

Serial はウェブシリアル API のインターフェイスは、ウェブページがシリアルポートを検出し、接続するためのプロパティやメソッドを提供します。

EventTarget Serial

インスタンスメソッド

Serial.requestPort()

ユーザーが選んだデバイスを表す SerialPort のインスタンスで解決するプロミス (Promise) を返します。 このメソッドは、一時的な有効化に伴って呼び出す必要があります。

Serial.getPorts()

接続されており、かつそのオリジンにアクセス許可があるシリアルポートを表す SerialPort の配列で解決するプロミス (Promise) を返します。

イベント

Serial では SerialPort からのイベントバブリングにより、以下のイベントが利用可能です。

SerialPort connect イベント

デバイスにポートが接続された時に発生するイベントです。

SerialPort disconnect イベント

デバイスからポートが切断された時に発生するイベントです。

例

基本的な例

この例では、利用可能なポートを調べ、ユーザーが他のポートへのアクセスを許可できるようにする方法を示します。

load イベントの受信時に connect および disconnect イベントにリスナーを追加することで、デバイスが接続された時や切断された時にサイトが反応できるようにします。getPorts() メソッドを呼ぶことで、接続されたポートが既にサイトからのアクセスが許可されたものかどうかを調べることができます。

接続されたポートの中にサイトからアクセスできるものが無い場合、ユーザーが有効化するのを待つ必要があります。 この例では、このためにボタンの click イベントハンドラーを用います。 requestPort() に USB ベンダー ID を入れたフィルターを渡し、ユーザーに提示するデバイスのリストを特定の生産者によって作られた USB デバイスのみに絞り込んでいます。

js
navigator.serial.addEventListener("connect", (e) => {
  // `e.target` に接続する、すなわち利用可能なポートのリストに加えます。
});

navigator.serial.addEventListener("disconnect", (e) => {
  // `e.target` を利用可能なポートのリストから外します。
});

navigator.serial.getPorts().then((ports) => {
  // ページの読み込み時、`ports` を用いて利用可能なポートのリストを初期化します。
});

button.addEventListener("click", () => {
  const usbVendorId = 0xabcd;
  navigator.serial
    .requestPort({ filters: [{ usbVendorId }] })
    .then((port) => {
      // `port` に接続する、すなわち利用可能なポートのリストに加えます。
    })
    .catch((e) => {
      // ユーザーがポートを選択しませんでした。
    });
});

仕様書

仕様書
Web Serial API
# serial-interface

ブラウザーの互換性