private void OnBreakpointPause(object sender, BreakpointPauseEventArgs e) { items.Clear(); FuncBlock fblock = BreakPointManager.GetFBlock(e.Address); void * rbp = SimulateDllModel.GetRBP(); int laddr = (int)rbp + 0x4; int paddr = (int)rbp - 0x8; if (fblock != null) { IList <FuncBlock_Assignment> localvars = fblock.LocalVars; IList <FuncBlock_Assignment> parameters = fblock.Parameters; LocalVarElement_ForFuncBlock lvelement = null; foreach (FuncBlock_Assignment localvar in localvars) { lvelement = new LocalVarElement_ForFuncBlock(localvar); GetValue(lvelement, localvar, laddr); items.Add(lvelement); laddr -= localvar.Sizeof; } foreach (FuncBlock_Assignment parameter in parameters) { lvelement = new LocalVarElement_ForFuncBlock(parameter); GetValue(lvelement, parameter, paddr); items.Add(lvelement); paddr += parameter.Sizeof; } } PropertyChanged(this, new PropertyChangedEventArgs("Items")); }
public override void Update(SimulateDllModel dllmodel) { foreach (SimulatePulseUnit value in values) { value.Update(dllmodel); } }
public void Active(SimuBrpoElement ele) { int bpaddr = ele.BVModel.BPAddress; int bpmsg = 0; int cpmsg = 0; switch (ele.BPRect.Label) { case "": ele.Condition = "无"; bpmsg = 1; break; case "0": ele.Condition = "0"; cpmsg = 1; break; case "1": ele.Condition = "1"; cpmsg = 2; break; case "↑": ele.Condition = "上升沿"; cpmsg = 4; break; case "↓": ele.Condition = "下降沿"; cpmsg = 8; break; default: ele.Condition = "无"; break; } int count = 1; try { count = int.Parse(ele.BreakTime); SimulateDllModel.SetBPAddr(bpaddr, bpmsg); SimulateDllModel.SetCPAddr(bpaddr, cpmsg); SimulateDllModel.SetBPCount(bpaddr, count); } catch (Exception e) { } }
public override void Update(SimulateDllModel dllmodel) { if (CanRead) { Prototype.Update(dllmodel); } }
private void OnSimulateAbort(object sender, RoutedEventArgs e) { SimulateAbort(this, e); if (isdisposed) { dllmodel.SimulateAbort -= OnSimulateAbort; dllmodel.SimulateStart -= OnSimulateStart; dllmodel.SimulatePause -= OnSimulatePause; dllmodel.SimulateProgress -= OnSimulateProgress; dllmodel = null; SimulateDllModel.FreeDll(); return; } if (dllmodel.SimuMode == SimulateDllModel.SIMUMODE_CHART) { if (pbwin != null) { pbwin.Dispatcher.Invoke(new Utility.Delegates.Execute( () => { pbwin.Close(); })); pbwin = null; } MainChart.Dispatcher.Invoke(new Utility.Delegates.Execute( MainChart.Update)); } }
public override void Update(SimulateDllModel dllmodel) { double[] fvalues = dllmodel.GetValue_Float(Name, 1); double value_old = value; Value = fvalues[0]; }
public override void Set(SimulateDllModel dllmodel) { if (CanWrite) { Prototype.Set(dllmodel); } }
public void Unactive(SimuBrpoElement ele) { int bpaddr = ele.BVModel.BPAddress; SimulateDllModel.SetBPAddr(bpaddr, 0); SimulateDllModel.SetCPAddr(bpaddr, 0); }
public override void Update(SimulateDllModel dllmodel) { double[] fvalues = dllmodel.GetValue_Float(Name, size); for (int i = 0; i < size; i++) { this.values[i].Value = fvalues[i]; } }
public override void Update(SimulateDllModel dllmodel) { int[] ivalues = dllmodel.GetValue_Bit(Name, Size); for (int i = 0; i < size; i++) { this.values[i].Value = ivalues[i]; } }
public override void Set(SimulateDllModel dllmodel) { double[] fvalues = new double[size]; for (int i = 0; i < size; i++) { fvalues[i] = (double)(this.values[i].Value); } dllmodel.SetValue_Float(Name, Size, fvalues); }
public override void Update(SimulateDllModel dllmodel) { if (Islocked) { return; } double[] dvalues = dllmodel.GetValue_Double(Name, 1); Value = dvalues[0]; }
public override void Set(SimulateDllModel dllmodel) { int[] ivalues = new int[size]; for (int i = 0; i < size; i++) { ivalues[i] = (int)(this.values[i].Value); } dllmodel.SetValue_Bit(Name, Size, ivalues); }
public override void Update(SimulateDllModel dllmodel) { if (Islocked) { return; } Int32[] ivalues = dllmodel.GetValue_Bit(Name, 1); Value = ivalues[0]; }
public void Set(SimulateDllModel dllmodel, int time) { Move(time); if (CurrentSegment != null && CurrentSegment.TimeStart <= time && CurrentSegment.TimeEnd >= time) { SVUnit.Value = CurrentSegment.Value; SVUnit.Set(dllmodel); } }
/// <summary> /// 初始化构造函数 /// </summary> public SimulateModel() { smanager = new SimulateManager(); dllmodel = smanager.DllModel; smvars = new List <SimulateVariableUnit>(); AllRoutine = null; MainRoutine = null; SubRoutines = new List <SimuViewDiagramModel>(); AllFuncs = null; FuncBlocks = new List <SimuViewFuncBlockModel>(); SubCharts = new List <SimuViewTabModel>(); }
private void OnBreakpointPause(object sender, BreakpointPauseEventArgs e) { BackTraceElement btele = null; int size = SimulateDllModel.GetBackTrace(data); items.Clear(); for (int i = size / 2 - 1; i >= 0; i--) { btele = GetElement(data[i * 2]); if (btele != null) { items.Add(btele); } } int bpaddr = SimulateDllModel.GetBPAddr(); btele = GetElement(bpaddr); if (btele != null) { items.Add(btele); } PropertyChanged(this, new PropertyChangedEventArgs("Items")); }
public override void Set(SimulateDllModel dllmodel) { }
public override void Update(SimulateDllModel dllmodel) { }
public override void Set(SimulateDllModel dllmodel) { Int32[] ivalues = { this.value }; dllmodel.SetValue_Bit(Name, 1, ivalues); }
public void Update(SimulateDllModel dllmodel, int time) { SVUnit.Update(dllmodel); Move(time); ValueSegment nseg = null; if (CurrentSegment != null) { nseg = CurrentSegment; if (time > nseg.TimeEnd) { if (!SVUnit.Value.Equals(nseg.Value)) { nseg = nseg.Clone(); nseg.Value = SVUnit.Value; nseg.TimeStart = nseg.TimeEnd + 1; nseg.TimeEnd = time; values.Insert(CurrentIndex + 1, nseg); } else { nseg.TimeEnd = time; } } else if (time >= nseg.TimeStart && time <= nseg.TimeEnd) { if (!SVUnit.Value.Equals(nseg.Value)) { values.Remove(nseg); ValueSegment lseg = nseg.Clone(); ValueSegment rseg = nseg.Clone(); nseg = nseg.Clone(); lseg.TimeEnd = time - 1; rseg.TimeStart = time + 1; nseg.TimeStart = nseg.TimeEnd = time; nseg.Value = SVUnit.Value; if (rseg.TimeEnd >= rseg.TimeStart) { values.Insert(CurrentIndex, rseg); } values.Insert(CurrentIndex, nseg); if (lseg.TimeEnd >= lseg.TimeStart) { values.Insert(CurrentIndex, lseg); } } } else { throw new ArgumentException(String.Format("Cannot get value segment related to time {0:d}", time)); } } else if (values.Count() == 0) { Init(time); CurrentIndex = 0; CurrentSegment.Value = SVUnit.Value; } else if (CurrentIndex < 0) { nseg = values.First().Clone(); nseg.Value = SVUnit.Value; nseg.TimeStart = nseg.TimeEnd = time; values.Insert(0, nseg); } else { throw new ArgumentException(String.Format("Cannot get value segment related to time {0:d}", time)); } }
public override void Set(SimulateDllModel dllmodel) { double[] dvalues = { this.value }; dllmodel.SetValue_Double(Name, 1, dvalues); }
abstract public void Update(SimulateDllModel dllmodel);
public override void Set(SimulateDllModel dllmodel) { double[] fvalues = { this.value }; dllmodel.SetValue_Float(Name, 1, fvalues); }
abstract public void Set(SimulateDllModel dllmodel);
public override void Update(SimulateDllModel dllmodel) { Value = dllmodel.GetFeq(Name); }