この記事は2022年01月01日に投稿しました。
目次
リンク
1. はじめに
こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているC#でPCのシリアルデバイス名リストを取得する方法についてです。
2.C#でPCのシリアルデバイス名リストを取得する
C#でPCのシリアルデバイス名リストを取得するには、ManagementClassクラスからプラグアンドプレイデバイスのリストを取得し、"COMXX"(XXは0~99)が含まれるデバイス名を抽出します。
実装例
using System; using System.Collections.Generic; using System.Management; using System.Text.RegularExpressions; namespace SampleGetSerialDeviceNameList { internal class Program { private static void Main(string[] args) { // このPCのシリアルデバイス名を取得します。 var program = new Program(); var serialDeviceNameList = program.GetSerialDeviceNameList(); // 取得したシリアルデバイス名数分繰り返します。 foreach (var serialDeviceName in serialDeviceNameList) { // 取得したシリアルデバイス名を表示します。 Console.WriteLine(serialDeviceName); } Console.ReadKey(); } /// <summary> /// シリアルデバイス名リストを取得します。 /// </summary> /// <returns>シリアルデバイス名リスト</returns> public List<string> GetSerialDeviceNameList() { // シリアルポート名を検索する正規表現 var SeralPortPattern = new Regex("(COM[1-9][0-9]?[0-9]?)"); // 取得したシリアルデバイス名を格納するリスト var serailDeviceNameList = new List<string>(); // プラグアンドプレイデバイスのコレクションを取得します。 var managementClass = new ManagementClass("Win32_PnPEntity"); var managementObjectCollection = managementClass.GetInstances(); // 取得したプラグアンドプレイデバイス数分繰り返します。 foreach (var managementObject in managementObjectCollection) { // デバイス名を取得します。 var nameValue = managementObject.GetPropertyValue("Name"); // デバイス名が取得できない場合 if (nameValue == null) { // 次のプラグアンドプレイデバイスを処理します。 continue; } // 取得したデバイス名にシリアルポート名が含まれる場合 var name = nameValue.ToString(); if (SeralPortPattern.IsMatch(name)) { // シリアルデバイス名リストに追加します。 serailDeviceNameList.Add(name); } } return serailDeviceNameList; } } }
実行結果
※実行したPCの場合
Bluetooth リンク経由の標準シリアル (COM6) Bluetooth リンク経由の標準シリアル (COM5) USB Serial Port (COM7) USB Serial Port (COM8)
API Reference
3. おわりに
前回の
だと有効なシリアルポート名しか取得できません。
そのためそのシリアルポートが何に使用できるのかわかりませんので、今回のシリアルデバイス名を取得するとある程度何に使用できるかわかると思います。
リンク
紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。
私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリやウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。
また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。
EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688