SerialPort
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。
Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。
メモ: この機能は専用ウェブワーカー内で利用可能です。
SerialPort
は ウェブシリアル API のインターフェイスで、ホスト機器のシリアルポートへのアクセスを提供します。
コンストラクター
このインターフェイスのインスタンスは 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-
ポートがデバイスから切断された時、発火するイベントです。
例
ポートを開く
シリアルポートで通信を行う前に、ポートを開く必要があります。ポートを開くことで、サイトはデータがどのように送受信されるかを決めるために必要なパラメーターを設定できます。開発者は、適切なパラメーターを決めるために接続するデバイスのドキュメントを参照するべきです。
await port.open({ baudRate: 9600 /* ボーレートを決める */ });
open()
が返した Promise
が解決したら、readable
および writable
プロパティにアクセスすることで、デバイスからデータを受信したり接続されたデバイスにデータを送信したりする用の ReadableStream
および WritableStream
を得ることができます。
ポートからデータを受信する
この例は、ポートからデータを受信する方法を示します。外側のループは致命的なエラーが発生して readable
が null
になるまで新しい reader
を生成し続けることで、致命的でないエラーを処理します。
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
に変換します。
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