Help us understand the problem. What is going on with this article?

仮想シリアル(COM) ポートドライバ「com0com」によるシリアル通信

はじめに

2年前に作成したシリアル通信を使用するアプリケーションの改修をすることになった。その時より新しいPC(Windows 7 64bit)に変わっている。

最近のPCにはCOMポートが無くなってしまっているため、仮想シリアル(COM) ポートドライバで有名なフリーソフト「com0com」を使用する。

「com0com」は2つの仮想のCOMポートをクロスケーブルで接続したように見せかける仕組み(ループバック)となっているため、ポートが必要な分だけペアで作成する。

com0comのインストール

com0comのダウンロード

Windows 10の環境の場合

【2019/06/04追記】

インストーラーの証明書を調べると、それは2018年1月まで有効
(中略)
com0com 2.2の署名入りインストーラを使うと、インストーラを起動したときに作者を信頼するポップアップが表示され、その後はすべてうまくいきます。
(中略)
PCが以前のリリースのWindowsからWindows 10バージョン1607にアップグレードされた場合、ドライバーは動作しますが、Windows 10バージョン1607以降の新規インストールでは、BIOSからセキュアブートをオフにする必要があります。ドライバーは2015年7月29日以降に署名されたため、最後の例外は適用されません。
Windows 10上でcom0comが動かない(Win 10、Win 10)

【2019/06/05追記】
64bit版については、com0com 2.2の署名入りインストーラでも駄目なようです。
Windows 10からの新規インストールが駄目ってことですね。

デジタル署名の強制は32bit版のWindows OSでは必須ではなく64bit版Windows OSではデジタル署名が必須になっています。ドライバ開発者はドライバのロゴ認証を取得する必要があり、10万円前後の費用がかかかります。64bit版のデジタル署名版を無料でいつまでも公開されると思わない方がいいのかも知れません。

com0comの代替として、Virtual Serial Ports Emulator(VSPE)がありますが、32bit用は無料ですが64bit用はライセンス料として$24.95となります。

テストモードが嫌なら、32bitのPCでcom0comを使用する選択肢しか残ってない。

Windows 7以降(64bit版)の環境の場合

【2018/01/20追記】
2017/07/13にデジタル署名付きのcom0com-3.0.0.0-i386-and-x64-signed.zipが公開されたのでダウンロードする。
com0comdダウンロード 3.0.0.0
Setup_com0com_v3.0.0.0_W7_x64_signed.exe (64bit版)とSetup_com0com_v3.0.0.0_W7_x86_signed.exe (32bit版)が同梱されているで、64bit版をインストールします。

以下の記載は、3.0.0.0版のデジタル署名付きがまだ公開されていなかった時の方法になります。

デジタル署名付きのcom0com-2.2.2.0-x64-fre-signed.zipをダウンロードする。
com0comdダウンロード 2.2.2.0

テストモードで動かさなければならないのはデジタル署名が付いてないためなのでデジタル署名付きを使用する。

Windows 7以降(32bit版)の環境の場合

【2018/01/20追記】
2017/07/13にデジタル署名付きのcom0com-3.0.0.0-i386-and-x64-signed.zipが公開されました。
公式 com0comdダウンロード 3.0.0.0
Setup_com0com_v3.0.0.0_W7_x64_signed.exe (64bit版)とSetup_com0com_v3.0.0.0_W7_x86_signed.exe (32bit版)が同梱されているので、32bit版をインストールします。

以下の記載は、3.0.0.0版のデジタル署名付きがまだ公開されていなかった時の方法になります。

デジタル署名付きは無いため、com0com-3.0.0.0-i386-and-x64-unsigned.zipをダウンロードする。
公式 com0comdダウンロード 3.0.0.0

※デジタル署名付きのダウンロード先のリンクを貼っておきますが、ソース元は不明なので心配な方はお控え下さい。(64bit版もありまっす)
setup_com0com_W7_x86_signed.exe - powersdr-iq

