private void ECUReadDTC_Loaded(object sender, RoutedEventArgs e) { if (isSet) { return; } DiagSrv = new Diag.A_Service_ReadDataByIdentifier(); isSet = true; tbLog.Clear(); tbLog.IsEnabled = false; tbWait.Visibility = Visibility.Visible; if (Mode == 0) { btnClear.IsEnabled = true; ReadDTC(); } else if (Mode == 1) { // Кнопка "Очистить" недоступна btnClear.IsEnabled = false; //ReadSupportedDTC(); } else if (Mode == 2) { btnClear.IsEnabled = true; //ReadAllDTC(); } }
void ShowResponse(Diag.A_Service_ReadDataByIdentifier srvDataById) { parList.Clear(); foreach (var did in srvDataById.RequestedDIDs) { DiagnosticData dv = null; // Найти в списке диагностических значений нужный dv = ecu.GetDiagnosticSets().Find((diag) => diag.DataID == did); // Если ЭБУ поддерживает запрашиваемый DID if (dv != null) { foreach (int val in srvDataById.GetResponseValue(did)) { dv.AddValue(val); } int i = 0; List <string> values = dv.GetValue(); if (values.Count > 0) { foreach (string value in values) { parList.Add(new GridPar() { DID = (ushort)did, //Param = dv.ToString(), Name = dv.ToString(++i), Value = value, }); } } else { parList.Add(new GridPar() { DID = (ushort)did, //Param = dv.ToString(), Name = dv.ToString(++i), Value = "-", }); } } else // Если ЭБУ не поддерживает запрашиваемый DID { parList.Add(new GridPar() { DID = 0, Name = "Некорректный DID", Value = " - ", TT = null, BackColor = Brushes.Transparent, ForeColor = Brushes.Black, }); } } }
public Main_ECU(EcuModelId modelId, byte address) : base(modelId, address) { Data = new CodingData_t(); _diagData = new List <DiagnosticData>(); Data.SteeringBrakeSpeedTable = new ushort[12]; _diagSrv = new Diag.A_Service_ReadDataByIdentifier(); EcuAddress = address; SetDiagData(); }
public Display_ECU(EcuModelId modelId, byte address) : base(modelId, address) { Data = new CodingData_t(); _diagData = new List <DiagnosticData>(); Data.MotorRpm = new short[TABLE_CNT * 2]; Data.SoC = new short[TABLE_CNT * 2]; Data.TrimPosition = new short[TABLE_CNT * 2]; _diagSrv = new Diag.A_Service_ReadDataByIdentifier(); EcuAddress = address; SetDiagData(); }
public General_ECU(EcuModelId modelId, byte address) : base(modelId, address) { Data = new CodingData_t(); _diagData = new List <DiagnosticData>(); Data.AnalogOutput = new byte[AN_OUT_COUNT]; Data.DigitalOutput = new byte[DIG_OUT_COUNT]; Data.CurrentThreshold_A = new byte[AN_OUT_COUNT]; Data.tab = new canRepItem[REPEATER_TABLE_SIZE]; _diagSrv = new Diag.A_Service_ReadDataByIdentifier(); EcuAddress = address; SetDiagData(); }
private void ECUMeasure_Loaded(object sender, RoutedEventArgs e) { ecu = Global.EcuList.CurrentEcu; dvsList = ecu.GetDiagnosticSets(); DiagSrv = new Diag.A_Service_ReadDataByIdentifier(); FormatGrid_Vars(); FillValueList(); cancelTaskShow = new CancellationTokenSource(); CancellationToken token = cancelTaskShow.Token; Task.Factory.StartNew(async() => { while (!token.IsCancellationRequested) { if (DiagSrv.RequestedDIDs.Count > 0) { foreach (int i in DiagSrv.RequestedDIDs) { rxCnt++; Thread.Sleep(10); // Отправить запрос if (await DiagSrv.RequestService(ecu.Address)) { // Визуализация значений await Dispatcher.BeginInvoke(new Action(() => { UpdateCommunicationStatus(); ShowResponse(DiagSrv); })); } } } else { Dispatcher.Invoke(ClearGrid_Vars); } Thread.Sleep(250); } }, token); }