Beispiel #1
0
        private void xtraTabControl1_SelectedPageChanged(object sender, DevExpress.XtraTab.TabPageChangedEventArgs e)
        {
            // Stop monitoring if session is active
            ResizeControls();
            bool _loggingWasActive = false;

            if (m_loggingActive)
            {
                _loggingWasActive = m_loggingActive;
                m_loggingActive = false;
            }
            if (_EnableAdvancedMode) btnMapEdit.Visible = true;
            digitalDisplayControl7.Visible = false;

            type = RealtimeMonitoringType.Fuel;
            SymbolCollection sc = new SymbolCollection();
            // notify parent of changed tabpage, the realtime stuff should be filled differently in that case
            if (e.Page.Text == xtraTabPage1.Text)
            {
                type = RealtimeMonitoringType.Fuel;
                // fill with fuel map
                SymbolHelper sh_fuel = new SymbolHelper();
                sh_fuel.Varname = "Insp_mat!";
                sh_fuel.Helptext = "Main fuel map";
                sc.Add(sh_fuel);
                SymbolHelper sh_korr = new SymbolHelper();
                sh_korr.Varname = "Adapt_korr!";
                sh_korr.Helptext = "Fuel adaption";
                sc.Add(sh_korr);
                SymbolHelper sh_fuel_mut = new SymbolHelper();
                sh_fuel_mut.Varname = "FuelAdjustmentMap";
                sh_fuel_mut.Helptext = "Autotune fuel";
                sc.Add(sh_fuel_mut);
                SymbolHelper sh_knock = new SymbolHelper();
                sh_knock.Varname = "Fuel_knock_mat!";
                sh_knock.Helptext = "Knock fuel map";
                sc.Add(sh_knock);
                SymbolHelper sh_injconst = new SymbolHelper();
                sh_injconst.Varname = "Inj_konst!";
                sh_injconst.Helptext = "Injector constant";
                sc.Add(sh_injconst);
                btnMapEdit.Relevantsymbols = sc;
            }
            else if (e.Page.Text == xtraTabPage2.Text)
            {
                type = RealtimeMonitoringType.Ignition;
                // fill with ignition maps
                SymbolHelper sh_ign = new SymbolHelper();
                sh_ign.Varname = "Ign_map_0!";
                sh_ign.Helptext = "Main ignition map";
                sc.Add(sh_ign);
                SymbolHelper sh_ignwarmup = new SymbolHelper();
                sh_ignwarmup.Varname = "Ign_map_4!";
                sh_ignwarmup.Helptext = "Warmup ignition map";
                sc.Add(sh_ignwarmup);
                SymbolHelper sh_ignknock = new SymbolHelper();
                sh_ignknock.Varname = "Ign_map_2!";
                sh_ignknock.Helptext = "Knock ignition map";
                sc.Add(sh_ignknock);
                btnMapEdit.Relevantsymbols = sc;
            }
            else if (e.Page.Text == xtraTabPage3.Text)
            {
                type = RealtimeMonitoringType.Boost;
                SymbolHelper sh_boostrequest = new SymbolHelper();
                sh_boostrequest.Varname = "Tryck_mat!";
                sh_boostrequest.Helptext = "Boost request map";
                sc.Add(sh_boostrequest);
                SymbolHelper sh_regkonmat = new SymbolHelper();
                sh_regkonmat.Varname = "Reg_kon_mat!";
                sh_regkonmat.Helptext = "Boost bias map";
                sc.Add(sh_regkonmat);
                SymbolHelper sh_pfact = new SymbolHelper();
                sh_pfact.Varname = "P_fors!";
                sh_pfact.Helptext = "P factors";
                sc.Add(sh_pfact);
                SymbolHelper sh_ifact = new SymbolHelper();
                sh_ifact.Varname = "I_fors!";
                sh_ifact.Helptext = "I factors";
                sc.Add(sh_ifact);
                SymbolHelper sh_dfact = new SymbolHelper();
                sh_dfact.Varname = "D_fors!";
                sh_dfact.Helptext = "D factors";
                sc.Add(sh_dfact);
                btnMapEdit.Relevantsymbols = sc;
            }
            else if (e.Page.Text == xtraTabPage4.Text)
            {
                type = RealtimeMonitoringType.Knock;
                SymbolHelper sh_knock_ref = new SymbolHelper();
                sh_knock_ref.Varname = "Knock_ref_matrix!";
                sh_knock_ref.Helptext = "Knock sensitivity";
                sc.Add(sh_knock_ref);
                SymbolHelper sh_knock_count = new SymbolHelper();
                sh_knock_count.Varname = "Knock_count_map";
                sh_knock_count.Helptext = "Knock counter map";
                sc.Add(sh_knock_count);
                SymbolHelper sh_ignknock = new SymbolHelper();
                sh_ignknock.Varname = "Ign_map_2!";
                sh_ignknock.Helptext = "Knock ignition map";
                sc.Add(sh_ignknock);
                SymbolHelper sh_knock = new SymbolHelper();
                sh_knock.Varname = "Fuel_knock_mat!";
                sh_knock.Helptext = "Knock fuel map";
                sc.Add(sh_knock);

                btnMapEdit.Relevantsymbols = sc;
            }
            else if (e.Page.Text == xtraTabPage5.Text)
            {
                type = RealtimeMonitoringType.Dashboard;
                btnMapEdit.Relevantsymbols = sc;

            }
            else if (e.Page.Text == xtraTabPage6.Text)
            {
                type = RealtimeMonitoringType.Settings;

                btnMapEdit.Relevantsymbols = sc;

            }
            else if (e.Page.Text == xtraTabPage7.Text)
            {
                type = RealtimeMonitoringType.Userdefined;
                // only show symbol that are in the watchlist
                // clear the map, it will be filled by itself
                System.Data.DataTable dtnew = new System.Data.DataTable();
                if (gridControl4.DataSource == null)
                {
                    dtnew.TableName = "RTSymbols";
                    dtnew.Columns.Add("SYMBOLNAME");
                    dtnew.Columns.Add("MINVALUE", Type.GetType("System.Double")); // autosense max and min!
                    dtnew.Columns.Add("MAXVALUE", Type.GetType("System.Double"));
                    dtnew.Columns.Add("VALUE", Type.GetType("System.Double"));
                    dtnew.Columns.Add("PEAK", Type.GetType("System.Double"));
                    gridControl4.DataSource = dtnew;
                }
                btnMapEdit.Relevantsymbols = sc;
            }
            else if (e.Page.Text == xtraTabPage8.Text)
            {
                type = RealtimeMonitoringType.EngineStatus;
                btnMapEdit.Relevantsymbols = sc;
            }
            else if (e.Page.Text == xtraTabPage9.Text)
            {
                type = RealtimeMonitoringType.OnlineGraph;
                btnMapEdit.Relevantsymbols = sc;
            }
            else if (e.Page.Text == tabAutoTuneIgnition.Text)
            {
                type = RealtimeMonitoringType.AutotuneIgnition;
            }
            else if (e.Page.Text == tabAutoTune.Text)
            {
                type = RealtimeMonitoringType.AutotuneFuel;
                btnMapEdit.Visible = false;
                digitalDisplayControl7.Visible = true;
            }
            else if (e.Page.Text == tabUserMaps.Text)
            {
                type = RealtimeMonitoringType.UserMaps;
                btnMapEdit.Relevantsymbols = sc;

                // load the grid
                DataTable dt = new DataTable();
                dt.TableName = "UserMaps";
                dt.Columns.Add("Mapname");
                dt.Columns.Add("Description");
                if (File.Exists(Application.StartupPath + "\\UserMaps.xml"))
                {
                    dt.ReadXml(Application.StartupPath + "\\UserMaps.xml");
                }
                /*else
                {
                    dt.Columns.Add("Mapname");
                    dt.Columns.Add("Description");
                }*/
                gridControl5.DataSource = dt;

            }
            if (e.PrevPage.Text == tabUserMaps.Text)
            {
                // save
                if (gridControl5.DataSource != null)
                {
                    DataTable dt = (DataTable)gridControl5.DataSource;
                    dt.WriteXml(Application.StartupPath + "\\UserMaps.xml");
                }
            }
            if (onMonitorTypeChanged != null)
            {
                // disable all controls in the bottom to indicate we don't have data for them at this point.
                // next, when data is received for one of the controls, enable them again
                DisableGenericControls();

                onMonitorTypeChanged(this, new RealtimeMonitoringEventArgs(type));

            }

            if (_loggingWasActive)
            {
                m_loggingActive = true;
                m_logfileName = DetermineNewLogFileName();
            }
        }
