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();
}
}
}
댓글
댓글 쓰기