利用可能なシリアルポート一覧を取得する方法(Windows)


WMI を使い、有効なシリアルポートの一覧を名前付きで取得する方法です。
WMI を使える言語であれば、言語に依存せず同様の方法で一覧を取得できます。

Ruby によるサンプルコード

get_enable_serialports.rb

require 'win32ole'

# 有効なシリアルポートの一覧をハッシュで返す。
# (ポート名が key、接続機器の名前が value)
def serialports
    locator = WIN32OLE.new("WbemScripting.SWbemLocator")
    services = locator.ConnectServer()

    comlist = {}

    # 内蔵シリアルポート一覧を取得
    services.ExecQuery("SELECT * FROM Win32_SerialPort").each do |item|
        comlist[item.DeviceID] = item.Name
    end

    # PnPシリアルポート一覧を取得
    services.ExecQuery("SELECT * FROM Win32_PnPEntity").each do |item|
        comlist[$1] = item.Description if item.Name =~ /\((COM\d+)\)/
    end

    return Hash[
        # シリアルポート名に含まれる数字も考慮し昇順にソート
        comlist.sort_by {|k, v|
            k.scan(/(\d+)|([^\d]+)/).map{|s|
                s[0] ? [0, s[0].to_i] : [1, s[1]]
            }
        }
    ]
end

puts serialports.map{|k, v| "#{k}: #{v}"}

参考:
COMポート一覧取得 – 揮発性のメモ

C# の場合はこちらが参考になります。
C# でシリアルポートを列挙する方法: enajet

カテゴリー: 記事 タグ: , パーマリンク

利用可能なシリアルポート一覧を取得する方法(Windows) への1件のフィードバック

  1. ピンバック: シリアル通信入門 (RS-232C/422/485) | TipsZone

コメントを残す