テスト用にPCローカルで仮想シリアルポートを用意する(Windows)

エンジニア

シリアル通信するプログラムのテスト用に、ローカルで完結して仮想的なシリアル通信をする方法を探した。今のところ、そういう定番アプリを使うのがベストのようだ。

マイコン系のボードやIoT関連の機器を扱っているとシリアルポートを使ったプログラムを書くことがある。最近はRaspberryPiにROHMのBP35C2というWi-SUNという通信規格に対応したUSBドングルを使っていて、スマートメータと通信して消費電力などを取得することができる。(電力会社とメータの通信経路がAルート、これに対して宅内との通信経路をBルートと呼ばれる)これのコントロールにシリアルポートを介したやりとりをする必要がある。

これがプログラムを書き始めた当初、思った通りに動かないことが多く、(慣れや仕様の理解度もあるが)少しコードをいじっただけでうまく動かなくなることが多々あった。そこで単体テストを充実させたくなるわけだが、スマートメータとの通信確立状態のような状態をもっているため、各コマンドを個別にテストすることが難しい。

そこでシリアルでの通信を再現するエミュレータを用意し、ローカルで仮想のシリアルポートを用意して通信を再現したい。

というわけでその方法を探したが、いくつか定番のアプリケーションがあるようだ。ドライバ絡みなのか簡単にコードをかけるような情報はなかなか出てこなかった。

できればgolangですべて完結したコード書きたかったが、そこまでは簡単ではなさそう。

Windows編

  • com0com (Null-modem emulator)
    • オープンソースのwinsows用仮想シリアルポートドライバらしい
    • 古くからの定番ぽい
  • Virtual Serial Port Driver Pro
    • 有料。14日間無料試用期間がある。

Null-modem emulator (com0com)

2021年3月時点でも最新は2017年の3.0.0.0のようだ。

com0com-3.0.0.0-i386-and-x64-signed.zip をダウンロード。解凍するとx86, x64の2つある。適切な方をインストール。

COM# <-> COM#だけで良さそう。

セットアップ画面。

設定画面

シンプルだし、単純に今回のような目的には十分そう。

Virtual Serial Port Driver(有料)

Null-modem emulator(com0com)の説明サイトで代替手段として紹介されている。曰く、

It allows creating a large number of virtual COM ports and gives you great possibility to emulate serial port behaviour fully.

http://com0com.sourceforge.net/

大量の仮想COMポートを作成でき、シリアルポートの振舞いを完全に近い形でエミュレートできる可能性もあるということのよう。

Virtual Serial Port Driverのほうのサイトには、その機能比較表もある。

Virtual Serial Port Driver: competitive comparison chart
Comparison chart of Virtual Serial Port solutions: Virtial Serial Port Driver vs com0com.

価格は予想以上に高かった。Standardが約$140、Proが約$200。Proはシリアルポートを分岐したり合流したりもできるなどかなり多機能と思われる。詳細は割愛。

2週間だけ試用できる。単純にダウンロードしてみたらPro版だった。

UIは比較的わかりやすい感じ。

“Pair”を選択するとローカルでのシリアルポートのペアを設定できる。

コメント

  1. […] […]

タイトルとURLをコピーしました