PCプラットフォームによる PCプラットフォームによる 産業用ソリューションプロバイダー 産業用ソリューションプロバイダー


採用情報


お問合せ

JapaneseEnglish

  • PP210
ホーム > トレーサブルコントローラ > サンプルコード解説

サンプルコード解説
はじめに
ここでは、トレーサブルコントローラのユーティリティ「Trace Viewer(ViewRtt)」の紹介、及びサンプルコードを交えてトレースデータ読込み・リアルタイム表示・フィルタ表示の実装方法について解説します。
Trace Viewerユーティリティ(ViewRtt)の紹介
Trace Viewerユーティリティ(ViewRtt)は、収集されたトレースデータを可読できる状態で時系列表示するビューアーユーティリティです。本ユーティリティは.NET C#アプリケーションとして作られている分析アプリケーションのサンプルの一つでもあり、Traceable Controllerインストールメディア内にサンプルコードが付属しています。

サンプルコードの場所:
インストールメディア内に配置されている「 ¥ Sample ¥ ViewRtt」がサンプルコードとなります。
サンプルコード解説
サンプルコードをもとに、トレースデータ読込み・リアルタイム表示・フィルタ表示について解説します。
ViewRttは、以下2つのトレースデータ分析アプリケーション(.net/CLRアプリケーション)用アセンブリを使用しています。
アセンブリ名 名前空間 クラス 説明
librttw.dll librttw librttw トレースデータファイルの読み込み、トレースデータの抽出を行います。
RttRecord トレースデータ1件分を保持します
rttparser.dll rttparser RttParser トレースデータ内から取得したバイナリレコードを、条件に沿ったデータレコードとして返却します。
RttFilter あらかじめ設定した条件で取得したレコードを評価します。
①トレースデータ読込み処理
機能説明
トレースデータはトレースデータファイル(*.rtt)を直接ダブルクリックするか、ViewRtt画面上部にある[File]をクリックしトレースデータファイル(*.rtt)を選択することで、読み込むことが出来ます。
機能説明
サンプルコード解説
サンプルコード[MainWindow.xaml.cs]のLoadFile()関数(625行目)でトレースデータを読み込んでいます。
LoadFile()関数内では下記3ステップでにより、トレースデータを読み込みリスト表示します。

・ステップ1: トレースデータファイルオープン
・ステップ2: スキーマ定義読込み/フィルター設定初期化
・ステップ3: トレースデータ全読込み/リスト表示
[ステップ1:トレースデータファイルオープン]
サンプルコード[MainWindow.xaml.cs]のAttachMMF()関数(224行目)で、指定されたトレースデータファイルをRttLibクラス:Open()によってオープンします。
ステップ1
[ステップ2:スキーマ定義読込み/フィルター設定初期化]
サンプルコード[MainWindow.xaml.cs]のAttachParser()関数(268行目)で、スキーマ定義の読込みとフィルターオブジェクトの生成・初期化を行います。
ステップ2
[ステップ3:トレースデータ全読込み/リスト表示]
サンプルコード[MainWindow.xaml.cs]のReadAll()タスク(346行目)で、トレースデータファイル内のデータを全て読み込みます。
1件のトレースデータを取得するNext()関数(309行目)を繰り返し呼び出し、ファイルデータがすべて読み込まれるまで繰り返します。
ステップ3_1
読み込んだ1件のトレースデータを、AddList()関数(297行目)にてリストボックスに追加します。
RecShowListは、画面上のListViewオブジェクトとバインディングされており、Addメソッドにて1件のトレースデータをリストに追加することが出来ます。
ステップ3_2
ステップ3_3
以上で、トレースデータ読込処理は完了です。
②リアルタイム表示処理
機能説明
ViewRtt画面上部にある[Live]をクリックすることで、収集中のトレースデータを即座に表示させるリアルタイム表示が可能です。
リアルタイム表示
サンプルコード解説
[Live]クリックイベントが発生すると、サンプルコード[MainWindow.xaml.cs]の StartLive()関数(561行目)が
呼ばれます。
StartLive()関数では、まずAttachLIVE()関数(250行目)が呼ばれ、RttLibクラス:LiveOpne()によってリアルタイム表示でのトレースデータオープン処理(ライブストリーム接続)が行われます。
サンプルコード解説_1
ライブストリーム接続完了後、ライブストリーム受信スレッドLiveThread()(156行目)を生成します。
ライブストリーム受信スレッドは、リアルタイム表示モードが解除されるまでトレースデータ取得・表示処理を繰り返します。

データ取得は[①トレースデータ読込み処理]と同じで、 Next()関数(309行目)が呼ばれますが、オープン処理がRttLibクラス:LiveOpne()であるため、現在収集中のトレースデータを取得することが出来ます。
サンプルコード解説_2
③フィルター表示処理
機能説明
ViewRtt画面上部にある[Filter]テキストボックスにフィルター条件を記述し[Apply]ボタンをクリックすることで、条件にマッチするデータのみを表示することが可能です。
フィルター表示処理
サンプルコード解説
[Apply] クリックイベントが発生すると、サンプルコード[MainWindow.xaml.cs]の SetFilter()関数(462行目)が呼ばれます。
ここでは、 [Filter]テキストボックスに記述されたフィルタ条件を、RttFilterクラスのフィルターオブジェクトに対してセットしています。
サンプルコード解説_3
フィルタ条件のセットが完了すると、現在リスト表示しているデータを全て削除し再描画処理が行われます。
リアルタイム表示モードの場合LiveThread()(156行目)/トレースデータファイルをオープンしている場合ReadAll()関数(346行目)が呼ばれ、データ取得を行うNext()関数(309行目)内でフィルタ条件にマッチするかを判定しています。
フィルタ条件にマッチしないデータの場合、そのレコードのタイムスタンプ情報にuint.MaxValuを格納し、除外する為のマークを付けます。
サンプルコード解説_4
その後、リストに追加する前にタイムスタンプ情報を確認し、それがuint.MaxValueであった場合フィルタされるべきレコードとして、表示処理をスキップします。
サンプルコード解説_5