AFSDKにてGUIのあるアプリケーションを開発する(基礎)

PI AF SDKはクライアントサイドで共通に使用できるインターフェイスが用意されています。開発を始める段階では非常に優位なものです。

以下の手順でシンプルなクライアントアプリケーションを開発してみましょう。AF Serverに接続し、エレメントの階層を表示するアプリケーションです。

  1. Visual Studioを開きます
  2. 新規でプロジェクトを作成します。Visual C# > Windowsフォームアプリケーション  プロジェクト名は“PIAFApplet”とします
  3. PI AF SDKの参照をプロジェクトに追加します。
    • プロジェクト参照の追加...
    • アセンブリ拡張
    • OSIsoft.AFSDKとOSIsoft.AF.UIにチェックを付けます。バージョン4.0のAFSDKにチェックをつけるようにしてください
    • OKをクリックします
  4. PI AF SDKのオブジェクトをプロジェクトに追加します
    • “Form1.cs”のデザインペーンで左にあるツールボックスを開きます。
    • 「ツールボックス」内にある「すべてのWindowsフォーム」を右クリックし、「アイテムの選択…」をクリックします。アイテムがロードされるのを待ちます。
    • 以下のアイテムにチェックします。フィルターを使用すると早く見つけることができます。
      • PISystemPicker
      • AFDatabasePicker
      • AFTreeView
      • インポートが完了したら、それらをツールボックスに追加されます。
  5. フォームにこれらをドラッグアンドドロップします。以下のようなGUIにします。

  6. pastedImage_16.png.png
      
  7. それぞれのツールを使いやすくするため、以下を設定します。
    • 「PISystemPicker」を選択し、右下に現れる「プロパティ」ペーンを確認します。
    • Scroll down to the properties starting with 「ShowBegin」で始まるプロパティまでスクロールダウンし、 True, Falseを以下のように設定します。


pastedImage_17.png.png
  

  • 「Connect Automatically」プロパティまでスクロールアップし、Trueに変更します。この設定により、PI System Pickerは自動でPI AF Serverに接続します。
  • 「AFDatabasePicker」を選択します。 Showから始まるプロパティのうち「ShowComboBox」「ShowNoEntries」「ShowImages」のみがTrueになるようにします。[AD2]

フォームにはこれらのツールが追加されました。しかし、これらのツールはそれぞれ連携していません。これらのツールを連携させるため、コードを書く必要があります。フォーム自体をダブルクリックし、以下のコードをpublic Form1()に追加します。

InitializeComponent();
afDatabasePicker1.SystemPicker = piSystemPicker1;

コードの上部には以下usingを追加する必要があります。

using OSIsoft.AF;
using OSIsoft.AF.Asset;
using OSIsoft.AF.Time;
using OSIsoft.AF.UnitsOfMeasure;

8. Form1.cs の「デザイン」タブに戻ります。「AFDatabasePicker」を選択し、プロパティペーンの雷マークの「イベント」をクリックします。

9. 「SelectionChange」までスクロールダウンしてその隣にある空白スペースをダブルクリックします。デフォルトイベントハンドラーにコードを追加することができるようになります。

10. SelectionChange event handlerメソッドに以下を追加します。

AFDatabase db = afDatabasePicker1.AFDatabase;

//Clear the treeview
afTreeView1.AFRoot = null;

if (db != null)
{
//Set the root of the Treeview
afTreeView1.AFRoot = db.Elements;
}

11. デバッグを開始します。PI AF serverに接続し、データベースを選択し、エレメント階層を操作してみます。

 
pastedImage_29.png.png

12. デバッグを停止し、プロジェクトを保存します。

このようにフォームアプリケーションでツリーを表示することができます。このツリーを使用してGUIを含むアプリケーションを簡単に開発することができます。