現在、.NETアプリケーションで、シリアル通信を行うアプリをよく扱っており、
そこで出てきた問題点についてまとめてみようと思います。
USBの機器を使っていくと、デバイスドライバが機器ごとに当たっていきます。
最初の頃はCOM4とかCOM12とか可愛いもので済みますが、
COM120とか増えていくと厄介なものになっていきます。
COMポートの最大数は256(※)までの為、適度にお掃除してあげる必要があります。
※参考 http://support.microsoft.com/kb/100111/en-us
方法として考えたのは以下の3つです。
- デバイスマネージャから削除する
- ドライバに関係するファイルやレジストリを削除する
- 別のアプリを使う
2.はアプリに組み込むことができますが、ドライバ関連の勉強に時間がかかる。
本当は2.を選びたいところですが、早く対応する必要があったため、今回は3.を使用しました。
今回ドライバの削除に使用したものは
FTDI社の「CDM Uninstaller 1.4」という無償のアプリケーションです。
(ライセンスに関しての記述がどこにもないのが気になる)
http://www.ftdichip.com/Support/Utilities.htm
このアプリケーションはGUI版とCUI版が配布されており、
普通ならGUI版でいいと思いますが、
CUI版を用いることでアプリケーションと連携させることも容易にできます。
例えば、アプリケーションからFTDIのRS232RLドライバを削除させる場合は、
var psInfo = new System.Diagnostics.ProcessStartInfo();
psInfo.FileName = ExePath; // CDM Uninstallerのファイルパス
psInfo.CreateNoWindow = true;
psInfo.UseShellExecute = false;
psInfo.Arguments = "0403 6001 -l"; // FTDIのRS232RLドライバを削除
var p = System.Diagnostics.Process.Start(psInfo);
p.WaitForExit();
p.Close();
となります。ログ用のテキストも出力されるのでなかなかありがたいアプリです。
ただ、CDM Uninstallerは管理者権限を必要とするため、注意が必要です。
<あとがき>
きんいろモザイクがなかなかにブヒれる。
0 件のコメント:
コメントを投稿