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());
}
}