Пример #1
0
		/// <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);				
			}
		}
Пример #2
0
		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);
		}