シリアル通信を試す(仮想 COM ペアで計測器スタブ)
TCP/UDP と違い、シリアルには localhost がありません。このチュートリアルは仮想 COM ペアを作ってから、CommSim を計測器(RS-232C / USB-シリアル機器)の相手役として動かすまでを、実機なしで手順どおりに進めます。題材は SCPI 風の ASCII コマンド-レスポンス(*IDN? / MEAS? / RST)です。
SerialCOM10 ⇄ COM119600 8-N-1ASCII コマンド実機不要要 仮想 COM ペア
このページでできること
- 仮想 COM ペア(com0com)を導入し、TCP/UDP の localhost に相当する「接続先」をシリアルで用意する。
- CommSim を計測器(機器)役のスタブとして動かし、ASCII コマンドにオートメーション(パケット一致)で応答させる。
- CommSim.Sample をアプリ役として COM ポート越しに接続し、実際にコマンドを送って応答を観察する。
- COM が見つからない・応答がない場合の失敗診断の見方を押さえる。
登場人物(役割)
実機は要りません。CommSim 本体=計測器役(COM11 を開いてコマンドに応答)、CommSim.Sample=アプリ役(COM10 を開いてコマンドを送る)の 2 本と、両者をつなぐ仮想 COM ペア(com0com)で完結します。
用意するもの
| ファイル/ツール | 内容 |
|---|---|
| 仮想 COM ペアドライバ(com0com 等) | OS 標準では用意されないため別途導入する。導入手順は シリアル通信 §仮想 COM ペアの導入手順 を参照(SourceForge の公式配布のみ使用・他サイトは使わないこと) |
serial-instrument/serial-instrument.commsim | 計測器役スタブのプロジェクト(Serial・既定 COM11・9600 8-N-1・*IDN?/MEAS?/RST の 3 オートメーション) |
| CommSim.Sample | アプリ役として実際にコマンドを送る動作確認用アプリ(CommSim に同梱・追加のインストールは不要) |
serial-instrument.commsim は CommSim.Sample の実行フォルダ内 samples/serial-instrument/ に同梱されています。実機は不要ですが、仮想 COM ペアの導入だけは先に済ませてください。
ステップA:仮想 COM ペアを作る
まだ仮想 COM ペアを導入していない場合は、シリアル通信 §仮想 COM ペア(com0com)の導入手順 の手順で COM10 ⇄ COM11(またはお使いの環境の空き番号)のペアを作成してください。Windows 11 ではドライバ署名(コード 52)で追加の手当てが必要になる場合があります。手順ページに対処法を記載しています。
デバイスマネージャーで「com0com - serial port emulators」の下に警告アイコンなしでポートが 2 つ(既定 CNCA0/CNCB0)見えれば準備完了です。ポート名を COM10/COM11 に変更したい場合は、手順ページの「ポート名は先に決めておく」の注意に従ってください。
ステップB:CommSim を計測器役として起動する
- CommSim 本体で
samples/serial-instrument/serial-instrument.commsimを開く(「ファイル」→「ファイルから開く…」/Ctrl+O)。 - セッション「計測器スタブ(シリアル)」の「接続」タブで、プロトコル=Serial・COM ポート=自分の仮想ペアの片方(既定は
COM11。異なる場合はコンボから選び直す)になっていることを確認する。 - 「起動」をクリックする。COM ポートが開けると即座に「接続中」(Serial は待受概念がないため open=接続扱い)になる。
- 「オートメーション」タブで、
*IDN?/MEAS?/RSTの 3 件(パケット一致トリガー)が有効になっていることを確認する。
COM4)で撮影しており、既定の COM11 とは異なる(自分の環境のポート名を選べばよい)。ステップC:アプリ役から送って観察する
- CommSim.Sample を起動し、上部の「動かすサンプル」で「計測器(シリアル・COM ポート)」を選ぶ。① ペインのプロトコルが Serial・COM ポートが
COM10(既定)になる。 - 自分の仮想ペアのポート名が既定と異なる場合は、① ペインの COM ポート欄で選び直す(「再取得」で一覧を更新できる)。
- ① ペインの「起動」(接続)をクリックし、COM10 を開く。
- 「デモ送信」を押す。① が
*IDN?→MEAS?→RSTを順に送る。
観察できること
- TX
*IDN?① → 計測器役 - RX
CommSim,MODEL-100,SN12345,1.0機種名・S/N・バージョン - TX
MEAS? - RX
MEAS 23.5 degC50ms 遅延つき応答 - TX
RST - RX
OK
*IDN?/MEAS?/RST それぞれに対し、CommSim 本体(計測器役)からの応答が仮想 COM ペア越しに届く。自分のケースへの当てはめ方
このサンプルの流れを、自分のシリアル機器に応用するときの判断の糸口です。
| 問い | はい | いいえ |
|---|---|---|
| テスト対象アプリは特定の COM ポート名を指定して開くか? | 仮想ペアの片方をその名前に合わせる(com0com の Setup Command Prompt で change) | アプリ側の設定でポート名を変えられるならどちらでもよい |
| 実機が手元にあり、実機だけの不具合を調べたいか? | プロキシ(中継)で 下流=仮想ペア ⇄ CommSim ⇄ 上流=実機 COM を組み、通信をそのまま記録する(シリアル通信 §プロキシ) | スタブ単体(このチュートリアルの構成)で十分 |
| 応答が固定値でなく計算・状態を持つか? | オートメーションをスクリプト応答に置き換える(スクリプトで動的応答を作る) | このサンプルと同じ固定応答でよい |
次に読む
- シリアル通信 — 接続設定・プロキシ・失敗診断の詳細
- サンプル詳細:計測器コマンド応答(シリアル)
- オートメーション — トリガー・送信ステップの網羅説明
- ← チュートリアル一覧に戻る