ネットワーク接続が普通になってきているこの頃でも、シリアル接続(RS-232C等)でPCと接続する機材もまだ多く製造されています。

virtual serial port driver for Windows「com0com」とは

これらを試験するために、シリアル転送機能を持つダミーの機材から、USBシリアル変換ケーブルを用いて、PCのUSBコネクタに接続する方法があります。しかし、virtual serial port driver for Windows「com0com」を使用すれば、ダミーの機材やUSBシリアル変換ケーブルを必要とせず、PC内だけで、シリアル接続の試験環境が構築できます。


Null-modem emulator
The virtual serial port driver for Windows

ちなみに、com0comドライバにより出来ることは、2つの仮想のCOMポートをクロスケーブルで接続したように見せかけ、片方の仮想COMポートからもう一方の仮想COMポートへ通信する事です。この機能により、データを発生するプログラムを片方にシリアル接続させ、試験するプログラムに対して、シリアル転送によりデータを送信することが可能となります。

動作環境

  • Windows 7 Professional
  • com0comドライバ:com0com-2.2.2.0-i386-fre.zip

com0comのインストール

Windows7 32ビット版へcom0comをするには、右クリックで「管理者として実行」を選択して、setup.exeを実行すると、インストールが開始されます。セットアップ途中に「ドライバーソフトウェアの発行元を検証できません」という警告が表示されます。この警告が表示されたら、「このドライバーソフトウェアをインストールします」をクリックし、インストールを継続します。

Setup Command Promptプログラムの実行

インストール完了後、添付されている「Setup Command Prompt」プログラムを実行して、COMポートの名前がCNCA0とCNCB0になっているので、COM11とCOM12に変更します。[スタート]→[すべてのプログラム]→[com0com]→[Setup Command Prompt]を[管理者として実行]します。

COMポートの名前の確認

[list]コマンドで現在のポート名が確認出来ます。[change CNCA0 PortName=COM11]コマンドでポート名を変更出来ます。[change CNCB0 PortName=COM12]コマンドでポート名を変更出来ます。

シリアルデバイスマネージャの確認

Windows7のデバイスマネージャで確認すると、com0comのドライバが追加されています。

Windows7 64ビット版だと、使用前(インストール前や通信テスト前)にWindows7をテストモードにする必要があるみたいです(未確認です)。

com0comの動作確認

では、設定したCOMポートが正常に使用できるかを確認します。ターミナルとして、TeraTermを使用しました。

まずは一つめのポート(COM11)をTeraTermで開きます。同じようにCOM12も開きます。片方のTeraTermに入力したテキストが、もう一つの方のTeraTermの画面に表示されます(その逆も可能)。COM11とCOM12間でループが形成され、データが転送されていることが確認できました。

なおこのcom0comをプログラムからアクセスするときには、注意が必要で、添付されているReadMe.txtには次のような記載があります。この件については実際に使ってみて確認します。


Q. The HyperTerminal test succeeds, but I get a failure when trying to open the
port with CreateFile(“CNCA0″, …). GetLastError() returns ERROR_FILE_NOT_FOUND.
A. You must prefix the port name with the special characters pre”\\.¥”. Try to open
the port with CreateFile(“¥¥¥¥.¥¥CNCA0”, …). ← 実際にやってみたところ、この件については特に気にしなくてもいよいようです(2014/12/23記)