ネットワーク接続が普通になってきているこの頃でも、シリアル接続(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を実行すると、インストールが開始されます。セットアップ途中に「ドライバーソフトウェアの発行元を検証できません」という警告が表示されます。この警告が表示されたら、「このドライバーソフトウェアをインストールします」をクリックし、インストールを継続します。
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記)。