2011/08/01(月)Javaでシリアルポートの詳細な名前取得

2011/08/01 19:29 Program::Javanucho
Java上でシリアルポートに接続された任意のデバイスのポート名を取得して,自動で接続するということがしたかった時のメモ.
システムの色んな情報を受け取れるらしいWMIをJavaにラップしているjWMIをeclipseで使う,という話です.

使用手順

  1. パッケージエクスプローラ上の任意のJavaプロジェクトを右クリック
  2. 「新規>パッケージ」を選択
  3. 名前に「com.citumpe.ctpTools」と入力
  4. ここからダウンロードしてきたフォルダの中の「jWMI.java」をさっき作ったパッケージの中に放り込む
  5. 何か341行目が化けてるので「OSRecoveryConfiguracion」みたいな感じで直す
あとはプログラムの頭で
import com.citumpe.ctpTools.jWMI;
とインポートし,
try {
	// COMポートの詳細な名前を教えてもらう
	String name = jWMI.getWMIValue(
			"Select Caption from Win32_SerialPort", "Caption");
	System.out.println(name);
	} catch (Exception e) {
	// TODO 自動生成された catch ブロック
	e.printStackTrace();
}
という風に使ったら,
通信ポート (COM1)
Silicon Labs CP210x USB to UART Bridge (COM33)
URG Series USB Device Driver (COM31)
てな感じで返ってきた…んですけど,モノによって出てこないものがあります.
確認しているものだとmbed(mbed Serial Port)とft232シリアル変換IC(USB Serial Port)は取得できなかったです.何故だ….

2011/8/26追記

name = jWMI.getWMIValue("Select Caption from Win32_PnPEntity", "Caption");
としたら,今まででてこなかったものも表示されました.
必要ない情報も多くなってしまいますけれど.

参考

シリアルポートの名前取得