/// <summary> /// Save setting to the GXDevice1 parameter. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OKBtn_Click(object sender, System.EventArgs e) { try { if (HexCb.Enabled) { HexCb.Checked = false; if (HexCb.Checked) { return; } } GuruxScriptParserLib.GXScriptParser parser = new GuruxScriptParserLib.GXScriptParser(); parser.CreateEngine(GuruxScriptParserLib.GX_SCRIPT_LANGUAGE.GX_SCRIPT_VB); if (DefaultValueFormulaCB.Checked) { try { parser.Eval(DefaultValueTB.Text, null, null); } catch { throw new Exception("Error in default value formula."); } } else { PropertyDlgBase DlgBase = new PropertyDlgBase(); if (TypeDD.SelectedIndex > -1) { TypeItem SelectedType = (TypeItem) m_Types[TypeDD.SelectedItem]; DlgBase.PresetValueChecker(DefaultValueTB.Text, MinimumTB.Text, MaximumTB.Text, SelectedType.GXType, MinimumValueFormulaCB.Checked, MaximumValueFormulaCB.Checked, MinimumValyeCB.Checked, MaximumValueCB.Checked); } } if (MinimumValueFormulaCB.Checked) { try { parser.Eval(MinimumTB.Text, null, null); } catch { throw new Exception("Error in minimum value formula."); } } if (MaximumValueFormulaCB.Checked) { try { parser.Eval(MaximumTB.Text, null, null); } catch { throw new Exception("Error in maximum value formula."); } } //Retreave data. string name = NameTB.Text.Trim(); if (name == "" || name.IndexOf(';') != -1) { NameTB.Focus(); throw new Exception("Property name can't be empty and can't contain ';'."); } //Check input strings. if (!ReadResendTB.ReadOnly) { ReadResendTB.Focus(); Convert.ToUInt32(ReadResendTB.Text); } if (!ReadWaitTB.ReadOnly) { ReadWaitTB.Focus(); Convert.ToUInt32(ReadWaitTB.Text); } if (!ExpirationReadTB.ReadOnly) { ExpirationReadTB.Focus(); Convert.ToUInt32(ExpirationReadTB.Text); } if (!WriteResendTB.ReadOnly) { WriteResendTB.Focus(); Convert.ToUInt32(WriteResendTB.Text); } if (!WriteWaitTB.ReadOnly) { WriteWaitTB.Focus(); Convert.ToUInt32(WriteWaitTB.Text); } if (!ExpirationWriteTB.ReadOnly) { ExpirationWriteTB.Focus(); Convert.ToUInt32(ExpirationWriteTB.Text); } //Formulas if (!DeviceFormulaCB.Checked) { DeviceValueFormulaTB.Text = ""; m_GXProperty1.DeviceValueFormula = DeviceValueFormulaTB.Text; } else { m_GXProperty1.DeviceValueFormula = "=EVAL" + DeviceValueFormulaTB.Text; } if (!UIFormulaCB.Checked) { UIValueFormulaTB.Text = ""; m_GXProperty1.UIValueFormula = UIValueFormulaTB.Text; } else { m_GXProperty1.UIValueFormula = "=EVAL" + UIValueFormulaTB.Text; } //Store Default Value if (!DefaultValueCB.Checked) { DefaultValueTB.Text = ""; } if (DefaultValueFormulaCB.Checked) { DefaultValueTB.Text = "=EVAL" + DefaultValueTB.Text; } m_GXProperty1.DefaultValue = DefaultValueTB.Text; //Store Minimum Value if (!MinimumValyeCB.Checked) { MinimumTB.Text = ""; } if (MinimumValueFormulaCB.Checked) { MinimumTB.Text = "=EVAL" + MinimumTB.Text; } m_GXProperty1.Minimum = MinimumTB.Text; //Store Maximum Value if (!MaximumValueCB.Checked) { MaximumTB.Text = ""; } if (MaximumValueFormulaCB.Checked) { MaximumTB.Text = "=EVAL" + MaximumTB.Text; } m_GXProperty1.Maximum = MaximumTB.Text; /* object prop = null; if ((prop = m_GXDevice1.Properties.Find(name, m_GXProperty1)) != null) { throw new Exception("Property with same name already exists."); } */ m_GXProperty1.Name = name; GXParameter Function = (GXParameter) m_GXProperty1.Parameters.Find("Function", null); if (Function != null) { m_GXProperty1.Parameters.Remove(Function); } Function = new GXParameter(); Function.Name = "Function"; Function.Value = IOTB.SelectedIndex.ToString(); m_GXProperty1.Parameters.Add(Function); GXParameter Address = (GXParameter) m_GXProperty1.Parameters.Find("Address", null); if (Address != null) { m_GXProperty1.Parameters.Remove(Address); } if (AddressTB.Text != "" && this.DialogResult != DialogResult.None) { try { string s = AddressTB.Text; AddressTB.Text = Convert.ToInt32(s, 16).ToString(); } catch { throw new Exception("Address hex to decimal conversion failed"); } Address = new GXParameter(); Address.Name = "Address"; Address.Value = AddressTB.Text; m_GXProperty1.Parameters.Add(Address); } else { if (this.DialogResult != DialogResult.None) { throw new Exception("Address must be defined."); } } if (NoExpirationReadRB.Checked) { m_GXProperty1.ExpirationRead = 0; } else if (DeviceExpirationReadRB.Checked) { m_GXProperty1.ExpirationRead = -1; } else if (ReadOnceExpirationReadRB.Checked) { m_GXProperty1.ExpirationRead = -2; } else { m_GXProperty1.ExpirationRead = Convert.ToInt32(ExpirationReadTB.Text); } //No expiration if (NoExpirationWriteRB.Checked) { m_GXProperty1.ExpirationWrite = 0; } else if (DeviceExpirationWriteRB.Checked) { m_GXProperty1.ExpirationWrite = -1; } else { m_GXProperty1.ExpirationWrite = Convert.ToInt32(ExpirationWriteTB.Text); } m_GXProperty1.Category = (GXCategory) m_GXDevice1.Categories.Find(CategoryDD.Text); if (TypeDD.SelectedIndex > -1) { TypeItem SelectedType = (TypeItem) m_Types[TypeDD.SelectedItem]; m_GXProperty1.Type = SelectedType.GXType; m_GXProperty1.ReadSize = SelectedType.ReadSize; m_GXProperty1.WriteSize = SelectedType.WriteSize; } else { throw new Exception("Type not specified, please select one"); } //m_GXProperty1.UseGraph = Convert.ToInt32(ShowGraphCb.Checked); m_GXProperty1.Unit = UnitTB.Text; //Set read all settings. m_GXProperty1.Description = DescriptionTB.Text; //Get read settings. if (ReadUseProtocolResendRB.Checked) { m_GXProperty1.Read.RetryCount = -2; } else if(ReadSendDontWaitRB.Checked) { m_GXProperty1.Read.RetryCount = -1; } else if (ReadSendWaitRB.Checked) { m_GXProperty1.Read.RetryCount = 0; } else { m_GXProperty1.Read.RetryCount = Convert.ToInt32(ReadResendTB.Text); } //Get read wait times. if (ReadUseProtocolWaitRB.Checked) { m_GXProperty1.Read.TimeOut = -2; } else if(ReadUseSpecifiedRB.Checked) { m_GXProperty1.Read.TimeOut = Convert.ToInt32(ReadWaitTB.Text); } //Get read error stop. m_GXProperty1.Read.ErrorStop = ReadErrorStopCB.Checked; //Get write settings. if (WriteUseProtocolResendRB.Checked) { m_GXProperty1.Write.RetryCount = -2; } else if (WriteSendDontWaitRB.Checked) { m_GXProperty1.Write.RetryCount = -1; } else if (WriteSendWaitRB.Checked) { m_GXProperty1.Write.RetryCount = 0; } else { m_GXProperty1.Write.RetryCount = Convert.ToInt32(WriteResendTB.Text); } //Get write wait times. if (WriteUseProtocolWaitRB.Checked) { m_GXProperty1.Write.TimeOut = -2; } else if (WriteUseSpecifiedRB.Checked) { m_GXProperty1.Write.TimeOut = Convert.ToInt32(WriteWaitTB.Text); } if (!m_edit) { GXMessageGroup GXMsgGrpRead = new GXMessageGroup(); GXMsgGrpRead.Name = "Default"; GXMsgGrpRead.LoopCnt = "1"; m_GXProperty1.Read.Messages.Add(GXMsgGrpRead); GXMessageGroup GXMsgGrpWrite = new GXMessageGroup(); GXMsgGrpWrite.Name = "Default"; GXMsgGrpWrite.LoopCnt = "1"; m_GXProperty1.Write.Messages.Add(GXMsgGrpWrite); } //Get write error stop. m_GXProperty1.Write.ErrorStop = WriteErrorStopCB.Checked; //Get hidden and auto notify m_GXProperty1.Hidden = HiddenCB.Checked; m_GXProperty1.AccessType = (GXProperty.ACCESS_TYPE)AccessTypeCB.SelectedIndex; m_GXProperty1.AccessMode = (GXProperty.ACCESS_MODE)AccessModeCB.SelectedIndex; } catch(Exception Ex) { this.DialogResult = DialogResult.None; GuruxCommon.GXCommon.ShowError(Ex); } }
public PropertyDlg(GXDevice GXDevice1, GXProperty GXProperty1, bool Edit) { m_GXProperty1 = GXProperty1; m_GXDevice1 = GXDevice1; m_edit = Edit; m_Types = CreateTypeTable(); // // Required for Windows Form Designer support // InitializeComponent(); PropertyDlgBase DlgBase = new PropertyDlgBase(); DlgBase.SortTabOrder(GeneralGB); DlgBase.SortTabOrder(Common2Tab); }