この節では、データフィードスクリプトを使って、データの読み取り、ライブ管理図のセットアップ、データテーブルへのスクリプト格納を行う例を紹介します。
以下は、典型的なデータフィードスクリプトの例です。このスクリプトでは、文字列の長さを読み取り、もし14文字以上であれば、11文字目以降を数値として取り込み、データテーブル中の「太さ」列に、1行を追加します。
feed = Open Datafeed( );
myScript = Expr(
line = feed << Get Line;
If( Length( line ) >= 14,
x = Num( Substr( line, 11, 3 ) );
If( !Is Missing( x ),
dt << Add Row( {thickness = x} )
);
);
);
上記のスクリプトを、既存のデータフィードオブジェクトに割り当てるには、次のようにSet Scriptを使います。
feed << Set Script( myScript );
以下は、新しいデータテーブルを作成し、データフィードに基づいて管理図の作成を開始するスクリプトの例です。
dt = New Table( "ギャップの幅" ); // 1つの列を持つデータテーブルを作成する
dc = dt << New Column( "ギャップ", Numeric, Best );
// 管理図のプロパティを設定する
dc << Set Property(
"管理限界",
{XBar( Avg( 20 ), LCL( 19.8 ), UCL( 20.2 ) )}
);
dc << Set Property( "Sigma", 0.1 );
// データフィードの作成
feed = Open Datafeed();
feedScript = Expr(
line = feed << Get Line;
z = Num( line );
Show( line, z ); // ログまたはデバッグ用
If( !Is Missing( z ),
dt << Add Row( {:ギャップ = z} )
);
);
feed << Set Script( feedScript );
// 管理図を描く
Control Chart Builder(
Show Capability( 0 ),
Variables( Y( :ギャップ ) ),
Set Subgroup Size( 5 )
);
/* 機器からのデータフィードを始めるか、またはテスト用データを送って
動作確認をする(いずれか1行をコメントアウトする):
feed << Connect( Port( "com1:" ), Baud( 9600 ) );*/
For (i = 1, i <= 20, i++,
feed << Queue Line( Char( 20 + Random Uniform() * 0.1 ) );
Wait( 0.1 ); // フィードの遅延をシミュレートする
);
前述のようなデータフィードのスクリプトを、データテーブルのOn Openプロパティに記述しておくことにより、定型的な処理をさらに自動化できます。On Openプロパティに設定されたスクリプトは、データテーブルが開くたびに自動的に実行されます(環境設定で実行しないように設定することもできます)。そのようなデータテーブルをテンプレートとして保存しておくと、テンプレートを開くとデータテーブルスクリプトが実行され、新しいデータテーブルが作られます。