private void VarComboBox_Leave(object sender, EventArgs e) { ComboBox Sender = (ComboBox)sender; int idx = this.VarsComboBoxes.IndexOf(Sender); // индекс переменной ComboBox'а в списке DebuggerParameters.ChartVars DebuggerParameters.VarDescription requestedVarDesc = this.debuggerEngine.Parameters.ChartVars[idx]; // текущая опрашиваемая переменная if (requestedVarDesc == null || requestedVarDesc.Name != Sender.Text) { // Выбранныя в ComboBox переменная не совпадает с опрашиваемой по тому же индексу if (Sender.Text != "") { // В ComboBox не пустая строка ControllerVar var = this.ControllerProgramSolution.Vars.GetVarByName(Sender.Text); if (var == null || var.Address == 0 && (!(var is ControllerEmbeddedVar) && !(false)) || (var is ControllerStructVar) || (var is ControllerUserVar) && ((ControllerUserVar)var).Array) { // В ComboBox указано несуществующее имя переменной Sender.Text = requestedVarDesc == null ? "" : requestedVarDesc.Name; this.plVarsView.GraphPane.CurveList[idx].Label.Text = requestedVarDesc == null ? "Нет" : requestedVarDesc.Name; this.Refresh(); return; } if (requestedVarDesc != null) { // По этому идексу переменная уже опрашивается => удаляем опрашиваемую переменную из очереди отладчика this.debuggerEngine.RemoveReadItem(requestedVarDesc.Address, requestedVarDesc.MemoryType, this.GetVarMarker(requestedVarDesc, idx)); } // Создаем описание новой опрашиваемой переменной DebuggerParameters.VarDescription varDesc = requestedVarDesc == null ? new DebuggerParameters.VarDescription() : requestedVarDesc; varDesc.Address = var.Address; varDesc.HasSign = var.HasSign; varDesc.Size = var.Size; varDesc.Name = var.Name; varDesc.MemoryType = var.Memory; this.debuggerEngine.Parameters.ChartVars[idx] = varDesc; // Добавляем переменную в очередь отладчика this.debuggerEngine.AddReadItem(varDesc.Address, varDesc.MemoryType, varDesc.Size, this.GetVarMarker(varDesc, idx), null, new ProceedingCompleetedDelegate(this.VarReaded)); this.plVarsView.GraphPane.CurveList[idx].Label.Text = varDesc.Name; this.Refresh(); } else { // В ComboBox указана пустая строка if (requestedVarDesc != null) { // Если по текущему индексу переменная уже опрашивалась, то удаляем ее из очереди отладчика и его параметров this.debuggerEngine.RemoveReadItem(requestedVarDesc.Address, requestedVarDesc.MemoryType, this.GetVarMarker(requestedVarDesc, idx)); this.debuggerEngine.Parameters.ChartVars[idx] = null; this.plVarsView.GraphPane.CurveList[idx].Label.Text = "Нет"; } this.Refresh(); } } }
//private void rbTcp_CheckedChanged(object sender, EventArgs e) //{ // if (this.rbTcp.Checked) // this.engine.Parameters.InterfaceProtocol ="Tcp" /*System.Net.Sockets.ProtocolType.Tcp*/; //} //private void rbUdp_CheckedChanged(object sender, EventArgs e) //{ // if (this.rbUdp.Checked) // this.engine.Parameters.InterfaceProtocol ="Udp" /*System.Net.Sockets.ProtocolType.Udp*/; //} /// <summary> /// запись в контроллер начальных значений /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { //if (din == null || din.Count == 0) return; //Kontel.Relkon.DebuggerParameters.DigitalSensorDescription dsd = din[0]; foreach (Kontel.Relkon.DebuggerParameters.DigitalSensorDescription dsd in din) { ControllerVar v = _solution.Vars.GetVarByName(dsd.Name); if (v != null) { this.engine.AddWriteItem(v.Address, MemoryType.XRAM, dsd.Value, dsd.Name + "writing", null, null); } } foreach (Kontel.Relkon.DebuggerParameters.AnalogSensorDescription dsd in adc) { ControllerVar v = _solution.Vars.GetVarByName(dsd.Name); if (v != null) { this.engine.AddWriteItem(v.Address, dsd.MemoryType, dsd.Value, dsd.Name + "writing", null, null); } } }