テクシオ・テクノロジーによるおじさんのためのIOT講座 |
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ポートの再取得を割当ています。
まず、ソリューションエクスプローラーの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アプリとして動作するの最低限の内容を取り上げてみました。
今回は基本的なシリアル通信の設定・送受信を行いました、実際に運用するアプリにするには送受信や表示など を別スレッド・プロセスに変更するなどの修正は必要になるかと思います、 通信のテストや動作の確認として 利用も可能ですが、ボタンやウインドウの色指定や見栄えを良くする方法などの工夫は必要と思います。 ソースプロジェクトのダウンロード
|
©Copyright 2022 TEXIO TECHNOLOGY All Rights Reserved. |