PI AF SDKはクライアントサイドで共通に使用できるインターフェイスが用意されています。開発を始める段階では非常に優位なものです。
以下の手順でシンプルなクライアントアプリケーションを開発してみましょう。AF Serverに接続し、エレメントの階層を表示するアプリケーションです。
- Visual Studioを開きます
- 新規でプロジェクトを作成します。Visual C# > Windowsフォームアプリケーション プロジェクト名は“PIAFApplet”とします
- PI AF SDKの参照をプロジェクトに追加します。
- プロジェクト参照の追加...
- アセンブリ拡張
- OSIsoft.AFSDKとOSIsoft.AF.UIにチェックを付けます。バージョン4.0のAFSDKにチェックをつけるようにしてください
- OKをクリックします
- PI AF SDKのオブジェクトをプロジェクトに追加します
- “Form1.cs”のデザインペーンで左にあるツールボックスを開きます。
- 「ツールボックス」内にある「すべてのWindowsフォーム」を右クリックし、「アイテムの選択…」をクリックします。アイテムがロードされるのを待ちます。
- 以下のアイテムにチェックします。フィルターを使用すると早く見つけることができます。
- PISystemPicker
- AFDatabasePicker
- AFTreeView
- インポートが完了したら、それらをツールボックスに追加されます。
- フォームにこれらをドラッグアンドドロップします。以下のようなGUIにします。

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

- 「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に接続し、データベースを選択し、エレメント階層を操作してみます。

12. デバッグを停止し、プロジェクトを保存します。
このようにフォームアプリケーションでツリーを表示することができます。このツリーを使用してGUIを含むアプリケーションを簡単に開発することができます。