公開日: 04/01/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 );
 

// 管理図のプロパティを設定する

dt << Set Property(
	"管理限界",
	{XBar( Avg( 20 ), LCL( 19.8 ), UCL( 20.2 ) )}
);
dt << 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(
	Sample Size( 5 ),
	K Sigma( 3 ),
	Chart Col(
		ギャップ,
		XBar(
			Connect Points( 1 ),
			Show Points( 1 ),
			Show Center Line( 1 ),
			Show Control Limits( 1 )
		),
		R(
			Connect Points( 1 ),
			Show Points( 1 ),
			Show Center Line( 1 ),
			Show Control Limits( 1 )
		)
	)
);
 

/* 機器からのデータフィードを始めるか、またはテスト用データを送って

動作確認をする(いずれか1行をコメントアウトする):

feed << Connect( Port( "com1:" ), Baud( 9600 ) );*/

For (i = 1, i <= 20, i++,
	feed << Queue Line( Char( 20 + Random Uniform() * .1 ) );
	Wait( .1 ); // フィードの遅延をシミュレートする
);

データテーブルにスクリプトを格納する

前述のようなデータフィードのスクリプトを、データテーブルのOn Openプロパティに記述しておくことにより、定型的な処理をさらに自動化できます。On Openプロパティに設定されたスクリプトは、データテーブルが開くたびに自動的に実行されます(環境設定で実行しないように設定することもできます)。そのようなデータテーブルをテンプレートとして保存しておくと、テンプレートを開くとデータテーブルスクリプトが実行され、新しいデータテーブルが作られます。

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