Visual C# (.NET8)

プロジェクトの作成

Visual Studioを起動し、[ファイル(F)]から[新規作成(N)]-[プロジェクト(P)]を選択します。
[新しいプロジェクトの作成]ダイアログボックスのテンプレートから、[C#]の [Windows フォーム アプリ]を選択し、[次へ(N)]ボタンをクリックします。

[新しいプロジェクトを構成します]ダイアログボックスから、作成するプロジェクトの名前と保存場所を指定し、[次へ(N)]ボタンをクリックします。
[追加情報]ダイアログボックスから、[.NET 8.0(長期的なサポート)]を選択し、[作成(C)]ボタンをクリックすると、プロジェクトが作成されます。

※上記は、Microsoft Visual Studio Professional 2022 (64ビット)の内容です。バージョンにより項目名やコマンド等が異なる場合があります。

 

外部クラスを使用する

シリアル通信を、Visual C#で行う場合、SerialPortクラスを利用する方法があります。

参考:[SerialPortクラス] (外部リンクであるため、予告なくリンクが変更されることがございます)
  https://learn.microsoft.com/en-us/dotnet/api/system.io.ports.serialport

Visual C#デフォルト設定では、.NET8のSystem.IO.Portsオブジェクトがプロジェクトに組み込まれていません。
このため、明示的に外部クラスを組み込みます。

Visual Studioのメニューバーから[プロジェクト(P)]を選択し、プルダウンメニューから[NuGet パッケージの管理(N)...]を選択します。
[NuGetパッケージ マネージャー]から[参照]タブを選択し、参照ボックスに"System.IO.Ports"と入力します。
検索の結果、最上段に表示されるMicrosoft提供の"System.IO.Ports: Provides classes for controlling serial ports."を選んでインストールします。

Visual Studioの[ソリューション エクスプローラーー]ウィンドウ内のツリービューで、[依存関係/パッケージ]の中に、インストールしたモジュールの有無が確認できます。

上記は、Microsoft Visual Studio Professional 2022 (64ビット)の内容です。バージョンにより項目名やコマンド等が異なる場合があります。
あらかじめご了承願います。

 

ソースコード内でSerialPortクラスの利用を宣言する

Visual C#でSerialPortクラスを使用するには、System.IO.Ports名前空間をプロジェクト内で使えるようにすることが必要です。
Usingステートメントを利用して、System.IO.Portsパッケージの利用を宣言します。

また、new 宣言を使い、System.IO.Ports.SerialPortのインスタンスを作成例を示します。

詳細はサンプルプログラムのソースコードを参照してください。

プログラム例:

using System.IO.Ports;    // Namespace for System.IO.Ports

namespace SerialPort

{

    public partial class Form1 : Form

    {

        ・・・・

 

        System.IO.Ports.SerialPort serialPort1 = new System.IO.Ports.SerialPort();

 

        //このサンプルがロードされたときの初期設定はここで行う

        private void Form1_Load(object sender, EventArgs e)

        {

            ・・・・

 

            serialPort1.BaudRate = 9600;           //ボーレート設定(Setting Baudrate.)

            serialPort1.DataBits = 8;              //データビット設定(Setting Databits.)

            serialPort1.StopBits = StopBits.One;   //ストップビット設定(Setting Stopbits.)

            serialPort1.Parity = Parity.None;      //パリティ設定(Setting Paritybits.)

 

            ・・・・

        }

 

        ・・・・

    }

}

 

SerialPortクラスのイベント処理

System.IO.Ports.SerialPort serialPort1 = new System.IO.Ports.SerialPort(); で宣言したserialPort1は、以下のような記述でSerialPortクラスのイベントの処理ができます。

まずは、serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived); で、serialPort1のDataReceivedイベントを利用する宣言します。
そして、serialPort1_DataReceived()に、必要なイベント処理プログラムを追記します。

詳細はサンプルプログラムのソースコードを参照してください。

プログラム例:

using System.IO.Ports;    // Namespace for System.IO.Ports

namespace SerialPort

{

    public partial class Form1 : Form

    {

        System.IO.Ports.SerialPort serialPort1 = new System.IO.Ports.SerialPort();

 

        //このサンプルがロードされたときの初期設定はここで行う

        private void Form1_Load(object sender, EventArgs e)

        {

            serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);

 

            ・・・・

        }

 

        '受信したとき起動するメンバ

        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)

        {

            ・・・・

        }

    }

}

 

EXEアプリケーションを"Any CPU"ビルドする際の注意点

 一般的に、Visual Studio設定「構成マネージャー」ウィンドウ内の「アクティブ ソリューション プラットフォーム(P)」項目で、"Any CPU"を指定してビルドしたEXEアプリケーションは、64ビットOS環境でも、32ビットOS環境でも実行することができます。

 しかしながら、.NET8フレームワーク対応のEXEアプリケーションを開発する場合は、ターゲットOSを意識する必要があります。

 

 詳細は、FAQ「.NET 8以降の.NETの実行環境」を参照してください。