C# サンプルプログラム使用ガイド
以下では、Windows 環境における Mech-Vision SDK の C# サンプルプログラムの設定および実行方法について説明します。
使用前提
-
SDK の環境設定 が完了していること。
-
Visual Studio 2017 以降がインストールされていること。
-
.NET Framework 4.7.2 以降がインストールされていること。
-
Mech-Vision がインストールされ、正常に動作すること。
サンプルプログラム概要
C# サンプルプログラムは development/csharp/examples/ ディレクトリに格納されており、以下のサンプルが含まれています。
| サンプル一覧 | 説明 |
|---|---|
|
ソリューションの開く/閉じる/保存/名前変更、およびソリューション情報とプロジェクト情報一覧の取得 |
|
プロジェクト状態変更コールバックおよび画像取得完了コールバックを登録し、プロジェクトを実行して出力データ(把持点)を取得 |
|
プロジェクトのデータ保存機能を操作し、保存データの読み取りおよび書き込みを実行 |
|
パラメータレシピ一覧の取得および現在のパラメータレシピの切り替え |
|
ソリューションの通信設定(TCP/IP、Modbus など)の取得および変更 |
|
ソリューション内のカメラの接続状態、温度、転送速度などのデバイス状態情報を取得 |
|
ソリューション内のグローバル変数(整数、浮動小数点数、文字列、キューなど)の読み取りおよび書き込み |
|
ステップ情報の取得、ステップ出力ポートの固定、およびプロジェクト実行後のステップ出力データ(位置姿勢など)の取得 |
|
JSON 形式でステップパラメータを読み取りおよび設定(多階層パラメータへのアクセス方法を含む) |
|
オペレーターインターフェイスの操作 |
|
COM コンポーネントを使用してオペレーターインターフェイスを表示 |
サンプルプログラムの設定とビルド
-
Visual Studio でサンプルディレクトリ内の
.slnソリューションファイルを開きます。 -
プロジェクトを右クリックし、参照の追加 を選択して、
development/csharp/libディレクトリ内の以下の DLL を参照として追加します。-
MMind.Vision.dll -
その他の依存 DLL(存在する場合)
-
-
コード内のソリューションパスを変更し(下記サンプル参照)、ソリューションをビルドします(F6)。
サンプルプログラムの実行
-
Mech-Vision が起動していることを確認します。
-
サンプルコード内のソリューションパスを変更します。
string path = "D:/path/to/your/solution"; -
F5 キーを押して実行するか、
bin/Release/ディレクトリに生成された実行ファイルを直接実行します。
コード例
ソリューションを開き、プロジェクト情報を取得(solution_basic)
using MMind.Vision;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
MmindVision.Initialize();
// Open a solution
var solution = new Solution();
var error = solution.Open("D:/data/vision_sdk_example",
string.Empty, string.Empty);
// Get solution information
var solutionInfo = new SolutionInfo();
error = solution.GetInfo(ref solutionInfo);
System.Console.WriteLine($"Solution: {solutionInfo.Name}");
// Get project information list
var projectInfos = new List<ProjectInfo>();
error = solution.GetAllProjectInfos(ref projectInfos);
foreach (var info in projectInfos)
System.Console.WriteLine($" Project: {info.Name}");
// Save and close the solution
error = solution.Save();
error = solution.Close();
MmindVision.Uninitialize();
}
}
プロジェクトを実行し、出力データを取得(project_basic)
using MMind.Vision;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
class Example
{
static void Run()
{
var solution = new Solution();
solution.Open("D:/data/vision_sdk_example", string.Empty, string.Empty);
// Get project name
var projectInfos = new List<ProjectInfo>();
solution.GetAllProjectInfos(ref projectInfos);
var project = new Project(projectInfos[0].Name);
// Register running-state callback
project.SetRunningChangedCallback((cbData) => {
System.Console.WriteLine($"Project running: {cbData.IsRunning}");
});
// Run the project (wait until it finishes)
var projectResult = new ProjectResult();
project.Run(ProjectRunWaitState.Finished, "request_1", ref projectResult);
// Parse output data
var joOutput = JObject.Parse(projectResult.OutputJson);
var jaPickPoints = joOutput["workobject_data"]["pick_points"] as JArray;
}
}
ステップパラメータの読み取りと設定(step_props)
using MMind.Vision;
using Newtonsoft.Json.Linq;
class Example
{
static void Run()
{
var solution = new Solution();
solution.Open("D:/data/vision_sdk_example", string.Empty, string.Empty);
var step = new Step("3D Matching_1", "Matching");
// Read step parameters
var jaPropNames = new JArray { "confidenceThreshold" };
string propsJson = string.Empty;
step.GetPropertiesJson(jaPropNames.ToString(), ref propsJson);
// Set step parameters
var joProps = new JObject { { "confidenceThreshold", 0.8 } };
step.SetPropertiesJson(joProps.ToString());
}
}