はじめに
2年前に作成したシリアル通信を使用するアプリケーションの改修をすることになった。その時より新しいPC(Windows 7 64bit)に変わっている。現在では、Windows 10 64bitになっています。
最近のPCにはCOMポートが無くなってしまっているため、仮想シリアル(COM) ポートドライバで有名なフリーソフト「com0com」を使用する。
「com0com」は2つの仮想のCOMポートをクロスケーブルで接続したように見せかける仕組み(ループバック)となっているため、ポートが必要な分だけペアで作成する。
【2023/02/25追記】
久しぶりに「いいね」が付くと、記事を見直すきっかけになります。Qiitaは履歴が残るので Windows 7 については削除するのと、Intel Mac と Parallels Desktop for Mac 内の Windows 11で確認した結果を報告します。
com0comのインストール
ドライバ警告回避方法について、2つの方法を提示します。
自分の場合、特殊な環境「Intel Mac と Parallels Desktop for Mac 内の Windows 11」だったため、その1 の方法では回避できなかったため、その2 の方法で回避することができました。
com0comのダウンロード
2017/07/13にデジタル署名付きのcom0com-3.0.0.0-i386-and-x64-signed.zipが公開されたのでダウンロードする。
ドライバ警告回避方法 その1
インストール後、デバイスマネージャを開いて、該当するドライバに警告が出ていないか確認してください。
警告が出ている場合は、ドライバの更新(Windows Update経由)※で署名済みの最新ドライバを入手することができます。(Microsoft Windows Hardware Compatibility Publisher署名に切り替わります)
※ドライバの更新は該当デバイスを右クリック→ドライバーの更新でWindowsUpdate経由で行うことができます。
※Windows 10 20H2でドライバーを更新したい場合はWindows Update上で操作する必要があります。
参考:
- 次のエディションではインストーラの実行のみで認識されました
- Windows 10 Home 20H2
- Windows 10 Pro 2004
- 次のエディションではドライバの更新が必要でした
- Windows 10 Pro/Home 1909
- 署名はWindows Compatible Products Listからcom0comと入力すると確認できます
ドライバ警告回避方法 その2
下記の動画に則った方法になります。
準備として、com0comの署名済みドライバーが7z形式で圧縮されているため、7-ZIPをダウンロードしてインストールしてください。
動画の方法
- pete.akeo.ieのサイトから「署名済みの 2.2.2.0 com0com ドライバー」をダウンロードします。
- 7-ZIPで展開します。
- x64フォルダ内の
com0com.infファイルを右クリックメニューから「インストール」を選択します。 - デバイスマネージャを開いて、ドライバの警告が解消されていることを確認します。
自分の場合には動画の方法では解決しなかったため、記事の方法で回避しました。
もしかしたら管理者権限でなら解消できたかも知れませんね。
記事の方法
サイトの記事通りにしました。
- pete.akeo.ieのサイトから「署名済みの 2.2.2.0 com0com ドライバー」をダウンロードします。
- 7-ZIPで展開します。
- x64フォルダ内の
setupc.exeを管理者権限で開きます。 - コマンドプロンプトが開くので、「install - -」と入力します。
- デバイスマネージャを開いて、ドライバの警告が解消されていることを確認します。
ポート名の変更
3.0.0.0のセットアップ画面の先頭に「use Ports Class」のチェックボックスが追加されています。これは空いているポートを自動で設定する機能です。
ASUS Vivotab note 8でGPSソフトが使えた話(無料カーナビ化に挑戦)
※以降の記事の画像は2.2.2.0版のセットアップ画面になります。
インストール直後ではCOMポートの名前が「CNCA0」と「CNCB0」になっているので、「COM11」と「COM12」などに変更します。
[スタート]→[すべてのプログラム]→[com0com]→[Setup]を起動します。
「CNCA0」と「CNCB0」の名前を「COM11」と「COM12」などに変更して「Apply」ボタンをクリックします。
上述のセットアップ画面で変更できるようになったのでコマンドプロンプトによる方法は不要となるのですが、念の為に提示しておきます。
[スタート]→[すべてのプログラム]→[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」が追加されて警告マークが付いていないことを確認します。
TeraTermによる確認
シリアル通信に使用できるターミナルソフト「TeraTerm」をダウンロードしてインストールする。
Tera Termのダウンロード
メニューから「設定」の「シリアルポート」を選択する。ポートに「COM11」と「COM12」が表示されていることを確認する。
送信内容の確認
「COM11」と「COM12」はクロスケーブルで接続したように見せかけるの方式となっているため、「COM11」で送信した値は「COM12」で受信される。
TeraTermにて「COM12」に接続すれば、アプリケーション側で「COM11」で送信した値がTeraTerm上の画面に表示される。
ポートの追加
[スタート]→[すべてのプログラム]→[com0com]→[Setup]を起動します。
「AddPair」ボタンをクリックしてポートを追加します。
追加したCOMポートの名前が「CNCA1」と「CNCB1」になっているので、「COM21」と「COM22」などに変更して「Apply」ボタンをクリックします。
Visual Studioのデバッグ時の注意
Visual Studioのデバッグ時に例外でアプリケーションが強制終了してしまう現象が発生
「enable buffer overrun」を有効化することで、通信エラーにならないが例外で強制終了することはなくなりました。
最後に
「com0com」はとても便利ですが、所詮は仮想ですので最終的な確認は本物のシリアルポートがあるPCでやりましょう。








Comments
作成するもう1つのソリューション COM ports - https://www.eltima.com/products/vspdxp/
@testset @testsetさん
Windows10(64bit)版の7/1の追記の編集ありがとうございました。
Windows 10 64bitで動作させる方法を記載 by testset 2020/07/01 01:55
@yaju さん
マージのご対応、それ以前に有用な記事を公開いただき、誠にありがとうございます。
説明をありがとう、それは私に多くを助けました、私だけが仮想ポートを作成するためにこのソフトウェアを使用しました https://www.virtual-serial-port.org/ 。 64ビットWindowsで問題なく動作しました
良記事ありがとうございます!!
Win10 Home 1909で試しましたが,ドライバの更新は必要だったものの無事に動作しました :-)
@tatsu1225 さん
記事内ではWindows 10 Pro 1909(要確認)でしたね。
Windows 10 Home 1909でも動作したとのご報告ありがとうございます。
素晴らしい記事をありがとうございます。実は、1PC内で2つのソフトを仮想COMポートで連結したいニーズがあって、こちらにたどり着きました。ご指示の通りやったつもりですが、W-10 HOME 1909で動いていません。デバイスマネージャでは
「このデバイスに必要なドライバーのデジタル署名を検証できません。ハードウェアまたはソフトウェアに最近加えられた変更により、正しく署名されていないファイルや破損したファイルがインストールされた可能性があります。また、出所の不明な悪意のあるソフトウェアであることも考えられます。 (コード 52)」
が出て、Tera Termでも、改名したCOM11,COM12が見えません。
@tatsu1225さんは動いたとのメッセージがありましたが、署名を取得しないとだめなのでしょうか?
@Too_large_too_fast さん
横から失礼いたします。
ドライバーがエラー状態になっているため、ドライバーの更新が必要です。
手順は別途記載いたしますが、デバイスマネージャーで、警告の出ているデバイス→右クリック→ドライバーの更新→ドライバーを自動的に検索→Windows Update .... で更新を行ってみてください。
@testset 編集ありがとうございます。
ドライバの更新手順を追記、Windows 10 Home 1909の要検証記載を削除 by testset 2020/12/31 01:49
@testsetさん、ありがとうございます。初歩的なことでお手を煩わせて申し訳ありませんでした。デバマネで警報の出てる表示が「×」とか「!」ではなかったようなので(確かに黄色のマークがあったように思いましたが)、警報でてなくてドライバ不在って何?と思ってしまっていました。で、動くようになりました。すみません。
ありがとうございます。助かりました。
自分は以下の環境で実行できました。
OS: Windows 11 Pro x86_64
また、ドライバ警告回避は1では実現できず2で実行できました。
Let's comment your feelings that are more than good