using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using ORiN2.interop.CAO; using System.Runtime.InteropServices; namespace CaoProvKEYENCEFSN40NUEP1.Sample { public partial class Form1 : Form { // Cao objects private CaoEngine caoEng = null; private CaoWorkspace caoWs = null; private CaoController caoCtrl = null; private CaoExtension caoExt = null; private CaoVariable caoVal = null; // Define static number private const int MIN_PUTENABLEDINDEX = 14; private const int MAX_PUTENABLEDINDEX = 90; // Constructor public Form1() { InitializeComponent(); // Initialize Cao objects caoEng = new CaoEngine(); caoWs = caoEng.AddWorkspace("Sample"); } private void B_CONNECT_Click(object sender, EventArgs e) { // Remove objects if(caoCtrl != null){ if(caoExt != null){ if(caoVal != null){ caoExt.Variables.Remove(caoVal.Index); Marshal.ReleaseComObject(caoVal); caoVal = null; } caoCtrl.Extensions.Remove(caoExt.Index); Marshal.ReleaseComObject(caoExt); caoExt = null; } caoWs.Controllers.Remove(caoCtrl.Index); Marshal.ReleaseComObject(caoCtrl); caoCtrl = null; } // Connect try{ caoCtrl = caoWs.AddController("Sample", "CaoProv.KEYENCE.FSN40NUEP1", "", "conn=eth:" + T_IPADRESS.Text); caoExt = caoCtrl.AddExtension("CH" + T_CHANNEL.Text); } catch (Exception ex){ MessageBox.Show(ex.ToString(), "Error occured", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // Form control GROUP.Enabled = true; object[] ValNames; try{ ValNames = caoExt.VariableNames; } catch (Exception ex){ MessageBox.Show(ex.ToString(), "Error occured", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } for (int i = 0; i < ValNames.Length; i++){ C_VARIABLE.Items.Add(ValNames[i]); } C_VARIABLE.SelectedIndex = 0; } private void C_VARIABLE_SelectedIndexChanged(object sender, EventArgs e) { // Form control if (C_VARIABLE.SelectedIndex >= MIN_PUTENABLEDINDEX && C_VARIABLE.SelectedIndex <= MAX_PUTENABLEDINDEX){ B_PUT.Enabled = true; } else{ B_PUT.Enabled = false; } } private void B_SEND_Click(object sender, EventArgs e) { // Send try{ caoExt.Execute(T_EXECUTE.Text); } catch (Exception ex){ MessageBox.Show(ex.ToString(), "Error occured", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } private void B_GET_Click(object sender, EventArgs e) { // Remove CaoVariable object if (caoVal != null){ caoExt.Variables.Remove(caoVal.Index); Marshal.ReleaseComObject(caoVal); caoVal = null; } // Get try{ caoVal = caoExt.AddVariable(C_VARIABLE.Text); } catch (Exception ex){ MessageBox.Show(ex.ToString(), "Error occured", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try{ T_VARIABLE.Text = caoVal.Value.ToString(); } catch{ try{ T_VARIABLE.Text = caoVal.Value; } catch (Exception ex){ MessageBox.Show(ex.ToString(), "Error occured", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } } private void B_PUT_Click(object sender, EventArgs e) { // Remove CaoVariable object if (caoVal != null) { caoExt.Variables.Remove(caoVal.Index); Marshal.ReleaseComObject(caoVal); caoVal = null; } // Put try{ caoVal = caoExt.AddVariable(C_VARIABLE.Text); if (C_VARIABLE.Text == "@TAGStrings" || C_VARIABLE.Text == "@CTAGStrings"){ caoVal.Value = T_VARIABLE.Text; } else{ caoVal.Value = int.Parse(T_VARIABLE.Text); } } catch (Exception ex){ MessageBox.Show(ex.ToString(), "Error occured", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { // Remove objects if (caoCtrl != null) { if (caoExt != null) { if (caoVal != null) { caoExt.Variables.Remove(caoVal.Index); Marshal.ReleaseComObject(caoVal); caoVal = null; } caoCtrl.Extensions.Remove(caoExt.Index); Marshal.ReleaseComObject(caoExt); caoExt = null; } caoWs.Controllers.Remove(caoCtrl.Index); Marshal.ReleaseComObject(caoCtrl); caoCtrl = null; } } } }