2015-07-14 :-(
_ 夜
2145 退勤
_ [COM番号][Windows][teraterm][ruby][シリアルポート]有効なシリアルポートを全て TeraTerm で開く
Windows 7 + ruby 2.2.2
Win32OLE か。闇だ。
require 'open3'
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}"}
serialports.each_key {|com|
spawn "C:/Program\ Files\ \(x86\)/teraterm/ttermpro.exe", "/c=#{com}"
}
ref.
[ツッコミを入れる]