同梱されていたReadMe.txt(英語)によると、64bit版Windowsで使用する場合は、Windowsをテストモードに切り替えておく必要があるようですが、32bit版Windowsでは、切り替える必要はありません。

com0comのドライバが未署名のため、インストール時に「ドライバーソフトウェアの発行元を検証できません」の警告が3回程表示されますが、「このドライバーソフトウェアをインストールします」をクリックして進めてください。

ポート名の変更

3.0.0.0のセットアップ画面の先頭に「use Ports Class」のチェックボックスが追加されています。これは空いているポートを自動で設定する機能です。
ASUS Vivotab note 8でGPSソフトが使えた話(無料カーナビ化に挑戦)

3.0.0.0版のセットアップ画面(赤枠が追加)
com0com3000.png

※以降の記事の画像は2.2.2.0版のセットアップ画面になります。

インストール直後ではCOMポートの名前が「CNCA0」と「CNCB0」になっているので、「COM11」と「COM12」などに変更します。
[スタート]→[すべてのプログラム]→[com0com]→[Setup]を起動します。

「CNCA0」と「CNCB0」の名前を「COM11」と「COM12」などに変更して「Apply」ボタンをクリックします。
image

上述のセットアップ画面で変更できるようになったのでコマンドプロンプトによる方法は不要となるのですが、念の為に提示しておきます。

[スタート]→[すべてのプログラム]→[com0com]→[Setup Command Prompt]を起動します。
[list]コマンドで現在のポート名が確認出来ます。
[change CNCA0 PortName=COM11]コマンドでポート名を変更出来ます。
[change CNCB0 PortName=COM12]コマンドでポート名を変更出来ます。
仮想シリアル(COMポート)ドライバ(ツール/ソフト) 設定方法/使用方法(使い方)

ポート名変更
Enter 'help' to get info about usage of Setup for com0com.

command> list
       CNCA0 PortName=-
       CNCB0 PortName=-
command> change CNCA0 PortName=COM11
       CNCA0 PortName=-
change CNCA0 PortName=COM11
Restarted CNCA0 com0com\port \Device\com0com10
       CNCB0 PortName=-
ComDB: COM11 - logged as "in use"
command> change CNCB0 PortName=COM12
       CNCA0 PortName=COM11
       CNCB0 PortName=-
change CNCB0 PortName=COM12
ComDB: COM12 - logged as "in use"
command> list
       CNCA0 PortName=COM11
       CNCB0 PortName=COM12
command>

ポートの確認

デバイスマネージャーによる確認

[コントロールパネル] - [ハードウェアとサウンド] - [デバイスとプリンター]にある「デバイスマネージャー」を開きます。
「com0com0」が追加されて警告マークが付いていないことを確認します。
image

TeraTermによる確認

シリアル通信に使用できるターミナルソフト「TeraTerm」をダウンロードしてインストールする。
Tera Termのダウンロード

メニューから「設定」の「シリアルポート」を選択する。ポートに「COM11」と「COM12」が表示されていることを確認する。
image

送信内容の確認

「COM11」と「COM12」はクロスケーブルで接続したように見せかけるの方式となっているため、「COM11」で送信した値は「COM12」で受信される。

TeraTermにて「COM12」に接続すれば、アプリケーション側で「COM11」で送信した値がTeraTerm上の画面に表示される。

ポートの追加

[スタート]→[すべてのプログラム]→[com0com]→[Setup]を起動します。
「AddPair」ボタンをクリックしてポートを追加します。
追加したCOMポートの名前が「CNCA1」と「CNCB1」になっているので、「COM21」と「COM22」などに変更して「Apply」ボタンをクリックします。
image

image

最後に

「com0com」はとても便利ですが、所詮は仮想ですので最終的な確認は本物のシリアルポートがあるPCでやりましょう。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした