SerialPort

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

Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

Web Serial APISerialPort インターフェイスは、ホストデバイスのシリアルポートへのアクセスを提供します。

EventTarget SerialPort

コンストラクター

このインターフェイスのインスタンスは Serial インターフェイスのメソッドを呼ぶことにより得られるので、このインターフェイス自身のコンストラクターはありません。

インスタンスプロパティ

SerialPort.readable 読取専用 Experimental

ポートに接続されたデバイスからデータを受信する用の ReadableStream を返します。

SerialPort.writable 読取専用 Experimental

ポートに接続されたデバイスにデータを送信する用の WritableStream を返します。

インスタンスメソッド

SerialPort.forget() Experimental

ポートを閉じ、忘れる処理が完了したら解決する Promise を返します。

SerialPort.getInfo() Experimental

ポートの情報が入ったオブジェクトを返します。

SerialPort.open() Experimental

ポートを開く処理が完了したら解決する Promise を返します。デフォルトでは、ポートは 8 ビットのデータ、1 ビットのストップビット、パリティチェックなしで開かれます。

SerialPort.setSignals() Experimental

ポートの制御信号を設定し、完了したら解決する Promise を返します。

SerialPort.getSignals() Experimental

ポートの制御信号の現在の状態が入ったオブジェクトで解決する Promise を返します。

SerialPort.close() Experimental

ポートを閉じる処理が完了したら解決する Promise を返します。

イベント

connect Experimental

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

disconnect Experimental

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

ポートを開く

シリアルポートで通信を行う前に、ポートを開く必要があります。ポートを開くことで、サイトはデータがどのように送受信されるかを決めるために必要なパラメータを設定できます。開発者は、適切なパラメータを決めるために接続するデバイスのドキュメントを参照するべきです。

js
await port.open({ baudRate: 9600 /* ボーレートを決める */ });

open() が返した Promise が解決したら、readable および writable プロパティにアクセスすることで、デバイスからデータを受信したり接続されたデバイスにデータを送信したりする用の ReadableStream および WritableStream を得ることができます。

ポートからデータを受信する

この例は、ポートからデータを受信する方法を示します。外側のループは致命的なエラーが発生して readablenull になるまで新しい reader を生成し続けることで、致命的でないエラーを処理します。

js
while (port.readable) {
  const reader = port.readable.getReader();
  try {
    while (true) {
      const { value, done } = await reader.read();
      if (done) {
        // |reader| がキャンセルされました。
        break;
      }
      // |value| について何かをする
    }
  } catch (error) {
    // |error| を処理する
  } finally {
    reader.releaseLock();
  }
}

ポートにデータを送信する

この例では、ポートに文字列を送信する方法を示します。送信前に、TextEncoder により文字列を Uint8Array に変換します。

js
const encoder = new TextEncoder();
const writer = port.writable.getWriter();
await writer.write(encoder.encode("PING"));
writer.releaseLock();

仕様書

Specification
Web Serial API
# dom-serialport

ブラウザーの互換性

BCD tables only load in the browser