2008年6月26日木曜日

仮想シリアルポートcom0comを使ってみた。

開発者でも何でもないんだけど仮想COMポートが必要になったのでいろいろ探してみました。
しかしシェアウェアとかGUIゴリゴリ多機能で高価格なものとかが多くて探すのを(金銭的に)挫折しそうになっていたところ発見しました。

http://com0com.sourceforge.net/
http://sourceforge.net/projects/com0com/

GPLとはなんと良心的な!!

以下はインストールしてテストをするまでやったことです。
まぁ、付属のREADMEに書いてある内容と変わらないのだけど英語力・記憶力に欠ける自分の備忘録的に記録を公開。

32bit Windows XP/Windows 2000 環境なので上記サイトから i386-chk.zip をダウンロード。
解凍して出てきたsetup.exeを実行します。

標準の設定のままセットアップを進めるとCOMポート二つがシステムに追加されます。

XPの場合ドライバのウィザードが出てきますが画像の通りのオプションで切り抜けます。
デバイスマネージャで見るとこんな感じ。

三つのうち下二つが追加されたCOMポートで、一番上はその二つの入出力の橋渡しデバイスっぽいです。(想像)

ただ、このままではCOMポートの名前がCNA0とCNB0という一般的ではない名前なので変更します。
スタートメニューに追加されている「com0com」→「Setup Command Prompt」を起動します。
CUIでいろいろ設定できるようです。「help」と入力すると使い方が出てきます。
「list」コマンドでcom0comが作ったポートの一覧が表示されます。
PortNameが何も設定されていないので「change」を使ってポート名をつけてあげることにします。
「change」コマンドを二回使ってそれぞれのポートにCOM20、COM21という一般的な名前をつけました。
「list」コマンドで反映されているか確認しています。

設定が終わったら「quit」コマンドで終了します。

さて、設定したポートはちゃんと使えるのでしょうか?
マニュアルを読むとハイパーターミナルで試してみるといいよと書いてあるけどUTF-8 TeraTermで試してみました。(ハイパーターミナルの起動時のダイアログがどうしても好きになれないのです・・。)
まずは一つめのポート(COM20)を開きます。
同じようにTeraTermを起動してCOM21も開きます。
仲良くTeraTermが二つ並んでいるの図。

おもむろにどちらかでキーボード入力してみます。
あら不思議。左側に入力したのに右側に!
というのはポートの入力内容がもう一つの方に出力されるからなのでした。(その逆も可能)

なんかシステムの開発とかデバッグに使えそうな面白いソフトだなぁと思いました。(小学生の感想かいな)

登録できるポート数に制限はありません。(Windowsって256個ぐらいまででしたっけ?)
CUI画面で「install」コマンドを使えばバシバシ追加できます。