.NET TIPS

すべてのシリアル・ポートの名前を列挙するには?[2.0のみ、C#、VB]

デジタルアドバンテージ 一色 政彦
2006/11/10

 .NET Framework 2.0では、シリアル・ポートを取り扱うSerialPortクラス(System.IO.Ports名前空間)が追加されている。本稿ではこのクラスを使って、現在のコンピュータが持つすべてのシリアル・ポートの名前(COM1、COM2など)を列挙する方法を説明する。

 シリアル・ポート名を列挙するには、SerialPortクラスの次のメソッドを呼び出せばよい。

  • GetPortNamesメソッド

 このメソッドはパラメータを持たず、戻り値として文字列配列を返す。

 次のコードは、実際にGetPortNamesメソッドを使ってシリアル・ポート名を列挙している例だ。

using System;
using System.IO.Ports;

class Program
{
  static void Main(string[] args)
  {
    // すべてのシリアル・ポート名を取得する
    string[] ports = SerialPort.GetPortNames();

    // 取得したシリアル・ポート名を出力する
    foreach (string port in ports)
    {
      Console.WriteLine(port);
    }
    Console.ReadLine();
  }
}
// 筆者の環境の出力例:
// COM1
Imports System.IO.Ports

Module Module1

  Sub Main()
    ' すべてのシリアル・ポート名を取得する
    Dim ports() As String = SerialPort.GetPortNames()

    ' 取得したシリアル・ポート名を出力する
    Dim port As String
    For Each port In ports
      Console.WriteLine(port)
    Next
    Console.ReadLine()
  End Sub

End Module
' 筆者の環境の出力例:
' COM1
GetPortNamesメソッドを使ってシリアル・ポート名を列挙するサンプル・プログラム(上:C#、下:VB)

 ちなみに、GetPortNamesメソッドは有効なシリアル・ポートを照会して取得するようになっているが、Windows 98環境においては(照会せずに)レジストリ(具体的には「HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM」)から取得するようになっている。従ってこのレジストリの情報が誤っている場合、取得されるシリアル・ポート名も不正なものとなるので注意してほしい。

 なおSerialPortクラスの機能は、本稿で示したシリアル・ポート名を列挙するというだけでなく、もちろん各シリアル・ポートの入力バッファからデータを読み込んだり、出力バッファにデータを書き込んだりすることもできる。これらの方法については後日あらためて紹介する。End of Article

利用可能バージョン:.NET Framework 2.0のみ
カテゴリ:クラス・ライブラリ 処理対象:シリアル・ポート
使用ライブラリ:SerialPortクラス(System.IO.Ports名前空間)

この記事と関連性の高い別の.NET TIPS
レジストリの値を列挙するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH