C# 예제 사용 가이드

현재 최신 버전 (2.2.0)에 대한 매뉴얼을 보고 계십니다. 다른 버전에 액세스하려면 페이지 오른쪽 상단 모서리에 있는 '버전 전환' 버튼을 클릭하세요.

■ 현재 사용하고 있는 제품의 버전이 확실하지 않은 경우에는 언제든지 당사 기술 지원팀에 문의하시기 바랍니다.

이 절에서는 Windows 시스템에서 Mech-Vision SDK의 C# 예제를 구성하고 실행하는 방법을 설명합니다.

사용 전 준비

  • SDK 환경 구성을 완료해야 합니다.

  • Visual Studio 2017 이상.

  • .NET Framework 4.7.2 이상.

  • Mech-Vision가 설치되어 있고 정상적으로 실행 가능해야 합니다.

예제 소개

C# 예제는 development/csharp/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

생산 인터페이스 통신 조작.

예제 구성 및 빌드

  1. Visual Studio로 예제 디렉터리의 .sln 솔루션 파일을 엽니다.

  2. 프로젝트를 마우스 오른쪽 버튼으로 클릭한 뒤 참조 추가를 선택하고, development/csharp/lib 디렉터리의 다음 DLL을 프로젝트 참조로 추가합니다.

    • MMind.Vision.dll

    • 기타 종속 DLL(있는 경우)

  3. 코드의 솔루션 경로를 수정한 다음(아래 예제 참조), 솔루션을 빌드합니다(F6).

예제 실행

  1. Mech-Vision가 시작되어 있는지 확인합니다.

  2. 예제 코드의 솔루션 경로를 수정합니다.

    string path = "D:/path/to/your/solution";
  3. 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());
    }
}

이 페이지가 도움이 되었습니까?

다음 방법을 통해 피드백을 보내주실 수 있습니다:

저희는 귀하의 개인정보를 소중히 다룹니다.

당사 웹사이트는 최상의 사용자 경험을 제공하기 위해 쿠키를 사용하고 있습니다. "모두 수락"을 클릭하시면 쿠키 사용에 동의하시는 것이며, "모두 거부"를 클릭하시면 이 웹사이트 방문 시 귀하의 정보가 추적되거나 기억되지 않도록 단일 쿠키만 사용됩니다.