using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using ORiN2.interop.CAO; namespace WindowsApplication1 { public partial class Form1 : Form { private CaoEngine caoEng; private CaoWorkspaces caoWss; private CaoWorkspace caoWs; private CaoController caoCtrl; private CaoVariable caoVal; public Form1() { InitializeComponent(); } // Initialization private void Form1_Load(object sender, EventArgs e) { // Create Engine caoEng = new CaoEngine(); caoWss = caoEng.Workspaces; caoWs = caoWss.Item(0); cmdConnect.Enabled = true; } // Connect with IPPA private void cmdConnect_Click(object sender, EventArgs e) { try { // Create object and connect with IPPA string strOpt = "Conn=eth:" + txtBxIP.Text + ':' + txtBxPort.Text; caoCtrl = caoWs.AddController("IPPA", "CaoProv.IMAC.IPPA", "", strOpt); caoVal = caoCtrl.AddVariable("@ERROR_STATE", ""); // Enable command buttons cmdConnect.Enabled = false; cmdDisconnect.Enabled = true; cmdReadPtn.Enabled = true; cmdWritePtn.Enabled = true; cmdReadOn.Enabled = true; cmdWriteOn.Enabled = true; cmdReadTrg.Enabled = true; cmdWriteTrg.Enabled = true; cmdRead.Enabled = true; cmdWrite.Enabled = true; cmdReadSetting.Enabled = true; cmdSaveSetting.Enabled = true; cmdGetErrState.Enabled = true; cmdRawCmd.Enabled = true; } catch (Exception ex) { cmdDisconnect_Click(sender, e); MessageBox.Show(ex.Message.ToString()); } } // Disconnect from IPPA private void cmdDisconnect_Click(object sender, EventArgs e) { // Release Variable if (caoVal != null) { Marshal.ReleaseComObject(caoVal); caoVal = null; } // Disconnect from the controller if (caoCtrl != null) { CaoControllers ctrls = caoWs.Controllers; ctrls.Remove(caoCtrl.Name); Marshal.ReleaseComObject(caoCtrl); caoCtrl = null; Marshal.ReleaseComObject(ctrls); ctrls = null; } // Disable command buttons cmdConnect.Enabled = true; cmdDisconnect.Enabled = false; cmdReadPtn.Enabled = false; cmdWritePtn.Enabled = false; cmdReadOn.Enabled = false; cmdWriteOn.Enabled = false; cmdReadTrg.Enabled = false; cmdWriteTrg.Enabled = false; cmdRead.Enabled = false; cmdWrite.Enabled = false; cmdReadSetting.Enabled = false; cmdSaveSetting.Enabled = false; cmdGetErrState.Enabled = false; cmdRawCmd.Enabled = false; } // Destruction private void Form1_FormClosing(object sender, FormClosingEventArgs e) { // Delete CaoEngine if (caoWs != null) { Marshal.ReleaseComObject(caoWs); caoWs = null; } if (caoWss != null) { Marshal.ReleaseComObject(caoWss); caoWss = null; } if (caoEng != null) { Marshal.ReleaseComObject(caoEng); caoEng = null; } } // Read Exection Patten No. private void cmdReadPtn_Click(object sender, EventArgs e) { try { object objResult = caoCtrl.Execute("ReadExecutionPattern", (object)null); cmbPtnNo1.SelectedIndex = (Int32)objResult - 1; } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } // Write Exection Patten No. private void cmdWritePtn_Click(object sender, EventArgs e) { try { object objPtn = (object)int.Parse(cmbPtnNo1.Text); caoCtrl.Execute("WriteExecutionPattern", objPtn); MessageBox.Show("Succeeded!"); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } // Read On/Off setting private void cmdReadOn_Click(object sender, EventArgs e) { try { // Get CH No. Int32[] piCH; piCH = new Int32[] { 1, 2 }; object objCH = (object)piCH; // Execute Read Command object objResult = caoCtrl.Execute("ReadOnOffSetting", objCH); Int32[] piResult = (Int32[])objResult; // Show Result checkOnCH1.Checked = (piResult[0] == 1) ? true : false; checkOnCH2.Checked = (piResult[1] == 1) ? true : false; } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } // Write On/Off setting private void cmdWriteOn_Click(object sender, EventArgs e) { try { // Get CH No. Int32[] piCH; piCH = new Int32[] { 1, 2 }; object objCH = (object)piCH; //Get On/Off Check Int32[] piVal = new Int32[2]; piVal[0] = (checkOnCH1.Checked) ? 1 : 0; piVal[1] = (checkOnCH2.Checked) ? 1 : 0; object objVal = (object)piVal; // Execute Write Command object[] pobjParam = { objCH, objVal }; caoCtrl.Execute("WriteOnOffSetting", (object)pobjParam); MessageBox.Show("Succeeded!"); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } // Read Trigger Mode private void cmdReadTrg_Click(object sender, EventArgs e) { try { // Get CH No. Int32[] piCH; piCH = new Int32[] { 1, 2 }; object objCH = (object)piCH; // Execute Read Command object objResult = caoCtrl.Execute("ReadTriggerMode", objCH); Int32[] piResult = (Int32[])objResult; // Show Result cmbTrgCH1.SelectedIndex = piResult[0]; cmbTrgCH2.SelectedIndex = piResult[1]; } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } // Write Trigger Mode private void cmdWriteTrg_Click(object sender, EventArgs e) { try { // Get CH No. Int32[] piCH; piCH = new Int32[] { 1, 2 }; object objCH = (object)piCH; //Get On/Off Check Int32[] piVal = new Int32[2]; // Show Result piVal[0] = cmbTrgCH1.SelectedIndex; piVal[1] = cmbTrgCH2.SelectedIndex; object objVal = (object)piVal; // Execute Write Command object[] pobjParam = { objCH, objVal }; caoCtrl.Execute("WriteTriggerMode", (object)pobjParam); MessageBox.Show("Succeeded!"); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } // Read Setting Value private void cmdRead_Click(object sender, EventArgs e) { try { // Get Checking Item string strCmdName =""; foreach (RadioButton rdoCode in gbItem.Controls) { if (rdoCode.Checked) { strCmdName = "Read" + rdoCode.Text; } } // Get Pattern No. object objPtn = (object)int.Parse(cmbPtnNo.Text); // Get CH No. Int32[] piCH; if(checkCH1.Checked) { if (checkCH2.Checked) { piCH = new Int32[] { 1, 2 }; } else { piCH = new Int32[] { 1 }; } } else if (checkCH2.Checked) { piCH = new Int32[] { 2 }; } else { piCH = new Int32[] { }; } object objCH =(object)piCH; // Execute Read Command object[] pobjParam = {objPtn,objCH}; object objParam = (object)pobjParam; object objResult = caoCtrl.Execute(strCmdName,objParam); Int32[] iResult = (Int32[])objResult; // Show Result if (checkCH1.Checked) { if (checkCH2.Checked) { txtVal1.Text = iResult[0].ToString(); txtVal2.Text = iResult[1].ToString(); } else { txtVal1.Text = iResult[0].ToString(); } } else if (checkCH2.Checked) { txtVal2.Text = iResult[0].ToString(); } } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } // Write Setting Value private void cmdWrite_Click(object sender, EventArgs e) { try { // Get Checking Item string strCmdName = ""; foreach (RadioButton rdoCode in gbItem.Controls) { if (rdoCode.Checked) { strCmdName = "Write" + rdoCode.Text; } } // Get Pattern No. object objPtn = (object)int.Parse(cmbPtnNo.Text); // Get CH No. and Value Int32[] piCH; Int32[] piVal; if (checkCH1.Checked) { if (checkCH2.Checked) { piCH = new Int32[] { 1, 2 }; Int32 iVal1 = int.Parse(txtVal1.Text); Int32 iVal2 = int.Parse(txtVal2.Text); piVal = new Int32[] { iVal1, iVal2 }; } else { piCH = new Int32[] { 1 }; Int32 iVal1 = int.Parse(txtVal1.Text); piVal = new Int32[] { iVal1}; } } else if (checkCH2.Checked) { piCH = new Int32[] { 2 }; Int32 iVal2 = int.Parse(txtVal2.Text); piVal = new Int32[] { iVal2 }; } else { piCH = new Int32[] { }; piVal = new Int32[] { }; } object objCH = (object)piCH; object objVal = (object)piVal; // Execute Write Command object[] pobjParam = { objPtn, objCH, objVal }; caoCtrl.Execute(strCmdName, (object)pobjParam); MessageBox.Show("Succeeded!"); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } // Read Lighting Setting private void cmdReadSetting_Click(object sender, EventArgs e) { try { // Get CH No. Int32[] piCH; piCH = new Int32[] { 1, 2 }; object objCH = (object)piCH; // Execute Read Command caoCtrl.Execute("ReadLightingSetting", objCH); MessageBox.Show("Succeeded!"); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } // Write Lighting Setting private void cmdSaveSetting_Click(object sender, EventArgs e) { try { // Get CH No. Int32[] piCH; piCH = new Int32[] { 1, 2 }; object objCH = (object)piCH; // Execute Read Command caoCtrl.Execute("WriteLightingSetting", objCH); MessageBox.Show("Succeeded!"); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } // Get error state private void cmdGetErrState_Click(object sender, EventArgs e) { try { txtErrState.Text = caoVal.Value.ToString(); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } // Execute raw command private void cmdRawCmd_Click(object sender, EventArgs e) { try { txtRawCmdRet.Text = (string)caoCtrl.Execute("ExecuteCommand", (object)txtRawCmdSend.Text); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } } }