/* ======================================================================================== */ #endregion /// <summary> /// /// </summary> /// <param name="device"></param> public TreeNode_EthernetDevice(LogixDevice device) : base() { // Проверка входных параметров. if (device == null) { //throw new ArgumentNullException("TreeNode_EthernetDevice constructor contains a null argument!"); return; } // Присваиваем устройство ассоциированное с данным узлом и создаем под него задачу. this.Device = device; this.Task = new LogixTask(device); // Вызываем прорисовку анимации узла. this.Refresh(); // Подписываемся на события. this.Device.PropertyWasChanged += device_PropertyWasChanged; this.Device.Message += message; this.Task.StateWasChanged += task_StateWasChanged; this.Task.TagsValueWasChanged += task_TagsValueWasChanged; this.Task.TagsValueWasReaded += task_TagsValueWasReaded; this.Task.TagsValueWasWrited += task_TagsValueWasWrited; this.Task.Message += message; }
/// <summary> /// Вызывает "Событие при изменении значения одного из свойств устройства". /// </summary> /// <param name="device"></param> private void Event_DevicePropertyWasChanged(LogixDevice device) { if (this.DevicePropertyWasChanged != null) { this.DevicePropertyWasChanged(this, new DeviceEventArgs(device)); } }
/// <summary> /// Подписка на событие : ToolStripButton : Нажата кнопка. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void toolStripButton_Add_Click(object sender, EventArgs e) { string plcName = "NewPLC_"; for (int ix = 0; ix < 1000; ix++) { if (!this.CLXDevicesByName.ContainsKey(plcName + ix.ToString())) { plcName = plcName + ix.ToString(); break; } } LogixDevice newCLXDevice = new LogixDevice(plcName, new System.Net.IPAddress(new byte[] { 0, 0, 0, 0 }), 0); TreeNode_EthernetDevice treeNodeEthernetDevice = new TreeNode_EthernetDevice(newCLXDevice); this.Add(treeNodeEthernetDevice); this.treeView.SelectedNode = treeNodeEthernetDevice; }
/* ======================================================================================== */ #endregion #region [ PUBLIC METHODS ] /* ======================================================================================== */ /// <summary> /// Добавляет новое устройство по умолчанию в контейнер. /// </summary> /// <param name="namePrefix">Префикс имени по умолчанию для добваления. После текущего имени следуют символы цифр.</param> /// <param name="defaultIpAddress">IP Адрес устройства по умолчанию.</param> /// <returns></returns> public bool Add(string namePrefix, byte [] defaultIpAddress) { bool result; string plcName = namePrefix; for (int ix = 0; ix < 1000; ix++) { if (!this.CLXDevicesByName.ContainsKey(plcName + ix.ToString())) { plcName = plcName + ix.ToString(); break; } } LogixDevice newCLXDevice = new LogixDevice(plcName, new System.Net.IPAddress(defaultIpAddress), 0); TreeNode_EthernetDevice treeNodeEthernetDevice = new TreeNode_EthernetDevice(newCLXDevice); result = this.Add(treeNodeEthernetDevice); this.treeView.SelectedNode = treeNodeEthernetDevice; return(result); }
/// <summary> /// Устанавливает настройки из xml объекта. /// </summary> /// <param name="xelem">Xml объект Settings.</param> /// <returns>Возвращает true при успешном результате.</returns> public bool SetXSettings(XElement xelem) { // Проверяем входные параметры. if (!xelem.ExistAs("Devices")) { return(false); } // Очищаем все устройства в списке. this.Clear(); // Добавляем новые устройства из списка. foreach (XElement xDevice in xelem.Elements("Device")) { LogixDevice newCLXDevice = new LogixDevice(); if (newCLXDevice.SetXElement(xDevice)) { this.Add(new TreeNode_EthernetDevice(newCLXDevice)); } } return(true); }
/// <summary> /// Создает новый аргумент события. /// </summary> /// <param name="device"></param> public DeviceEventArgs(LogixDevice device) { this.Device = device; }