Beispiel #2
0
 public RealtimeMonitoringEventArgs(RealtimeMonitoringType type)
 {
     this._type = type;
 }
Beispiel #3
0
        private void FillRealtimePool(RealtimeMonitoringType _type, bool _startRealtime)
        {
            // first remove all the symbol from the list
            _ecuConnection.StopECUMonitoring();
            Thread.Sleep(100);
            _ecuConnection.RemoveAllSymbolsFromWatchlist();

            if (_type == RealtimeMonitoringType.AutotuneIgnition)
            {
                //<GS-06042011> needs less symbols to operate and we need fast comms for autotuning, so as little symbols as possible
                _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetPressureSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetPressureSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetPressureSymbol()), true);
                _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetEngineSpeedSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetEngineSpeedSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetEngineSpeedSymbol()), true);
                _ecuConnection.AddSymbolToWatchlist("Knock_offset1234", m_trionicFileInformation.GetSymbolAddressSRAM("Knock_offset1234"), m_trionicFileInformation.GetSymbolLength("Knock_offset1234"), true);
            }
            else if (_type == RealtimeMonitoringType.AutotuneFuel)
            {
                //<GS-06042011> needs less symbols to operate and we need fast comms for autotuning, so as little symbols as possible
                _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetPressureSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetPressureSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetPressureSymbol()), true);
                _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetCoolantTempSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetCoolantTempSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetCoolantTempSymbol()), true);
                _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetEngineSpeedSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetEngineSpeedSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetEngineSpeedSymbol()), true);
                _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetThrottlePositionSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetThrottlePositionSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetThrottlePositionSymbol()), true);

            }
            else
            {
                // now add all the default values to the realtime pool!
                _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetPressureSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetPressureSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetPressureSymbol()), true);
                _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetAirTempSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetAirTempSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetAirTempSymbol()), true);
                _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetCoolantTempSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetCoolantTempSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetCoolantTempSymbol()), true);
                _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetEngineSpeedSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetEngineSpeedSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetEngineSpeedSymbol()), true);
                _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetThrottlePositionSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetThrottlePositionSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetThrottlePositionSymbol()), true);
                //<GS-28102010> default gemaakt (BoostTargetSymbol) vanwege update PID maps in live map view
                _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetBoostTargetSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetBoostTargetSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetBoostTargetSymbol()), true);
                // add program status monitoring
            }
            _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetProgramStatusSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetProgramStatusSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetProgramStatusSymbol()), true);
            //<GS-06042011> removed again _ecuConnection.AddSymbolToWatchlist("Idle_status", m_trionicFileInformation.GetSymbolAddressSRAM("Idle_status"), m_trionicFileInformation.GetSymbolLength("Idle_status"), true);
            //_ecuConnection.AddSymbolToWatchlist("Knock_status", m_trionicFileInformation.GetSymbolAddressSRAM("Knock_status"), m_trionicFileInformation.GetSymbolLength("Knock_status"), true);

            if (ctrlRealtime1.AutoTuning && _type != RealtimeMonitoringType.Fuel)
            {
                // make sure that the correct parameters are being watched
                _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetEnrichmentForLoadSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetEnrichmentForLoadSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetEnrichmentForLoadSymbol()), true);
                _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetEnrichmentForTPSSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetEnrichmentForTPSSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetEnrichmentForTPSSymbol()), true);
                _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetEnleanmentForLoadSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetEnleanmentForLoadSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetEnleanmentForLoadSymbol()), true);
                _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetEnleanmentForTPSSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetEnleanmentForTPSSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetEnleanmentForTPSSymbol()), true);
            }
            // depening on narrowband or wideband O2 sensor
            if (m_appSettings.UseWidebandLambdaThroughSymbol)
            {
                _ecuConnection.AddSymbolToWatchlist(m_appSettings.WidebandLambdaSymbol, m_trionicFileInformation.GetSymbolAddressSRAM(m_appSettings.WidebandLambdaSymbol), m_trionicFileInformation.GetSymbolLength(m_appSettings.WidebandLambdaSymbol), true);
            }
            else
            {
                _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetLambdaSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetLambdaSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetLambdaSymbol()), true);
            }

            if (m_appSettings.AutoLoggingEnabled)
            {
                // always add the symbols we need to monitor to be able to start/stop the logging
                _ecuConnection.AddSymbolToWatchlist(m_appSettings.AutoLogTriggerStartSymbol, m_trionicFileInformation.GetSymbolAddressSRAM(m_appSettings.AutoLogTriggerStartSymbol), m_trionicFileInformation.GetSymbolLength(m_appSettings.AutoLogTriggerStartSymbol), true);
                _ecuConnection.AddSymbolToWatchlist(m_appSettings.AutoLogTriggerStopSymbol, m_trionicFileInformation.GetSymbolAddressSRAM(m_appSettings.AutoLogTriggerStopSymbol), m_trionicFileInformation.GetSymbolLength(m_appSettings.AutoLogTriggerStopSymbol), true);
            }
            switch (_type)
            {
                case RealtimeMonitoringType.Fuel:
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetInjectionDurationSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetInjectionDurationSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetInjectionDurationSymbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetEnrichmentForLoadSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetEnrichmentForLoadSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetEnrichmentForLoadSymbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetEnrichmentForTPSSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetEnrichmentForTPSSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetEnrichmentForTPSSymbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetEnleanmentForLoadSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetEnleanmentForLoadSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetEnleanmentForLoadSymbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetEnleanmentForTPSSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetEnleanmentForTPSSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetEnleanmentForTPSSymbol()), true);
                    break;
                case RealtimeMonitoringType.Ignition:
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetIgnitionAdvanceSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetIgnitionAdvanceSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetIgnitionAdvanceSymbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetKnockOffsetCylinder1Symbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetKnockOffsetCylinder1Symbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetKnockOffsetCylinder1Symbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetKnockOffsetCylinder2Symbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetKnockOffsetCylinder2Symbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetKnockOffsetCylinder2Symbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetKnockOffsetCylinder3Symbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetKnockOffsetCylinder3Symbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetKnockOffsetCylinder3Symbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetKnockOffsetCylinder4Symbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetKnockOffsetCylinder4Symbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetKnockOffsetCylinder4Symbol()), true);
                    // ignition trim
                    // ignition adapt
                    // ignition knock retard
                    // ignition counter
                    break;
                case RealtimeMonitoringType.Boost:
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetBoostRequestSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetBoostRequestSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetBoostRequestSymbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetBoostReductionSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetBoostReductionSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetBoostReductionSymbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetPFactorSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetPFactorSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetPFactorSymbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetIFactorSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetIFactorSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetIFactorSymbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetDFactorSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetDFactorSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetDFactorSymbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetPWMOutputSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetPWMOutputSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetPWMOutputSymbol()), true);
                    // reg_offset
                    break;
                case RealtimeMonitoringType.Knock:
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetKnockCountCylinder1Symbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetKnockCountCylinder1Symbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetKnockCountCylinder1Symbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetKnockCountCylinder2Symbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetKnockCountCylinder2Symbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetKnockCountCylinder2Symbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetKnockCountCylinder3Symbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetKnockCountCylinder3Symbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetKnockCountCylinder3Symbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetKnockCountCylinder4Symbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetKnockCountCylinder4Symbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetKnockCountCylinder4Symbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetKnockOffsetCylinder1Symbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetKnockOffsetCylinder1Symbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetKnockOffsetCylinder1Symbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetKnockOffsetCylinder2Symbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetKnockOffsetCylinder2Symbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetKnockOffsetCylinder2Symbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetKnockOffsetCylinder3Symbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetKnockOffsetCylinder3Symbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetKnockOffsetCylinder3Symbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetKnockOffsetCylinder4Symbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetKnockOffsetCylinder4Symbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetKnockOffsetCylinder4Symbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetKnockOffsetAllCylindersSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetKnockOffsetAllCylindersSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetKnockOffsetAllCylindersSymbol()), true);
                    // ignition retard (Knock_offset1234)
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetBoostReductionSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetBoostReductionSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetBoostReductionSymbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetKnockLevelSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetKnockLevelSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetKnockLevelSymbol()), true);
                    // knock_level (for all cylinders???)
                    break;
                case RealtimeMonitoringType.Dashboard:
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetVehicleSpeedSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetVehicleSpeedSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetVehicleSpeedSymbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetTorqueSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetTorqueSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetTorqueSymbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetInjectionDurationSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetInjectionDurationSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetInjectionDurationSymbol()), true);
                    // inspuitduur (berekening verbruik)
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetBoostReductionSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetBoostReductionSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetBoostReductionSymbol()), true);
                    // apc decrease
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetIgnitionAdvanceSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetIgnitionAdvanceSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetIgnitionAdvanceSymbol()), true);
                    // ignition advance
                    break;
                case RealtimeMonitoringType.Settings:
                    break;
                case RealtimeMonitoringType.Userdefined:
                    //TODO: <GS-22042010> get the user defined symbols and add them to the list as well
                    //
                    foreach (Trionic5Tools.SymbolHelper sh in m_RealtimeUserSymbols)
                    {
                        //_ecuConnection.AddSymbolToWatchlist(sh.Varname, sh.Start_address, sh.Length, false);
                        _ecuConnection.AddSymbolToWatchlist(sh, false);
                    }

                    //_ecuConnection.AddSymbolToWatchlist("Iv_position", m_trionicFileInformation.GetSymbolAddressSRAM("Iv_position"), m_trionicFileInformation.GetSymbolLength("Iv_position"), false);
                    break;
                case RealtimeMonitoringType.GraphDashboard:
                    break;
                case RealtimeMonitoringType.OnlineGraph:
                    //_ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetVehicleSpeedSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetVehicleSpeedSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetVehicleSpeedSymbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetTorqueSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetTorqueSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetTorqueSymbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetInjectionDurationSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetInjectionDurationSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetInjectionDurationSymbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetIgnitionAdvanceSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetIgnitionAdvanceSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetIgnitionAdvanceSymbol()), true);
                    _ecuConnection.AddSymbolToWatchlist(m_trionicFileInformation.GetPWMOutputSymbol(), m_trionicFileInformation.GetSymbolAddressSRAM(m_trionicFileInformation.GetPWMOutputSymbol()), m_trionicFileInformation.GetSymbolLength(m_trionicFileInformation.GetPWMOutputSymbol()), true);

                    break;
            }
            // if we're just starting a realtime session, be sure the user defined symbols are started as well.

            if (_startRealtime)
            {
                foreach (Trionic5Tools.SymbolHelper sh in m_RealtimeUserSymbols)
                {
                    //_ecuConnection.AddSymbolToWatchlist(sh.Varname, sh.Start_address, sh.Length, false);
                    _ecuConnection.AddSymbolToWatchlist(sh, false);
                }
            }
            //props = m_trionicFile.GetTrionicProperties();
            switch (props.InjectorType)
            {
                case InjectorType.Stock:
                    ctrlRealtime1.InjectorCC = 365;
                    break;
                case InjectorType.GreenGiants:
                    ctrlRealtime1.InjectorCC = 413;
                    break;
                case InjectorType.Siemens630Dekas:
                    ctrlRealtime1.InjectorCC = 630;
                    break;
                case InjectorType.Siemens875Dekas:
                    ctrlRealtime1.InjectorCC = 875;
                    break;
                case InjectorType.Siemens1000cc:
                    ctrlRealtime1.InjectorCC = 1000;
                    break;
            }
            // restart the monitoring function
            _ecuConnection.StartECUMonitoring();
            ctrlRealtime1.SetNumberOfSymbolsToWatch(_ecuConnection.SymbolsToMonitor.Count);
        }