C++ 例程使用指南
本节介绍如何在 Windows 系统中配置和运行 Mech-Vision SDK 的 C++ 例程。
使用前提
-
已完成 SDK 环境配置。
-
CMake 3.20 或以上版本。
-
Visual Studio 2017 或以上版本(带 MSVC 编译器)。
-
Mech-Vision 已安装并可正常运行。
例程简介
C++ 例程位于 development/cpp/examples/ 目录,包含以下例程:
| 例程目录 | 说明 |
|---|---|
|
打开/关闭/保存/重命名方案,获取方案信息和工程信息列表。 |
|
注册工程状态变化和采集完成回调,运行工程,获取输出数据(抓取点位姿)。 |
|
操作工程数据存储,读写存储数据。 |
|
获取参数配方列表,切换当前参数配方。 |
|
获取和修改方案的通信配置(TCP/IP、Modbus 等)。 |
|
获取方案中相机的连接状态、温度、传输速度等设备状态信息。 |
|
读取和写入方案中的全局变量(整型、浮点型、字符串、队列等)。 |
|
获取步骤信息,固定步骤输出端口,运行工程后获取步骤输出数据(如点位姿)。 |
|
通过 JSON 格式读取和设置步骤参数(包含多层级参数的访问方式)。 |
|
生产界面操作。 |
|
生产界面通信操作。 |
配置和构建例程
以 solution_basic 例程为例,介绍通用的配置和构建步骤。
-
打开例程目录中的
CMakeLists.txt,将VISION_SDK_DIR修改为实际的 SDK 路径:set(VISION_SDK_DIR path/to/development/cpp) -
在例程目录中创建构建目录并运行 CMake:
mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release .. -
使用 Visual Studio 打开生成的
.sln文件,或使用以下命令构建:cmake --build . --config Release
运行例程
-
确保 Mech-Vision 已启动,或通过 SDK 接口启动 Vision 服务(参见 启动 Vision 服务)。
-
修改例程代码中的方案路径,将
"D:/data/vision_sdk_example"替换为实际方案路径:error = solution.open("D:/path/to/your/solution"); -
运行编译好的可执行文件。
代码示例
打开方案并获取工程信息(solution_basic)
#include "vision_sdk/vision_sdk.h"
using namespace mmind;
int main()
{
vision::initialize();
vision::ErrorStatus error;
// 打开方案
vision::Solution solution;
error = solution.open("D:/data/vision_sdk_example");
// 获取方案信息
vision::SolutionInfo solutionInfo;
error = solution.getInfo(solutionInfo);
// 获取工程信息列表
std::vector<vision::ProjectInfo> projectInfos;
error = solution.getAllProjectInfos(projectInfos);
for (const auto& info : projectInfos) {
// 处理工程信息
}
// 保存并关闭方案
error = solution.save();
error = solution.close();
vision::uninitialize();
return 0;
}
运行工程并获取输出数据(project_basic)
#include "vision_sdk/vision_sdk.h"
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
using namespace mmind;
void example()
{
vision::Solution solution;
solution.open("D:/data/vision_sdk_example");
// 获取工程名称
std::vector<vision::ProjectInfo> projectInfos;
solution.getAllProjectInfos(projectInfos);
vision::Project project(projectInfos.front().name);
// 注册运行状态变化回调
project.setRunningChangedCallback(
[](const vision::ProjectRunningChangedCallbackData& cbData) {
// 处理运行状态变化事件
});
// 运行工程(等待工程执行完成)
vision::ProjectResult projectResult;
project.run(vision::ProjectRunWaitState::Finished, "request_1", projectResult);
// 解析输出数据(JSON 格式)
const auto joOutput =
QJsonDocument::fromJson(projectResult.outputJson.c_str()).object();
const auto jaPickPoints =
joOutput["workobject_data"].toObject()["pick_points"].toArray();
}
读取和设置步骤参数(step_props)
#include "vision_sdk/vision_sdk.h"
#include <QJsonDocument>
#include <QJsonArray>
using namespace mmind;
void example()
{
vision::Solution solution;
solution.open("D:/data/vision_sdk_example");
// 获取 3D 匹配步骤的置信度阈值参数
vision::Step step("3D Matching_1", "Matching");
std::string propsJson;
step.getPropertiesJson(R"(["confidenceThreshold"])", propsJson);
// 设置步骤参数
step.setPropertiesJson(R"({"confidenceThreshold": 0.8})");
}