トレーニングで作成するプログラム

VisionPro トレーニングのプログラミングコースで作成するプログラムです。正確な説明は、トレーニングにご参加頂きたいですが、簡単にポイントを説明します。

QuickBuild のファイルをロードして実行するアプリケーション:

CogJobManager と QuickBuild は同じ意味です。QuickBuild を Run したとき、QuickBuild または各ジョブは、別スレッド(ワーカースレッド)で走ります。つまり、結果が格納されたときに呼び出される UserResultAvailableHandler は、別スレッド内で実行されます。他のスレッドで実行される関数の中で、メインスレッド(GUIスレッド)の変数に直接書き込むことはできないので、何もしなければ、TextBox1.Text = score.ToString() の行でエラーになります。この場合は、Delegate、InvokeRequired、Invoke の仕組みを使います。または、タイマーコントロールで、結果が格納されたかどうかをポーリングします(タイマーイベントは GUI スレッドで実行されます)。

ゼロから作成したアプリケーション:

PMAlign ツールの結果を取り出して表示するとき、Results Is Nothing の If 文は次の理由から必要です。パターンが見つかるときは、どの If 文も問題ありません。Run して、パターンが見つからなかったときも、Results.Count <= 0 になるので、メッセージを表示し、処理を続けることができます。例えば、モデルが未登録のとき、Run しても、サーチを実行できないので、Results が存在しません。もし Results Is Nothing の If 文が無ければ、次の If 文の Results.Count <= 0 で、存在しない Results オブジェクトの Count プロパティにアクセスしようとするので、プログラムはダウンしてしまいます。

LoadObjectFromFile で PMAlign ツールを開くとき、既存のものとは別のオブジェクトとして開きます。この行の myPMTool 変数は新しく開いたオブジェクトを指します。この時点では、エディットコントロールの Subject は、まだ、昔のオブジェクトを指しています。よって、GUI から見える PMAlign ツールは古いままです。再度、Subject プロパティにセットすると、GUI が更新されます。古い PMAlign ツールのオブジェクトは、参照カウントが零になり、次のガベージ・コレクションで削除されます。

製品:VisionPro

動作確認バージョン:6.2

フレームグラバ:MVS-8504

カメラ:Sony XC-HR50

言語:VB.NETC#、VS2005

training_qb_load.zip

training_zero.zip