[ C# Cognex ] 씨샾 코그넥스 - VisionPro (R) QuickBuild 파일 vpp 저장 및 불러오기
1. VisionPro (R) QuickBuild 개념 이해
- CogJobManager : 프로젝트 라고 생각 하자
- Cogjob : 레시피 또는 카메라
- Queue 로 이루어진 공유 또는 개별 메모리 존재
2. VisionPro (R) QuickBuild 실행
3. image Source 더블 클릭
4. 이미지 추가
- 파일 선택 또는 폴더 선택
- 이미지 확인 후 닫기
5. QuickBuild Manager 활성화
- Cogjob1 닫기
- Windows Forms 앱 (.NET Framework) 생성
8. cogRecordDisplay1 생성
- Name : cogRecordDisplay1
- Name : buttonRun
- Click Event : buttonRun_Click
10. button2 생성
- Name : buttonLoad
- Click Event : buttonLoad_Click
11. button3 생성
- Name : buttonSave
- Click Event : buttonSave_Click
12. Fom1 이벤트 생성
- Name : Form1
- Click Event : Form1_FormClosing
13. 프로젝트 참조 추가
- Cognex.VisionPro.QuickBuild.Core.dll 추가
- 나머지는 cogRecordDisplay 생성 시점에 자동 추가
14. Form1 코드 보기
- 사용 using 추가
15. 전역 변수 추가
16. QuickBuild 파일 vpp 불러오기
- buttonLoad_Click
17. QuickBuild 파일 실행 테스트
- buttonRun_Click
- Form1_FormClosing
20. 전체 소스
####################
using System;
using System.Windows.Forms;
// Cognex VisionPro 사용 추가
using Cognex.VisionPro;
using Cognex.VisionPro.QuickBuild;
namespace CogQuickBuildSaveLoad
{
public partial class Form1 : Form
{
// 관리자 & 직업 & 독립적인 추가
CogJobManager _myJobManager;
CogJob _myJob;
CogJobIndependent _myIndependentJob;
public Form1()
{
InitializeComponent();
}
private void buttonRun_Click(object sender, EventArgs e)
{
ICogRecord icogRecord = null;
ICogRecord icogRecordDisplay = null;
_myJobManager.Run();
// 검사 시간 기다림
while(icogRecord == null)
icogRecord = _myJobManager.UserResult();
// 출력 이미지 찾기
icogRecordDisplay = icogRecord.SubRecords["ShowLastRunRecordForUserQueue"];
icogRecordDisplay = icogRecordDisplay.SubRecords["LastRun"];
icogRecordDisplay = icogRecordDisplay.SubRecords["Image Source.OutputImage"];
// 이미지 출력
cogRecordDisplay1.Record = icogRecordDisplay;
cogRecordDisplay1.Fit(true);
}
private void buttonLoad_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
// 레시피 세팅
_myJobManager = (CogJobManager)CogSerializer.LoadObjectFromFile(openFileDialog.FileName);
_myJob = _myJobManager.Job(0);
_myIndependentJob = _myJob.OwnedIndependent;
// 기존 메모리 청소
_myJobManager.UserQueueFlush();
_myJobManager.FailureQueueFlush();
_myJob.ImageQueueFlush();
_myIndependentJob.RealTimeQueueFlush();
}
}
private void buttonSave_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.DefaultExt = "vpp";
saveFileDialog.Filter = "vpp files(*.vpp)|*.VPP";
// 레시피 저장
if (_myJobManager != null)
{
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
CogSerializer.SaveObjectToFile(_myJobManager, saveFileDialog.FileName.ToString());
}
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
cogRecordDisplay1.Dispose();
// Cog JobManager를 반드시 종료하세요!!
_myJobManager.Shutdown();
}
}
}
####################
댓글
댓글 쓰기