web-serial-rxjs API Documentation
    Preparing search index...

    通信パターン別 Recipes

    この索引は、やりたいシリアル通信の目的から既存の Guide / Recipe ページへ辿るためのハブです。通信パターンが分かっているときに使ってください。フレームワーク別の配線例は Examples を参照してください。

    Parent: #555 · Issue: #558

    項目 判断
    通信パターン(デバイスブランドではない)
    デバイス名 製品名を互換性の保証として扱わない
    新規の長文ページ 既存 Guide / Recipe への リンクを優先
    バイナリ受信 未対応#545対応範囲 を参照
    パターン 主な API 詳細
    基本のテキスト送受信 connect$, lines$, send$, disconnect$ / dispose$ クイックスタート
    行指向プロトコル lines$、必要に応じて receive$ 高度な使用方法 – 行フレーミング · ストリームの選び方
    ターミナル / CR 処理 terminalText$, receive$ ストリームの選び方 · 高度な使用方法
    Command / Response lines$ / receive$, send$ Request / Response
    タイムアウト connect$ / 待機への RxJS timeout タイムアウト・キャンセル・再試行 – 接続
    キャンセル takeUntil、購読解除、破棄時 teardown タイムアウト・キャンセル・再試行 – キャンセル
    再接続ポリシー state$, connect$dispose$ 後は新セッション disposed では再接続しない · 致命的エラー時の再接続
    Fake SerialSession テスト SerialSession 契約を満たす Fake 実機なしテスト
    バイナリ送信(Uint8Array send$(Uint8Array) 対応範囲

    対象 API createSerialSession, connect$, lines$, send$, disconnect$ / dispose$, state$, errors$
    適している用途 初回接続、ログ風の行受信、単純な文字列送信
    適していない用途 カスタムフレーミング、コマンド/応答の対応付け、バイナリ線上プロトコル
    詳細 クイックスタート · ストリーム選択は 選び方
    対象 API lines$(既定)。組み込みフレーミングで足りないときだけ receive$ + RxJS
    適している用途 改行区切りログ、JSON Lines、1 行のステータス応答
    適していない用途 改行のないプロンプト、\r 再描画ターミナル(receive$ / terminalText$ を優先)
    詳細 高度な使用方法 – 行フレーミング · ストリームの選び方
    対象 API terminalText$, receive$(および SerialSessionOptions.terminalBuffer
    適している用途 ターミナル風 UI へのバインド、\r 再描画の折りたたみ、任意の ANSI 除去
    適していない用途 厳密な行パーサ(lines$ を使う);ワイヤ Uint8Array 受信の期待
    詳細 ストリームの選び方 · 高度な使用方法 · createTerminalBuffer
    対象 API lines$ または receive$send$(待ち→送信を組み立てる。コア request$ない
    適している用途 コマンド送信後に一致する行/プロンプトを待つ、concatMap で直列化
    適していない用途 送信のみのログ;遅れて購読しても過去の emit が再生されると期待すること
    詳細 Request / Response レシピ
    対象 API connect$ や応答待ちまわりの RxJS timeout(アプリ方針。コアの接続リースではない)
    適している用途 ポート選択/接続待ちや応答待ちの上限
    適していない用途 タイムアウト=非冪等コマンドの「安全な再送」とみなすこと
    詳細 接続のタイムアウト · 応答待機のタイムアウト
    対象 API takeUntil、購読解除、Component / Hook の破棄
    適している用途 UI 破棄時に処理を止める;ユーザーキャンセルとデバイス障害の区別
    適していない用途 OPERATION_CANCELLED のあとポート選択を自動で開き直すこと
    詳細 takeUntil によるキャンセル · 破棄時のキャンセル
    対象 API state$, connect$, errors$dispose$ 後は新しい SerialSession
    適している用途 アプリ側の回数制限付き再試行/復旧可能な失敗後の手動再接続
    適していない用途 コア自動再接続;disposed セッションへの再接続;無限再試行
    詳細 disposed では再接続しない · 致命的エラー時の再接続 · 再試行してよい処理
    対象 API 差し替え可能な SerialSession 契約を満たす Fake(npm 非同梱)
    適している用途 USB 実機なしの単体/結合テスト、CI での失敗注入
    適していない用途 本番で本物の Web Serial スタックを置き換えること
    詳細 実機なしテスト · 差し替え可能な公開契約
    対象 API send$(Uint8Array) — バイト列をそのまま書き込む
    適している用途 対向が既に理解している不透明なバイナリペイロードの送信
    適していない用途 バイナリ受信receiveBytes$ / Uint8Array 受信ストリームなし);Modbus RTU / COBS / SLIP をライブラリ機能として期待すること
    詳細 対応範囲 · 設計検討 #545

    短い例(送信のみ。受信は引き続き UTF-8 テキスト):

    import { firstValueFrom } from 'rxjs';
    import { createSerialSession } from '@gurezo/web-serial-rxjs';

    const session = createSerialSession({ baudRate: 115200 });
    await firstValueFrom(session.connect$());

    const payload = new Uint8Array([0x01, 0x02, 0x03]);
    await firstValueFrom(session.send$(payload));