テクシオ・テクノロジーによるおじさんのためのIOT講座


(4) Visual Studio C# によるシリアル通信プログラミング
【WPFアプリケーション版】


Visual C#は以前ご紹介した.net4対応のWindowsFormアプリケーションの他に.net5以後に対応したWPF (Windows Presentation Foundation)アプリケーションの形式が存在します。こちらの形式で通信を使って計測機器などを制御する汎例はあまり見つかりません、今回は従来のWindowsFormアプリケーションと比較できるように同じ構成のWPFアプリケーションの作成を簡単に説明いたします。

制御対象はRS-232CまたはUSB-CDC対応の機器
となっていますのでシリアル通信で接続する電源やオシロスコープの他にRS-232C/RS-485を使ったセンサ類にも対応が可能です。

Visual Studioは2022バージョン17.2で確認していますが、配布しているプロジェクトはどのバージョンでも問題無いと思います。 プログラムはシリアルポートの初期設定、書き込み、読み取りのみとなります。ファイル処理やグラフ出力などはインターネットに豊富にサンプルがありますので紹介していません、必要に応じて追加してみてください。


 
1.プロジェクトの準備
  初めにVisal Studioの新しいプロジェクトの作成でC# をフィルタに設定し、WPFアプリケーションを選択・作成
  します、フレームワークは.NET6.0を指定しています。


  フォーム(画面)の構成としては
ボタン:4個、コンボボックス:2個、テキストボックス:2個、ラベル:3個で、
  通信のOPEN/CLOSE、送信、受信、COMポートの再取得を割当ています。

 

今回作成するVisual C#(WPF) でのGUI表示


  まず、ソリューションエクスプローラーのMainWindow.xamlをダブルクリックしメインウインドウに
  ウインドウを表示します。ツールボックスを開き、Buttonなどのオブジェクトを選択しウインドウに
  ドラッグ&ドロップ、その後位置とサイズを調節します。
    

  オブジェクトが選択されているとプロパティウインドウにプロパティが表示されます。
  コンボボックスとテキストボックスはプロパティで名前を指定します。
  ボタンはプロパティで名前を指定し、Contentで表示される文字列を入力します、プロパティのスパナマークの
  右側のイベントをクリックしイベントハンドラー表示としてClickにクリック時のイベント名を登録します。
  登録することでイベント処理のひな形がMainWindow.xaml.csに用意されます。
    
  

2.必要なパッケージ・参照とグローバル変数を登録します。
  WPFではシリアル通信のコントロールが用意されていないためNuGetパッケージをプロジェクトの依存関係に
  追加する必要があります。ソリューションの依存関係を右クリック、NuGetパッケージの管理をクリック、
  参照でSystem.IO.PortsとSystem.Managementのパッケージをインストールしてください。
  また、NuGetパッケージの管理を利用する場合はインターネット接続が必須となりますのでご注意ください。
     

  MainWindow.xaml.csのコードを表示してusing定義(Management、IO.Ports、Text.RegularExpressions)を
  追加します。 
   

3.コンボボックスの内容を登録します。
   
  シリアルポートの使用状況用の変数とシリアルポートの定義を追加します。コンボボックスにシリアルポートの
  ボーレートを登録し、シリアルポートの使用状況の変数を初期化します。COMポートのコンボボックスは後述
  のポート収集を利用します。

4.イベントの処理を登録します。
   OPEN/CLOSEのボタンは、シリアルポートの初期化、オープンまたはクローズをおこないます。
    

   Sendのボタンは送信テキストを送信し、Readのボタンは受信内容を表示します。
     
   ウインドウ右上の×をクリックした時にポートクローズ追加します。
   存在するCOMポートの情報を収集してコンボボックスに登録する処理を用意します。
  

5.まとめ
  実用アプリケーションには至りませんが、WPFアプリとして動作するの最低限の内容を取り上げてみました。
        ・GUIのボタン、コンボボックスの扱いを説明しました。
・シリアルポートの初期化、送受信の例を記述しました。
・シリアルポートの情報収集の例を記述しました。
・最低限のエラー処理を記述しました。
・グローバル変数の利用方法を記述しました。
・参照の追加の方法を記述しました。
・必要なUSING定義を記述しました。
・.netは6.0で作成されていますが、利用する環境に合わせて
 変更してください。



後は使う方が必要なものを追加してご利用ください。

  今回は基本的なシリアル通信の設定・送受信を行いました、実際に運用するアプリにするには送受信や表示など
  を別スレッド・プロセスに変更するなどの修正は必要になるかと思います、 通信のテストや動作の確認として
  利用も可能ですが、ボタンやウインドウの色指定や見栄えを良くする方法などの工夫は必要と思います。

目次に戻る



ソースプロジェクトのダウンロード
ダウンロード後にフォルダへ解凍し、csprojファイルをVisual Studioで開いてください。

©Copyright 2022 TEXIO TECHNOLOGY All Rights Reserved.