//------------------------------------------------------------------
//	COM ポートに関する static クラス
//		このプログラムは下記を参考にした
//		http://truthfullscore.hatenablog.com/entry/2014/01/10/180608
//
//	このクラスを使う場合は，プロジェクトに"System.Management" を
//	追加する必要がある
//
//		作成者：三上直樹，2022/02/10 作成，©三上直樹 2022
//------------------------------------------------------------------

using System.Collections.Generic;
using System.Linq;

using System.Management;	// ManagementClass, ManagementObject 用

namespace Mikami.Application
{
	public static class ComPort
	{
		// マイコンに接続されている COM ポートの表の作成
		public static Queue<string> Tabulate()
		{
			var p = (new ManagementClass("Win32_SerialPort"))
					.GetInstances()
					.OfType<ManagementObject>()
					.Select(x => x.GetPropertyValue("Name").ToString())
					.Where(x => x.Contains("STLink"));
			return new Queue<string>(p);
		}

		// シリアル通信用デバイス名から COM ポート番号を取得
		//		戻り値： "COMxxx", xxx は番号
		public static string GetNumber(string str)
		{
			return str.Substring(str.IndexOf("(COM")+1).TrimEnd(')');
		}
	}
}
