Esempio n. 1
0
        internal void BuildGraph()
        {
            if (_trionicFile != null)
            {
                Trionic5FileInformation m_trionicFileInformation = _trionicFile.GetFileInfo();
                X_axisvalues = _trionicFile.GetMapYaxisValues(m_trionicFileInformation.GetBoostRequestMap()); // injection map Y = rpm
                Trionic5Properties props     = _trionicFile.GetTrionicProperties();
                byte[]             tryck_mat = _trionicFile.ReadData((uint)m_trionicFileInformation.GetSymbolAddressFlash(m_trionicFileInformation.GetBoostRequestMap()), (uint)m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetBoostRequestMap()));
                if (props.AutomaticTransmission)
                {
                    tryck_mat = _trionicFile.ReadData((uint)m_trionicFileInformation.GetSymbolAddressFlash(m_trionicFileInformation.GetBoostRequestMapAUT()), (uint)m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetBoostRequestMapAUT()));
                }
                /* new */

                Insp_mat = _trionicFile.ReadData((uint)m_trionicFileInformation.GetSymbolAddressFlash(m_trionicFileInformation.GetInjectionMap()), (uint)m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetInjectionMap()));
                //Fuel_knock_mat = m_trionicFile.ReadData((uint)m_trionicFileInformation.GetSymbolAddressFlash(m_trionicFileInformation.GetInjectionKnockMap()), (uint)m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetInjectionKnockMap()));
                //injectiontiming.Idle_fuel_map = m_trionicFile.ReadData((uint)m_trionicFileInformation.GetSymbolAddressFlash(m_trionicFileInformation.GetIdleFuelMap()), (uint)m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetIdleFuelMap()));
                Batt_korr_tab = _trionicFile.GetSymbolAsIntArray(m_trionicFileInformation.GetBatteryCorrectionMap());
                Min_tid       = _trionicFile.GetSymbolAsInt("Min_tid!");

                Fuel_map_x_axis = _trionicFile.GetXaxisValues(m_trionicFileInformation.Filename, _trionicFile.GetFileInfo().GetInjectionMap());
                Fuel_map_y_axis = _trionicFile.GetYaxisValues(m_trionicFileInformation.Filename, _trionicFile.GetFileInfo().GetInjectionMap());
                //injectiontiming.Fuel_knock_map_x_axis = m_trionicFile.GetXaxisValues(m_trionicFileInformation.Filename, "Fuel_knock_mat!");
                //injectiontiming.Fuel_knock_map_y_axis = m_trionicFile.GetYaxisValues(m_trionicFileInformation.Filename, "Fuel_knock_mat!");
                //injectiontiming.Idle_fuel_x_axis = m_trionicFile.GetXaxisValues(m_trionicFileInformation.Filename, "Idle_fuel_korr!");
                //injectiontiming.Idle_fuel_y_axis = m_trionicFile.GetYaxisValues(m_trionicFileInformation.Filename, "Idle_fuel_korr!");
                Luft_kompfak = _trionicFile.Luft_kompfak_array;
                //Temp_steg = _trionicFile.Temp_steg_array;
                Kyltemp_steg  = _trionicFile.Kyltemp_steg_array;
                Kyltemp_tab   = _trionicFile.Kyltemp_tab_array;
                Lufttemp_steg = _trionicFile.Lufttemp_steg_array;
                Lufttemp_tab  = _trionicFile.Lufttemp_tab_array;
                byte[] data      = _trionicFile.ReadData((uint)m_trionicFileInformation.GetSymbolAddressFlash(m_trionicFileInformation.GetInjectorConstant()), (uint)m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetInjectorConstant()));
                int    inj_konst = Convert.ToInt32(data.GetValue(0));
                Inj_konst = inj_konst;
                /* new */
                // get every 8th byte
                double[]      values = new double[16];
                MapSensorType mst    = _trionicFile.GetMapSensorType(_appSettings.AutoDetectMapsensorType);
                double[]      injdc  = new double[16]; // fill with injector DC in max values
                for (int i = 0; i < 16; i++)
                {
                    double val = Convert.ToDouble(tryck_mat[i * 8 + 7]);

                    if (mst == MapSensorType.MapSensor30)
                    {
                        val *= 1.2;
                    }
                    else if (mst == MapSensorType.MapSensor35)
                    {
                        val *= 1.4;
                    }
                    else if (mst == MapSensorType.MapSensor40)
                    {
                        val *= 1.6;
                    }
                    else if (mst == MapSensorType.MapSensor50)
                    {
                        val *= 2.0;
                    }
                    injdc.SetValue(BoostRpmToInjectorDuration(Convert.ToInt32(val), Convert.ToInt32(X_axisvalues.GetValue(i))), i);
                    val -= 100;
                    val /= 100;
                    values.SetValue(val, i);
                }
                FillGraph(values, injdc, props.TurboType);
            }
        }