/// <summary> /// Передача прочитанных данных в HexEditor /// </summary> /// <param name="sender"></param> private void CallBack(object Marker, byte[] Buffer, bool Error) { try { if (Buffer != null && Buffer.Length != 0) { this.heMemory.ChangeValues(Buffer, _readAddress, (this._changeData || (string)Marker == "memory_one")); this._changeData = false; this.heMemory.AddressColor = Color.DarkSlateGray; this.heMemory.CodeColor = Color.FromArgb(0, 102, 0); this.heMemory.PresentationColor = Color.FromArgb(0, 102, 204); } else { //Установка исходного вида при ошибке чтения byte[] m_array; m_array = new byte[this.heMemory.SegmentSize]; for (int i = 0; i < this.heMemory.SegmentSize; i++) { m_array[i] = 0; } this.heMemory.ChangeValues(m_array, 0, true); this.heMemory.AddressColor = System.Drawing.SystemColors.GrayText; this.heMemory.CodeColor = System.Drawing.SystemColors.GrayText; this.heMemory.PresentationColor = System.Drawing.SystemColors.GrayText; } } catch (Exception) { } finally { this.bWrite.Enabled = true; if (!_cycleReading) { _engine.RemoveReadItem(_readAddress, _readMemory, "memory_one"); this.bTimerRead.Enabled = true; this.bRead.Enabled = true; this.ddlMemoryType.Enabled = true; this.tbStartAddress.Enabled = true; this.tbReadingSize.Enabled = true; this.pbStatus.Visible = false; this.pbStatus.Value = 0; } } }
/// <summary> /// Остановка опросов датчиков /// </summary> private void RemoveReadItems() { //Остановка чения стандартных датчиков //Остановка чтения цифровых датчиков IList <int> m_key = _inVarsDigital.Keys; for (int i = 0; i < _inVarsDigital.Count; i++) { try { _engine.RemoveReadItem(_inVarsDigital[m_key[i]].Address, _inVarsDigital[m_key[i]].Memory, "DIN_" + m_key[i]); } catch { } } m_key = _outVarsDigital.Keys; for (int i = 0; i < _outVarsDigital.Count; i++) { try { _engine.RemoveReadItem(_outVarsDigital[m_key[i]].Address, _outVarsDigital[m_key[i]].Memory, "DOUT_" + m_key[i]); } catch {} } //Остановка чения аналоговых датчиков for (int i = 0; i < this.ascInputs.Length; i++) { Kontel.Relkon.Classes.ControllerVar m_var = _solution.Vars.GetVarByName(this.ascInputs[i].SensorName); try { _engine.RemoveReadItem(m_var.Address, m_var.Memory, this.ascInputs[i]); } catch {} } for (int i = 0; i < this.ascOutputs.Length; i++) { Kontel.Relkon.Classes.ControllerVar m_var = _solution.Vars.GetVarByName(this.ascOutputs[i].SensorName); try { _engine.RemoveReadItem(m_var.Address, m_var.Memory, this.ascOutputs[i]); } catch {} } //Остановка чтения остальных вкладок for (int i = 0; i < tpBloks.Count; i++) { TD.SandDock.TabPage tp = tpBloks[tpBloks.Keys[i]]; if ((_deletedPage == -1 || _deletedPage != (int)(((DisplayBlock)tp.Controls[0]).bDelete.Tag)) && tp.Controls.Count > 0 /*tp.Disposing*/) { ((DisplayBlock)tp.Controls[0]).RemoveReadItems(); } } }
/// <summary> /// Удаление запросов на опрос процессов /// </summary> private void RemoveReadItems() { if (_IsReading) { for (int i = 0; i < this.dgProcess.Rows.Count; i++) { ProjectProcess m_p = this._solution.GetProcessByName((string)this.dgProcess.Rows[i].Cells[0].Value); try { _engine.RemoveReadItem(m_p.Address + 4, MemoryType.XRAM, this.dgProcess.Rows[i]); } catch { } } _IsReading = false; } }
/// <summary> /// Удаление переменной структуры с опроса /// </summary> /// <param name="m_row"></param> private void RemoveRowFromAsk(DataRow m_row) { try { _engine.RemoveReadItem((int)m_row[6], GetMemoryType(m_row[5].ToString()), m_row); } catch { } }
/// <summary> /// Событие при двойном щелчке по таблице прочитанных переменных /// (перенос их в дерево) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgVars_DoubleClick(object sender, EventArgs e) { try { if (_IsHeader) { _IsHeader = false; return; } //Если поле не редактируемое, то переместить переменную if ((this.dgVars.RowCount > 0) && (this.dgVars.CurrentCell.ReadOnly == true)) { //Добавление переменной в дерево String m_name = (String)this.dgVars.CurrentRow.Cells[0].Value; Kontel.Relkon.Classes.ControllerVar m_newVar = _solution.Vars.GetVarByName(m_name); if (m_newVar == null) { //если написать строку,то не отображаются переменные, которых нет в _solution, но есть в _enging //иначевозникает ошибка при открытии проекта, послеоткрытия файла отладчика //this.Table.Rows.Remove(this.Table.Rows[this.dgVars.CurrentRow.Index]); return; } DataRow m_CurrentRow = (DataRow)this.Table.Rows[this.dgVars.CurrentRow.Index]; for (int i = 0; i < this.Table.Rows.Count; i++) { if ((String)this.Table.Rows[i][0] == m_name) { m_CurrentRow = (DataRow)this.Table.Rows[i]; break; } } if (m_newVar is ControllerSystemVar) { this.tvVars.Nodes["sys"].Nodes.Add(m_newVar.Name); } else if (m_newVar is ControllerEmbeddedVar) { this.tvVars.Nodes["emb"].Nodes.Add(m_newVar.Name); } else if (m_newVar is ControllerIOVar) { this.tvVars.Nodes["io"].Nodes.Add(m_newVar.Name); } else if (m_newVar is ControllerUserVar) { this.tvVars.Nodes["usr"].Nodes.Add(m_newVar.Name); } else { return; } //Удаление переменной из списка опрашиваемых if (_vars.ContainsKey((String)m_newVar.Name)) { for (int i = 0; i < _engine.Parameters.ReadingVars.Count; i++) { if (_engine.Parameters.ReadingVars[i].Name == m_newVar.Name) { Kontel.Relkon.DebuggerParameters.VarDescription m_VarDescription = _engine.Parameters.ReadingVars[i]; _engine.Parameters.ReadingVars.Remove(m_VarDescription); } } _engine.RemoveReadItem(m_newVar.Address, m_newVar.Memory, m_CurrentRow /*.ItemArray[0].ToString()*/); _vars.Remove((String)m_newVar.Name); } //Удаление переменной из таблицы this.Table.Rows.Remove(m_CurrentRow); } } catch (Exception ex) { Utils.ErrorMessage("dgVars_DoubleClick:" + ex.Message); return; } }