using ORiN2.ManagedCAO; using System; using System.Windows.Forms; namespace LaserMarkerSample { public partial class Form1 : Form { private CCaoEngine _eng; private CCaoWorkspace _ws; private CCaoController _ctrl; private CCaoVariable _varReady; private CCaoVariable _varProgramNo; enum Status { Conected, Disconected } public Form1() { InitializeComponent(); // Create CaoEngine _eng = new CCaoEngine(); // Create CaoWorkspace _ws = _eng.AddWorkspace("SampleWorkspace", ""); ChangeEnable(Status.Disconected); } private void _btnConnect_Click(object sender, EventArgs e) { // Create CaoController Option var optionString = "Conn="; if (_rdbIp.Checked == true) { optionString += "eth:" + _txbIp.Text + ":" + _nudPort.Value; } else if (_rdbCom.Checked == true) { optionString += "com:" + _nudCom.Value; } else { MessageBox.Show("Select IP or COM"); return; } optionString += ",Timeout=" + _nudConnectTimeout.Value; try { // Create CaoController _ctrl = _ws.AddController("controller1", "CaoProv.KEYENCE.LaserMarker", string.Empty, optionString); // Create CaoVariable _varReady = _ctrl.AddVariable("@READY", string.Empty); _varProgramNo = _ctrl.AddVariable("@PROGRAM_NO", string.Empty); ChangeEnable(Status.Conected); } catch (Exception ex) { MessageBox.Show(this, ex.Message); } } private void _btnDisconnect_Click(object sender, EventArgs e) { try { // Delete CaoController if (_ctrl != null) { _ws.Controllers.Remove(_ctrl.Index); _ctrl = null; } ChangeEnable(Status.Disconected); } catch (Exception ex) { MessageBox.Show(this, ex.Message); } } private void _btnGetReady_Click(object sender, EventArgs e) { try { _txbReady.Text = _varReady.Value.ToString(); } catch (Exception ex) { MessageBox.Show(this, ex.Message); } } private void _btnMarkingStart_Click(object sender, EventArgs e) { try { _ctrl.Execute("StartMarking", new object[] { false, _nudConnectTimeout.Value }); } catch (Exception ex) { MessageBox.Show(this, ex.Message); } } private void _btnGetProgramNo_Click(object sender, EventArgs e) { try { _nudProgramNo.Value = Convert.ToDecimal(_varProgramNo.Value); } catch (Exception ex) { MessageBox.Show(this, ex.Message); } } private void _btnSetProgramNo_Click(object sender, EventArgs e) { try { _varProgramNo.Value = _nudProgramNo.Value; } catch (Exception ex) { MessageBox.Show(this, ex.Message); } } private void ChangeEnable(Status status) { if (status == Status.Conected) { _gbxStartMarking.Enabled = true; _gbxStatus.Enabled = true; _btnConnect.Enabled = false; _btnDisconnect.Enabled = true; } else if (status == Status.Disconected) { _gbxStartMarking.Enabled = false; _gbxStatus.Enabled = false; _btnConnect.Enabled = true; _btnDisconnect.Enabled = false; } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { // Delete CaoController, _btnDisconnect.PerformClick(); // Delete CaoWorkspace and CaoEngine try { if (_ws != null) { _eng.Workspaces.Remove(_ws.Index); _ws = null; } _eng = null; } catch (Exception ex) { MessageBox.Show(this, ex.Message); } } } }