利用可能なシリアルポート一覧を取得する方法(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

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

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

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

コメントを残す