シリアル通信
CommSim は TCP / UDP に加え、シリアル(RS-232C / USB-シリアル変換 / RS-485)で通信するアプリ・機器の相手役(スタブ)/中継(プロキシ)になれます。組み込み・FA・計測機器の分野では依然シリアルが主流で、「実機がないと試験できない」制約を CommSim で解消できます。
プロトコル選択で Serial を選ぶと、既存のオートメーション・構造体応答・障害注入・録画リプレイ・ログ解析がそのままシリアルでも使えます(TCP/UDP と同一の操作感)。
まず理解する:アプリの接続先をどう CommSim にするか
TCP/UDP は localhost(127.0.0.1) で同じ PC 内の 2 プロセスを OS がつないでくれます。ところがシリアルには localhost がありません。COM3 は通常その先の物理ハードに 1 対 1 で張り付いていて、テスト対象アプリが COM3 を開いても、CommSim が同じ COM3 に「なる」ことはできません。
そこで、2 つの COM ポートを連結する仕組みを用意して、テスト対象アプリの接続先を CommSim にします。方法は 3 つです。
① 仮想 COM ペア(ソフトのみ・おすすめ)
- ① 仮想 COM ペア(ソフトのみ・おすすめ):
com0com等の仮想シリアルドライバで、連結された仮想ペア(例COM10 ⇄ COM11)を作ります。片方に書いたバイトがもう片方に出ます。同一 PC 内でハード無しにスタブを試せ、CI/開発機に向きます。 - ② ヌルモデムケーブル(物理):USB-シリアル変換を 2 本挿し、
COM3(アプリ)とCOM4(CommSim)を TX↔RX をクロスした配線でつなぎます。仮想ドライバを入れられない環境向け。 - ③ プロキシ(中継):CommSim が 2 ポート(下流=アプリの接続先/上流=実機の COM)を持ち、間に挟まって記録します(後述)。
仮想 COM ペア(com0com)の導入手順
- SourceForge から入手する:https://sourceforge.net/projects/com0com/ を開き、
com0com/3.0.0.0/フォルダからcom0com-3.0.0.0-i386-and-x64-signed.zipをダウンロードする(他サイトは使わない)。 - 展開して中の
Setup_com0com_v3.0.0.0_W7_x64_signed.exe(64bit 環境用)を実行し、インストールする。ポート名は既定のCNCA0/CNCB0のままで進めてよい。
- Microsoft Update カタログでドライバーを入手する:https://www.catalog.update.microsoft.com/Search.aspx?q=com0com を開き、「
Vyacheslav Frolov - Ports - 10/10/2015 - 3.0.0.0」の中からサイズ 113KB(x64 版)を 1 つダウンロードする(Ports表記・CNCPorts表記のどちらでも中身は同一。104KB は x86 版のため 64bit 環境では不要)。 - cab ファイルを展開する(コマンドプロンプトで):
expand ダウンロードしたファイル名.cab -F:* C:\com0com_driver - デバイスマネージャーで手動適用する:「com0com - serial port emulators」配下にある次の 4 つのデバイスすべてに、同じ手順を繰り返す。
- com0com - bus for serial port pair emulator
- com0com - bus for serial port pair emulator 1
- com0com - serial port emulator(× 2)
C:\com0com_driverを指定 → インストール。Windows が展開フォルダ内から適切な inf を自動選択し、Microsoft 署名済みドライバーに置き換わってコード 52 の警告が消える。
change CNCA0 PortName=COM10
change CNCB0 PortName=COM11
Windows Update の「オプションの更新プログラム」に自動で出てこない場合が多いため、上記の Microsoft Update カタログ経由の手動適用が確実です。
接続設定
セッションの「接続」タブでプロトコルに Serial を選ぶと、次の項目が表示されます(サーバ/クライアントの区別はシリアルには無いため非表示になります)。
- COM ポート:一覧から選ぶか、未列挙のポート名(例
COM11)を直接入力できます。「再取得」で最新の一覧に更新します。 - ボーレート:一般値(4800〜115200)から選ぶか直接入力。
- パリティ / データビット / ストップビット / フロー制御:相手機器の仕様に合わせます。
起動すると指定した COM ポートを開いて待受状態(接続済み)になります。あとはオートメーション・構造体応答などが TCP/UDP と同じように動作します。
プロキシ(中継)
上流(転送先)のプロトコルにも Serial を選べます。これで「下流=仮想ペア ⇄ CommSim ⇄ 上流=実機の COM」の中継ができ、実機でしか出ない不具合の往復を記録できます。
「接続」タブで転送先を有効にし、上流プロトコルを Serial にすると、上流側にも COM ポート・通信パラメータの入力欄が現れます。下流=仮想ペア、上流=実機の COM を割り当てます。
つながらないとき(失敗診断)
接続に失敗すると、CommSim は原因が分かるメッセージをログに出します。
| 症状 | 主な原因と対処 |
|---|---|
| 「COMxx が見つかりません」 | 仮想 COM ドライバ(com0com 等)が未導入、または仮想ペア未作成。ポート名の打ち間違いも確認。 |
| 「COMxx は他のアプリが使用中です」 | ターミナルソフトなど別アプリがそのポートを開いています。閉じてから再試行。 |
| 「通信設定の値が不正です」 | ボーレート・データビット等が範囲外。値を見直してください。 |
| 受信できるが内容が文字化け | 両端のボーレート/パリティ等の不一致。HEX 表示のログで受信バイトを確認し、設定を合わせます。 |
なぜターミナルでなく CommSim か
シリアルターミナル(Tera Term 等)は通信を「見る」ツールです。CommSim は実機の代わりに能動的に応答し・異常系を注入し・再現するツールです。
- オートメーション:コマンド受信→応答、接続あいさつ、周期送信をシリアルでも。
- 構造体応答:STX/長さ駆動のバイナリフレームを条件応答。
- 障害注入:遅延・パケットロス・切断でタイムアウト/リトライを検証。
- 録画リプレイ:実機との往復を録画し、実機なしで決定論的に再生。
これらは TCP/UDP と同一の操作感で、シリアルにもそのまま使えます。
次に読む
- 同梱サンプルで試す → 計測器コマンド応答(シリアル)
- 自動応答を作る → オートメーション
- 中継・記録を行う → 中継とキャプチャ
- 異常系を試す → リプレイ/障害注入