
概要 📖 – システム上のシリアルデバイス一覧の取得
Serial Devices DATは、システム上で利用可能なシリアルデバイスをスキャンしてテーブルとして列挙する DATです。Usage メニューで報告対象 (すべて / 使用中 / 未使用) を選択し、Refresh Pulse での即時更新または Enable Polling での定期ポーリングでテーブルを最新化します。検出したポート名を Serial DAT のポート指定と連携させて、運用環境のデバイス構成に動的追従するシリアル通信パイプラインを構築できます。
主な用途 🎯
- システム上のシリアルデバイス一覧の取得として、接続中のシリアルポート (COM ポート等) をテーブル化して可視化
- Serial DAT のターゲットポート選定として、検出したポート名を下流のシリアル通信 OP の参照先に動的バインド
- 使用中 / 未使用ポートの絞り込み確認として、占有済みポートと空きポートを Usage フィルタで切り分けてチェック
- デバイス抜き差しのコールバック監視として、USB シリアル変換器やマイコンの接続変化を即座に検知し UI / ログに反映
- マルチ機材インスタレーションでのポート再構成として、PC 入替や再起動でポート番号が変わってもテーブル参照で配線を自動追従
データフロー 🔄
入力: OS が認識しているシリアルポート・デバイス情報
↓
Serial Devices DAT が Usage フィルタ (使用中 / 未使用) でデバイスを enumerate
↓
出力: 検出シリアルデバイス一覧テーブル (ポート名 / 状態 等)
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Serial Devices Page 📋
Callbacks DAT .callbacks 🔔
デバイステーブルの変化に応答するコールバックスクリプト:
- Callbacks DAT:
callbacks(コールバック DAT) — テーブルに変化 (デバイス出現 / 消失 / 状態変化) があるたびに 1 回実行されるスクリプト DAT へのパス。使い方は SerialdevicesDAT_Class を参照
Usage .usage 🎚️
Usage (報告対象) — 可用性に応じてどのシリアルデバイスを報告するか選択するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Any | .any |
すべてのシリアルデバイスを報告 |
| In Use | .inuse |
占有中 (使用中) のシリアルデバイスのみ報告 |
| Not In Use | .notinuse |
未使用 (空き) のシリアルデバイスのみ報告 |
Refresh Pulse .refreshpulse 🔄
ボタンを押した瞬間にデバイステーブルを再取得するパルス:
- Refresh Pulse:
refreshpulse(即時更新) — パルスを送るとシリアルデバイスの変化を即座にポーリングし、テーブルを更新します
Enable Polling .enablepolling ⏱️
一定間隔でデバイステーブルを自動更新するトグル:
- Enable Polling:
enablepolling(定期ポーリング) — オンの間、シリアルデバイスの変化を定期的にポーリングしてテーブルを更新します
Polling Time .pollingtime 🕒
次のポーリングまでの待機時間 (秒):
- Polling Time:
pollingtime(ポーリング間隔) — 次回ポーリングまで待機する秒数。短いほど反応が速くなる一方で更新負荷が増えます
Common Page 🔧
Language .language 📝
DAT が動作するスクリプト言語の決定方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input | .input |
入力 DAT のスクリプト言語を使用 |
Edit/View Extension .extension 📄
外部エディタに公開するファイル拡張子の選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| dat | .dat |
汎用的なファイル拡張子 dat を使用 |
| From Language | .language |
DAT のスクリプト言語に応じた拡張子を自動選択 |
| Custom Extension | .custom |
Custom Extension で指定したカスタム拡張子を使用 |
Custom Extension .customext 🔤
Edit/View Extension が Custom Extension のときに適用される拡張子:
- Custom Extension 文字列:
Edit/View Extensionがcustomのときに使用される任意のファイル拡張子
Word Wrap .wordwrap 🔁
ノード表示でのワードラップ (折り返し) の有効化
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input | .input |
入力 DAT の Word Wrap 設定を継承 |
| On | .on |
Word Wrap を有効化 (ノード上の長い行を折り返し表示) |
| Off | .off |
Word Wrap を無効化 (折り返さずそのまま表示) |
実践アイデア 💡
Example 1: ポート名で自動バインド 🔌
Serial Devices DAT (Usage=Any) → Select DAT (target row 抽出) → Serial DAT (Port パラメータに参照式)
Serial Devices DAT で接続中のシリアルデバイスを列挙し、Select DAT で目的のデバイス行を抜き出して、Serial DAT のポート指定に参照式で接続する基本フロー。PC を入れ替えたり USB を挿し直してポート番号が変わっても、デバイス名で照合できれば配線を維持できる。
- Serial Devices DAT を配置し Usage を Any に設定
- Refresh Pulse を押して現在のシリアルデバイス一覧を取得
- Select DAT でターゲットデバイス名を含む行を抽出
- Serial DAT のポート指定に Select DAT のセル参照式を記入
- OS のポート割り当て順に依存しない動的バインドが完成
Example 2: 抜き差しを監視 👀
Serial Devices DAT (callbacks=script_dat) → Text DAT (Python callback) → UI / ログ表示
Serial Devices DAT の Callbacks にスクリプト DAT を指定し、USB シリアル変換器やマイコンの抜き差しが発生したタイミングで Python 側がデバイステーブルの差分を取り、UI 通知やログ出力に流す監視構成。Enable Polling と組み合わせて定期的に変化を拾う。
- Text DAT を作成し callbacks 用の Python スクリプトを記述 (デバイス出現・消失のハンドラ)
- Serial Devices DAT の Callbacks DAT パラメータにそのスクリプト DAT を指定
- Enable Polling をオンにし Polling Time でポーリング間隔を設定
- デバイステーブル更新時に前回テーブルとの差分を計算しイベント発火
- Table COMP に「接続中」「切断」のステータスをハイライト表示
Example 3: 空きポートを事前確認 🚦
Serial Devices DAT (Usage=Not In Use) → Info CHOP (num_rows) → Logic / Switch CHOP → 接続処理の起動
Usage を Not In Use に固定して Serial Devices DAT を実行し、Info CHOP で num_rows を取得することで「現環境で空きシリアルポートがあるか」をパッチ起動時に判定。空きが無い場合は接続処理を止めて警告を表示する運用に使える。
- Serial Devices DAT の Usage を Not In Use に設定
- Info CHOP で対象 Serial Devices DAT を参照し num_rows チャンネルを取得
- Logic CHOP で num_rows ≥ 1 のときシリアル接続シーケンスを有効化
- num_rows = 0 の場合は接続を保留して警告メッセージを表示
関連オペレータ 🔗
類似機能OP 🔍
- Audio Devices DAT — システム上のオーディオ I/O デバイス一覧を取得する DAT
- Video Devices DAT — 接続中のビデオ入力デバイス一覧を取得する DAT
- Monitors DAT — 接続中のディスプレイ・モニタ情報を取得する DAT
- Art-Net DAT — ネットワーク上の Art-Net 照明デバイスを検出する DAT
組み合わせ推奨OP 🔄
- Serial DAT — 検出したポート名を指定して実際のシリアル通信を行う
- DAT Execute DAT — デバイステーブルの行・列変化に応じてスクリプトを起動
- Table DAT — 検出結果を保持・加工して下流から参照しやすい形に整理
- Info CHOP — DAT 自身の num_rows / num_cols 等のメタ情報取得
前処理・後処理DAT 🎯
Info CHOP情報 📊
Serial Devices DAT は Info CHOP による詳細情報取得に対応しています。num_rows / num_cols でテーブル規模を、total_cooks / cook_time / cpu_time で実行統計を参照でき、デバイス再列挙のトリガ判定や負荷監視に利用できます。
DAT 固有情報 📋
num_rows: DAT の行数num_cols: DAT の列数type: DAT の型 (table / text)is_table: テーブル形式の場合 1、テキスト形式の場合 0
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 想定したシリアルデバイスがテーブルに現れない
✅ Solution:
- Usage パラメータが目的に合っているか確認 (空きポートを見たいのに In Use になっていないか等)
- Refresh Pulse を押して手動でテーブルを再取得し、最新の接続状態を反映
- USB シリアル変換器のドライバ (FTDI / CH340 等) が OS に正しくインストールされ COM ポートとして認識されているか確認
❌ Problem: デバイス抜き差しに反応せずテーブルが更新されない
✅ Solution:
- Enable Polling がオンになっているか、Polling Time が極端に長い値になっていないか確認
- Callbacks DAT パラメータに指定したスクリプト DAT のパスが正しいか確認
- SerialdevicesDAT_Class の Python API ドキュメントに沿ったコールバック関数名・シグネチャになっているか確認
❌ Problem: ポーリングで負荷が高い / 反応が遅い
✅ Solution:
- 常時監視が不要なら Enable Polling をオフにし、必要なタイミングで Refresh Pulse による手動更新に切替
- Polling Time を用途に合わせて調整し、過度に短い間隔での再列挙を避ける
- Info CHOP の cook_time / cpu_time で実際の更新コストを計測してから間隔を決める
❌ Problem: ポート名は出るが Serial DAT で通信できない
✅ Solution:
- 対象ポートが他アプリケーション (Arduino IDE / シリアルモニタ等) に占有されていないか確認し、必要なら他アプリを終了
- Serial DAT のボーレートやデータビット等の通信設定が接続先デバイスと一致しているか確認
- Usage を In Use にして対象ポートが占有状態になっているかを Serial Devices DAT 側で確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Serial Devices DAT
- SerialdevicesDAT Class (Python API)
- Serial DAT (検出ポートでシリアル通信を実行)

