Hatena::ブログ(Diary)

Imaginable Reality

2012-07-23

シリアルポートの一覧を常に表示するソフトを作りました(オープンソース)

コトの発端

 ArduinoとかUSBシリアルアダプタみたいなシリアル通信デバイスを仕事や趣味で使っています.その手のデバイスと連携するPC側のプログラムを書いている時に,「あれ? いまCOM何番にデバイス繋がってるんだっけ?」となることが頻繁にあります.デバイスマネージャを開いて確認すればいいのですが,これが意外と面倒です.

作ったもの

 というわけで,色々と捗らせるためにシリアルポートの一覧を常に表示しておいてくれるソフトを作りました.デバイスを抜き差ししたら自動的に表示が更新されるようになっています.また,便利な「常に前面に表示」の機能もあります.

f:id:kougaku-navi:20120723175018p:image

 本当はPC側のプログラムにこういう列挙機能を組み込むべきなんですが,プロトタイピング段階だとそういうのが面倒になって,やっつけでじかにCOM番号を書いちゃうことはままあります.そういうときに便利な道具です(完全に俺得ですが).

参考資料

 製作にあたり参考にしたのは以下のWebサイトです.デバイスの列挙,デバイスの抜き差し検知,常時フォアグランド表示,ダイアログベースでESCで終了させない方法など,個別に充実した情報が得られたので作業としてはほとんどコピペプログラミングでした.

 1点だけ躓いたのが,SetupDiGetClassDevs()でデバイスを列挙する時に&GUID_DEVINTERFACE_COMPORTを指定するとArduino Unoが検出されないということ.これに関しては全デバイスを列挙して,分類がPortsになっているものだけを取得することで回避しました.また,無効化しているデバイスも検出されてしまうので,有効・無効の状態チェックも必要です.その辺の情報は以下.

nanonanonanonano 2014/06/07 09:15 研究室では実験に応じて多数の計測機器を接続したり外したりしているのでこれは非常にありがたいです。今までは毎回いちいちコントロールパネルを開けて確認していました。本当に助かります。いいものを作って下さり感謝しています。

はしもとはしもと 2014/06/07 21:04 ありがとうございます、喜んでいただけて幸いです。

kozoukozou 2016/06/27 12:50 USBをRS232CのCDCの仮想COMポートで通信しています。同じく毎回いちいちデバイスマネージャーで確認していました。本当に助かりました。感謝します。最近のユーザはPC上の設定なんて全くいじりたがらないんだそうです。VC6.0で一人でプログラムを書いています。従ってクラスのあるソースは全くわからなくて残念です。

はしもとはしもと 2016/06/28 03:55 よかったです。ニッチですが、やはり需要があるものですね。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/kougaku-navi/20120723/p1