C++ 例程使用指南

您正在查看预发布版本(V2.2.0)的文档。如果您想查阅其他版本的文档,可以点击页面右上角“切换版本”按钮进行切换。

■ 如果您不确定当前使用的产品是哪个版本,请随时联系梅卡曼德技术支持

本节介绍如何在 Windows 系统中配置和运行 Mech-Vision SDK 的 C++ 例程。

使用前提

  • 已完成 SDK 环境配置

  • CMake 3.20 或以上版本。

  • Visual Studio 2017 或以上版本(带 MSVC 编译器)。

  • Mech-Vision 已安装并可正常运行。

例程简介

C++ 例程位于 development/cpp/examples/ 目录,包含以下例程:

例程目录 说明

solution_basic

打开/关闭/保存/重命名方案,获取方案信息和工程信息列表。

project_basic

注册工程状态变化和采集完成回调,运行工程,获取输出数据(抓取点位姿)。

project_data_storage

操作工程数据存储,读写存储数据。

project_param_recipe

获取参数配方列表,切换当前参数配方。

solution_comm_config

获取和修改方案的通信配置(TCP/IP、Modbus 等)。

solution_device_status

获取方案中相机的连接状态、温度、传输速度等设备状态信息。

solution_global_variable

读取和写入方案中的全局变量(整型、浮点型、字符串、队列等)。

step_basic

获取步骤信息,固定步骤输出端口,运行工程后获取步骤输出数据(如点位姿)。

step_props

通过 JSON 格式读取和设置步骤参数(包含多层级参数的访问方式)。

production_interface

生产界面操作。

production_interface_com

生产界面通信操作。

配置和构建例程

solution_basic 例程为例,介绍通用的配置和构建步骤。

  1. 打开例程目录中的 CMakeLists.txt,将 VISION_SDK_DIR 修改为实际的 SDK 路径:

    set(VISION_SDK_DIR path/to/development/cpp)
  2. 在例程目录中创建构建目录并运行 CMake:

    mkdir build && cd build
    cmake -DCMAKE_BUILD_TYPE=Release ..
  3. 使用 Visual Studio 打开生成的 .sln 文件,或使用以下命令构建:

    cmake --build . --config Release

运行例程

  1. 确保 Mech-Vision 已启动,或通过 SDK 接口启动 Vision 服务(参见 启动 Vision 服务)。

  2. 修改例程代码中的方案路径,将 "D:/data/vision_sdk_example" 替换为实际方案路径:

    error = solution.open("D:/path/to/your/solution");
  3. 运行编译好的可执行文件。

代码示例

打开方案并获取工程信息(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})");
}

该页面是否有帮助?

可以通过以下方式反馈意见:

我们重视您的隐私

我们使用 cookie 为您在我们的网站上提供最佳体验。继续使用该网站即表示您同意使用 cookie。如果您拒绝,将使用一个单独的 cookie 来确保您在访问本网站时不会被跟踪或记住。