/// <summary> /// シリアルポートの一覧を更新する /// </summary> private void UpdateSerialPortList() { this.serialPortList = SerialPortUtility.GetSerialPortsAsDataTable(); this.comboBoxSerialPortList.DataSource = serialPortList; this.comboBoxSerialPortList.DisplayMember = "Caption"; this.comboBoxSerialPortList.ValueMember = "DeviceID"; }
/// <summary> /// シリアルポートの一覧を取得する /// </summary> /// <returns>シリアルポートの一覧を表す連想配列。DeviceID をキーとして、説明を値とする。</returns> public static Dictionary <string, string> GetSerialPorts() { // Win32_SerialPort と Win32_PnPEntity で COM ポートを取得する var serialPortsFromWMISerialPort = SerialPortUtility.GetSerialPortsFromWMISerialPort(); var serialPortsFromWMIPnPEntity = SerialPortUtility.GetSerialPortsFromWMIPnPEntity(); // 結果をマージし、ひとつの連想配列にまとめる foreach (var serialPort in serialPortsFromWMIPnPEntity) { serialPortsFromWMISerialPort[serialPort.Key] = serialPort.Value; } // マージ結果を連想配列で返す return(serialPortsFromWMISerialPort); }
/// <summary> /// シリアルポートの一覧をデータテーブルで取得する /// </summary> /// <returns> /// シリアルポートの一覧を表すデータテーブル。 /// デバイスの識別子 (COM数字) を表す DeviceID カラムと、 /// デバイスの詳細を表す Caption カラムが存在する。 /// </returns> public static DataTable GetSerialPortsAsDataTable() { // データテーブルを生成する var portsDataTable = new DataTable(); portsDataTable.Columns.Add("DeviceID", typeof(string)); portsDataTable.Columns.Add("Caption", typeof(string)); // ポート一覧を取得する var portsDictionary = SerialPortUtility.GetSerialPorts(); // Dictionary からデータテーブルへ変換する foreach (var deviceId in portsDictionary.Keys) { var row = portsDataTable.NewRow(); row["DeviceID"] = deviceId; row["Caption"] = portsDictionary[deviceId]; portsDataTable.Rows.Add(row); } return(portsDataTable); }