Beispiel #1
0
        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();
            }
        }
Beispiel #2
0
        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,
                    });
                }
            }
        }
Beispiel #3
0
        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();
        }
Beispiel #4
0
        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();
        }
Beispiel #5
0
        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();
        }
Beispiel #6
0
        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);
        }