公開日: 11/25/2021

データフィードの例

データの読み取り

以下は、典型的なデータフィードスクリプトの例です。このスクリプトでは、文字列の長さを読み取り、もし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プロパティに設定されたスクリプトは、データテーブルが開くたびに自動的に実行されます(環境設定で実行しないように設定することもできます)。そのようなデータテーブルをテンプレートとして保存しておくと、テンプレートを開くとデータテーブルスクリプトが実行され、新しいデータテーブルが作られます。

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).