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 格式读取和设置步骤参数(包含多层级参数的访问方式)。 |
|
生产界面操作。 |
|
生产界面通信操作。 |
配置和构建例程
-
使用 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();
// 打开方案
var solution = new Solution();
var error = solution.Open("D:/data/vision_sdk_example",
string.Empty, string.Empty);
// 获取方案信息
var solutionInfo = new SolutionInfo();
error = solution.GetInfo(ref solutionInfo);
System.Console.WriteLine($"Solution: {solutionInfo.Name}");
// 获取工程信息列表
var projectInfos = new List<ProjectInfo>();
error = solution.GetAllProjectInfos(ref projectInfos);
foreach (var info in projectInfos)
System.Console.WriteLine($" Project: {info.Name}");
// 保存并关闭方案
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);
// 获取工程名称
var projectInfos = new List<ProjectInfo>();
solution.GetAllProjectInfos(ref projectInfos);
var project = new Project(projectInfos[0].Name);
// 注册运行状态变化回调
project.SetRunningChangedCallback((cbData) => {
System.Console.WriteLine($"Project running: {cbData.IsRunning}");
});
// 运行工程(等待工程执行完成)
var projectResult = new ProjectResult();
project.Run(ProjectRunWaitState.Finished, "request_1", ref projectResult);
// 解析输出数据
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");
// 读取步骤参数
var jaPropNames = new JArray { "confidenceThreshold" };
string propsJson = string.Empty;
step.GetPropertiesJson(jaPropNames.ToString(), ref propsJson);
// 设置步骤参数
var joProps = new JObject { { "confidenceThreshold", 0.8 } };
step.SetPropertiesJson(joProps.ToString());
}
}