Exemplo n.º 1
0
        public TSIForm(string VIN, DynoCmd dynoCmd, MainSetting mainCfg, ModelLocal db, EnvironmentData envData, Logger log)
        {
            InitializeComponent();
            _lastHeight = Height;
            _VIN        = VIN;
            _dynoCmd    = dynoCmd;
            _mainCfg    = mainCfg;
            _db         = db;
            _envData    = envData;
            _log        = log;
            EmissionInfo ei = new EmissionInfo();

            _db.GetEmissionInfoFromVIN(_VIN, ei);
            _RatedRPM = ei.RatedRPM;

            _dtRealTime = new DataTable("TSIRealTime");
            _dtRealTime.Columns.Add("VIN");
            _dtRealTime.Columns.Add("StartTime");
            _dtRealTime.Columns.Add("TimeSN");
            _dtRealTime.Columns.Add("Step");
            _dtRealTime.Columns.Add("RPM");
            _dtRealTime.Columns.Add("CurrentStageTime");
            _dtRealTime.Columns.Add("Lambda");
            _dtRealTime.Columns.Add("OilTemp");
            _dtRealTime.Columns.Add("HResult");
            _dtRealTime.Columns.Add("LResult");

            _resultData = new TSIResultData();

            _timer           = new System.Timers.Timer(_mainCfg.RealtimeInterval);
            _timer.Elapsed  += OnTimer;
            _timer.AutoReset = true;

            f_result = new TSIResultForm();
        }
Exemplo n.º 2
0
        public SelfcheckForm(DynoCmd dynoCmd, MainSetting mainCfg, List <bool> selfChecks, EnvironmentData envData, bool bDiesel)
        {
            InitializeComponent();
            _lastHeight = Height;
            _dynoCmd    = dynoCmd;
            _dicResults = new Dictionary <Form, bool>();
            _dicStops   = new Dictionary <Form, bool>();
            _envData    = envData;
            _selfChecks = selfChecks;

            f_gasBoxSelfcheck     = new GasBoxSelfcheckSubForm(_dynoCmd, mainCfg, _dicResults, _dicStops, bDiesel);
            f_flowmeterSelfcheck  = new FlowmeterSelfcheckSubForm(_dynoCmd, mainCfg, _dicResults, _dicStops);
            f_smokerSelfcheck     = new SmokerSelfcheckSubForm(_dynoCmd, mainCfg, _dicResults, _dicStops);
            f_oilTempSelfcheck    = new OilTempSelfcheckSubForm(_dynoCmd, mainCfg, _dicResults, _dicStops);
            f_tachometerSelfcheck = new TachometerSelfcheckSubForm(_dynoCmd, mainCfg, _dicResults, _dicStops);
            f_weatherSelfcheck    = new WeatherSelfcheckSubForm(_dynoCmd, mainCfg, _dicResults, _dicStops, _envData);

            f_gasBoxSelfcheck.SelfcheckDone     += OnSelfcheckDone;
            f_flowmeterSelfcheck.SelfcheckDone  += OnSelfcheckDone;
            f_smokerSelfcheck.SelfcheckDone     += OnSelfcheckDone;
            f_oilTempSelfcheck.SelfcheckDone    += OnSelfcheckDone;
            f_tachometerSelfcheck.SelfcheckDone += OnSelfcheckDone;
            f_weatherSelfcheck.SelfcheckDone    += OnSelfcheckDone;

            _dicResults.Add(f_gasBoxSelfcheck, !selfChecks[0]);
            _dicResults.Add(f_flowmeterSelfcheck, !selfChecks[1]);
            _dicResults.Add(f_smokerSelfcheck, !selfChecks[2]);
            _dicResults.Add(f_oilTempSelfcheck, !selfChecks[3]);
            _dicResults.Add(f_tachometerSelfcheck, !selfChecks[4]);
            _dicResults.Add(f_weatherSelfcheck, !selfChecks[5]);

            _dicStops.Add(f_gasBoxSelfcheck, false);
            _dicStops.Add(f_flowmeterSelfcheck, false);
            _dicStops.Add(f_smokerSelfcheck, false);
            _dicStops.Add(f_oilTempSelfcheck, false);
            _dicStops.Add(f_tachometerSelfcheck, false);
            _dicStops.Add(f_weatherSelfcheck, false);

            _buttonsOrder = new Button[] { btn1GasBox, btn2Flowmeter, btn3Smoker, btn4OilTemp, btn5Tachometer, btn6Weather };
            for (int i = 0; i < selfChecks.Count; i++)
            {
                if (_buttonsOrder.Length > i)
                {
                    _buttonsOrder[i].Enabled = selfChecks[i];
                }
            }

            _dicSubForms = new Dictionary <Button, Form> {
                { btn1GasBox, f_gasBoxSelfcheck },
                { btn2Flowmeter, f_flowmeterSelfcheck },
                { btn3Smoker, f_smokerSelfcheck },
                { btn4OilTemp, f_oilTempSelfcheck },
                { btn5Tachometer, f_tachometerSelfcheck },
                { btn6Weather, f_weatherSelfcheck }
            };
        }
Exemplo n.º 3
0
 public WeatherSelfcheckSubForm(DynoCmd dynoCmd, MainSetting mainCfg, Dictionary <Form, bool> dicResults, Dictionary <Form, bool> dicStops, EnvironmentData envData)
 {
     InitializeComponent();
     _lastHeight      = Height;
     _dynoCmd         = dynoCmd;
     _mainCfg         = mainCfg;
     _dicResults      = dicResults;
     _dicStops        = dicStops;
     _envData         = envData;
     _timer           = new System.Timers.Timer(_mainCfg.RealtimeInterval);
     _timer.Elapsed  += OnTimer;
     _timer.AutoReset = true;
 }
Exemplo n.º 4
0
        public ASMForm(string VIN, DynoCmd dynoCmd, MainSetting mainCfg, ModelLocal db, EnvironmentData envData, Logger log)
        {
            InitializeComponent();
            _lastHeight = Height;
            _VIN        = VIN;
            _dynoCmd    = dynoCmd;
            _mainCfg    = mainCfg;
            _db         = db;
            _envData    = envData;
            _log        = log;

            _dtRealTime = new DataTable("ASMRealTime");
            _dtRealTime.Columns.Add("VIN");
            _dtRealTime.Columns.Add("StartTime");
            _dtRealTime.Columns.Add("TimeSN");
            _dtRealTime.Columns.Add("Step");
            _dtRealTime.Columns.Add("TestTime");
            _dtRealTime.Columns.Add("WorkingTime");
            _dtRealTime.Columns.Add("RPM");
            _dtRealTime.Columns.Add("Speed");
            _dtRealTime.Columns.Add("Power");
            _dtRealTime.Columns.Add("HC");
            _dtRealTime.Columns.Add("CO");
            _dtRealTime.Columns.Add("NO");
            _dtRealTime.Columns.Add("CO2");
            _dtRealTime.Columns.Add("O2");
            _dtRealTime.Columns.Add("lambda");
            _dtRealTime.Columns.Add("KH");
            _dtRealTime.Columns.Add("DF");
            _dtRealTime.Columns.Add("HCNor");
            _dtRealTime.Columns.Add("CONor");
            _dtRealTime.Columns.Add("NONor");

            _resultData = new ASMResultData();

            _timer           = new System.Timers.Timer(_mainCfg.RealtimeInterval);
            _timer.Elapsed  += OnTimer;
            _timer.AutoReset = true;

            f_result = new ASMResultForm();
        }
Exemplo n.º 5
0
        public LugdownForm(string VIN, DynoCmd dynoCmd, MainSetting mainCfg, ModelLocal db, EnvironmentData envData, Logger log)
        {
            InitializeComponent();
            _lastHeight = Height;
            _VIN        = VIN;
            _dynoCmd    = dynoCmd;
            _mainCfg    = mainCfg;
            _db         = db;
            _envData    = envData;
            _log        = log;
            EmissionInfo ei = new EmissionInfo();

            _db.GetEmissionInfoFromVIN(_VIN, ei);
            _RatedRPM     = ei.RatedRPM;
            _MaxRPM       = -1;
            _canGetMaxRpm = false;

            _dtRealTime = new DataTable("LugdownRealTime");
            _dtRealTime.Columns.Add("VIN");
            _dtRealTime.Columns.Add("StartTime");
            _dtRealTime.Columns.Add("TimeSN");
            _dtRealTime.Columns.Add("RPM");
            _dtRealTime.Columns.Add("Speed");
            _dtRealTime.Columns.Add("Power");
            _dtRealTime.Columns.Add("Torque");
            _dtRealTime.Columns.Add("K");
            _dtRealTime.Columns.Add("CO2");
            _dtRealTime.Columns.Add("NOx");

            _resultData = new LDResultData();

            _timer           = new System.Timers.Timer(_mainCfg.RealtimeInterval);
            _timer.Elapsed  += OnTimer;
            _timer.AutoReset = true;

            f_result = new LDResultForm();
        }
Exemplo n.º 6
0
        private void BtnLogin_Click(object sender, EventArgs e)
        {
            VehicleLoginForm f_vehicleLogin = new VehicleLoginForm(_db, _dynoCmd, _cfg.Main.Data, _log);

            f_vehicleLogin.ShowDialog();
            if (f_vehicleLogin.DialogResult == DialogResult.OK)
            {
                EnvironmentData envData = new EnvironmentData();

                bool bDiesel = false;
                switch (f_vehicleLogin.EI.TestMethod)
                {
                case 1:
                    _selfChecks = _cfg.SelfCheck.Data.TSI;
                    break;

                case 2:
                    _selfChecks = _cfg.SelfCheck.Data.ASM;
                    break;

                case 3:
                    _selfChecks = _cfg.SelfCheck.Data.VMAS;
                    break;

                case 4:
                    _selfChecks = _cfg.SelfCheck.Data.LD;
                    bDiesel     = true;
                    break;

                case 6:
                    _selfChecks = _cfg.SelfCheck.Data.FAL;
                    bDiesel     = true;
                    break;

                case 7:
                    _selfChecks = _cfg.SelfCheck.Data.Default;
                    bDiesel     = true;
                    break;

                default:
                    _selfChecks = _cfg.SelfCheck.Data.Default;
                    break;
                }
                if (_selfChecks.Count != 6)
                {
                    _selfChecks = _cfg.SelfCheck.Data.Default;
                    MessageBox.Show("仪器准备配置出错,将使用默认配置!", "仪器准备配置出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                SelfcheckForm f_prepare = new SelfcheckForm(_dynoCmd, _cfg.Main.Data, _selfChecks, envData, bDiesel);
                f_prepare.ShowDialog();
#if DEBUG
                LugdownForm f_Lugdown = new LugdownForm(f_vehicleLogin.VI.VIN, _dynoCmd, _cfg.Main.Data, _db, envData, _log);
                f_Lugdown.ShowDialog();
                //ASMForm f_ASM = new ASMForm(f_vehicleLogin.VI.VIN, _dynoCmd, _cfg.Main.Data, _db, envData, _log);
                //f_ASM.ShowDialog();
                //FALForm f_FAL = new FALForm(f_vehicleLogin.VI.VIN, _dynoCmd, _cfg.Main.Data, _db, envData, _log);
                //f_FAL.ShowDialog();
                //TSIForm f_TSI = new TSIForm(f_vehicleLogin.VI.VIN, _dynoCmd, _cfg.Main.Data, _db, envData, _log);
                //f_TSI.ShowDialog();
                //VMASForm f_VMAS = new VMASForm(f_vehicleLogin.VI.VIN, _dynoCmd, _cfg.Main.Data, _db, envData, _log);
                //f_VMAS.ShowDialog();
#else
                if (f_prepare.DialogResult == DialogResult.Yes)
                {
                    switch (f_vehicleLogin.EI.TestMethod)
                    {
                    case 0:
                        lblInfo.Text      = "[" + f_vehicleLogin.VI.VIN + "]该辆车免检";
                        lblInfo.ForeColor = Color.Red;
                        break;

                    case 1:
                        TSIForm f_TSI = new TSIForm(f_vehicleLogin.VI.VIN, _dynoCmd, _cfg.Main.Data, _db, envData, _log);
                        f_TSI.ShowDialog();
                        break;

                    case 2:
                        ASMForm f_ASM = new ASMForm(f_vehicleLogin.VI.VIN, _dynoCmd, _cfg.Main.Data, _db, envData, _log);
                        f_ASM.ShowDialog();
                        break;

                    case 3:
                        VMASForm f_VMAS = new VMASForm(f_vehicleLogin.VI.VIN, _dynoCmd, _cfg.Main.Data, _db, envData, _log);
                        f_VMAS.ShowDialog();
                        break;

                    case 4:
                        LugdownForm f_Lugdown = new LugdownForm(f_vehicleLogin.VI.VIN, _dynoCmd, _cfg.Main.Data, _db, envData, _log);
                        f_Lugdown.ShowDialog();
                        break;

                    case 6:
                        FALForm f_FAL = new FALForm(f_vehicleLogin.VI.VIN, _dynoCmd, _cfg.Main.Data, _db, envData, _log);
                        f_FAL.ShowDialog();
                        break;

                    default:
                        lblInfo.Text      = "本系统暂不支持[" + f_vehicleLogin.EI.TestMethod + "]检测方法";
                        lblInfo.ForeColor = Color.Red;
                        break;
                    }
                }
                else
                {
                    lblInfo.Text      = "仪器准备过程不合格,请先排除仪器故障";
                    lblInfo.ForeColor = Color.Red;
                }
#endif
            }
        }
Exemplo n.º 7
0
        public void SaveVMASResult(string strVIN, DateTime startTime, double runningTime, EnvironmentData envData, VMASResultData resultData)
        {
            DataTable dt = new DataTable("SH_VMASResult");

            dt.Columns.Add("VIN");
            dt.Columns.Add("Temperature");
            dt.Columns.Add("Humidity");
            dt.Columns.Add("Pressure");
            dt.Columns.Add("StartTime");
            dt.Columns.Add("RunningTime");
            dt.Columns.Add("HCLimit");
            dt.Columns.Add("COLimit");
            dt.Columns.Add("NOLimit");
            dt.Columns.Add("HC");
            dt.Columns.Add("CO");
            dt.Columns.Add("NO");
            dt.Columns.Add("HCNO");
            dt.Columns.Add("HCEvl");
            dt.Columns.Add("COEvl");
            dt.Columns.Add("NOEvl");
            dt.Columns.Add("Result");
            DataRow dr = dt.NewRow();

            dr["VIN"]         = strVIN;
            dr["Temperature"] = envData.Temperature;
            dr["Humidity"]    = envData.Humidity;
            dr["Pressure"]    = envData.Pressure;
            dr["StartTime"]   = startTime;
            dr["RunningTime"] = runningTime;
            dr["HCLimit"]     = resultData.HCLimit;
            dr["COLimit"]     = resultData.COLimit;
            dr["NOLimit"]     = resultData.NOLimit;
            dr["HC"]          = resultData.HC;
            dr["CO"]          = resultData.CO;
            dr["NO"]          = resultData.NO;
            dr["HCNO"]        = resultData.HCNO;
            dr["HCEvl"]       = resultData.HCEvl == "合格" ? 1 : 0;
            dr["COEvl"]       = resultData.COEvl == "合格" ? 1 : 0;
            dr["NOEvl"]       = resultData.NOEvl == "合格" ? 1 : 0;
            dr["Result"]      = resultData.Result == "合格" ? 1 : 0;
            dt.Rows.Add(dr);
            InsertRecords(dt);
        }
Exemplo n.º 8
0
        public void SaveTSIResult(string strVIN, DateTime startTime, double runningTime, EnvironmentData envData, TSIResultData resultData)
        {
            DataTable dt = new DataTable("SH_TSIResult");

            dt.Columns.Add("VIN");
            dt.Columns.Add("Temperature");
            dt.Columns.Add("Humidity");
            dt.Columns.Add("Pressure");
            dt.Columns.Add("StartTime");
            dt.Columns.Add("RunningTime");
            dt.Columns.Add("HighCOLimit");
            dt.Columns.Add("HighHCLimit");
            dt.Columns.Add("HighCO");
            dt.Columns.Add("HighHC");
            dt.Columns.Add("HighIdleResult");
            dt.Columns.Add("LowCOLimit");
            dt.Columns.Add("LowHCLimit");
            dt.Columns.Add("LowCO");
            dt.Columns.Add("LowHC");
            dt.Columns.Add("LowIdleResult");
            dt.Columns.Add("LambdaLimit");
            dt.Columns.Add("Lambda");
            dt.Columns.Add("LambdaResult");
            dt.Columns.Add("Result");
            DataRow dr = dt.NewRow();

            dr["VIN"]            = strVIN;
            dr["Temperature"]    = envData.Temperature;
            dr["Humidity"]       = envData.Humidity;
            dr["Pressure"]       = envData.Pressure;
            dr["StartTime"]      = startTime;
            dr["RunningTime"]    = runningTime;
            dr["HighCOLimit"]    = resultData.HighCOLimit;
            dr["HighHCLimit"]    = resultData.HighHCLimit;
            dr["HighCO"]         = resultData.HighCO;
            dr["HighHC"]         = resultData.HighHC;
            dr["HighIdleResult"] = resultData.HighIdleResult == "合格" ? 1 : 0;
            dr["LowCOLimit"]     = resultData.LowCOLimit;
            dr["LowHCLimit"]     = resultData.LowHCLimit;
            dr["LowCO"]          = resultData.LowCO;
            dr["LowHC"]          = resultData.LowHC;
            dr["LowIdleResult"]  = resultData.LowIdleResult == "合格" ? 1 : 0;
            dr["LambdaLimit"]    = resultData.LambdaLimit;
            dr["Lambda"]         = resultData.Lambda;
            dr["LambdaResult"]   = resultData.LambdaResult == "合格" ? 1 : 0;
            dr["Result"]         = resultData.Result == "合格" ? 1 : 0;
            dt.Rows.Add(dr);
            InsertRecords(dt);
        }
Exemplo n.º 9
0
        public void SaveFALResult(string strVIN, DateTime startTime, double runningTime, EnvironmentData envData, FALResultData resultData)
        {
            DataTable dt = new DataTable("SH_FALResult");

            dt.Columns.Add("VIN");
            dt.Columns.Add("Temperature");
            dt.Columns.Add("Humidity");
            dt.Columns.Add("Pressure");
            dt.Columns.Add("StartTime");
            dt.Columns.Add("RunningTime");
            dt.Columns.Add("RatedRPM");
            dt.Columns.Add("MaxRPM");
            dt.Columns.Add("KLimit");
            dt.Columns.Add("KAvg");
            dt.Columns.Add("K1");
            dt.Columns.Add("K2");
            dt.Columns.Add("K3");
            dt.Columns.Add("Result");
            DataRow dr = dt.NewRow();

            dr["VIN"]         = strVIN;
            dr["Temperature"] = envData.Temperature;
            dr["Humidity"]    = envData.Humidity;
            dr["Pressure"]    = envData.Pressure;
            dr["StartTime"]   = startTime;
            dr["RunningTime"] = runningTime;
            dr["RatedRPM"]    = resultData.RatedRPM;
            dr["MaxRPM"]      = resultData.MaxRPM;
            dr["KLimit"]      = resultData.KLimit;
            dr["KAvg"]        = resultData.KAvg;
            dr["K1"]          = resultData.K1;
            dr["K2"]          = resultData.K2;
            dr["K3"]          = resultData.K3;
            dr["Result"]      = resultData.Result == "合格" ? 1 : 0;
            dt.Rows.Add(dr);
            InsertRecords(dt);
        }
Exemplo n.º 10
0
        public void SaveASMResult(string strVIN, DateTime startTime, double runningTime, EnvironmentData envData, ASMResultData resultData)
        {
            DataTable dt = new DataTable("SH_ASMResult");

            dt.Columns.Add("VIN");
            dt.Columns.Add("Temperature");
            dt.Columns.Add("Humidity");
            dt.Columns.Add("Pressure");
            dt.Columns.Add("StartTime");
            dt.Columns.Add("RunningTime");
            dt.Columns.Add("HC5025Limit");
            dt.Columns.Add("CO5025Limit");
            dt.Columns.Add("NO5025Limit");
            dt.Columns.Add("HC5025");
            dt.Columns.Add("CO5025");
            dt.Columns.Add("NO5025");
            dt.Columns.Add("HC5025Evl");
            dt.Columns.Add("CO5025Evl");
            dt.Columns.Add("NO5025Evl");
            dt.Columns.Add("Power5025");
            dt.Columns.Add("HC2540Limit");
            dt.Columns.Add("CO2540Limit");
            dt.Columns.Add("NO2540Limit");
            dt.Columns.Add("HC2540");
            dt.Columns.Add("CO2540");
            dt.Columns.Add("NO2540");
            dt.Columns.Add("HC2540Evl");
            dt.Columns.Add("CO2540Evl");
            dt.Columns.Add("NO2540Evl");
            dt.Columns.Add("Power2540");
            dt.Columns.Add("Result");
            DataRow dr = dt.NewRow();

            dr["VIN"]         = strVIN;
            dr["Temperature"] = envData.Temperature;
            dr["Humidity"]    = envData.Humidity;
            dr["Pressure"]    = envData.Pressure;
            dr["StartTime"]   = startTime;
            dr["RunningTime"] = runningTime;
            dr["HC5025Limit"] = resultData.HC5025Limit;
            dr["CO5025Limit"] = resultData.CO5025Limit;
            dr["NO5025Limit"] = resultData.NO5025Limit;
            dr["HC5025"]      = resultData.HC5025;
            dr["CO5025"]      = resultData.CO5025;
            dr["NO5025"]      = resultData.NO5025;
            dr["HC5025Evl"]   = resultData.HC5025Evl == "合格" ? 1 : 0;
            dr["CO5025Evl"]   = resultData.CO5025Evl == "合格" ? 1 : 0;
            dr["NO5025Evl"]   = resultData.NO5025Evl == "合格" ? 1 : 0;
            dr["HC2540Limit"] = resultData.HC2540Limit;
            dr["CO2540Limit"] = resultData.CO2540Limit;
            dr["NO2540Limit"] = resultData.NO2540Limit;
            dr["HC2540"]      = resultData.HC2540;
            dr["CO2540"]      = resultData.CO2540;
            dr["NO2540"]      = resultData.NO2540;
            dr["HC2540Evl"]   = resultData.HC2540Evl == "合格" ? 1 : 0;
            dr["CO2540Evl"]   = resultData.CO2540Evl == "合格" ? 1 : 0;
            dr["NO2540Evl"]   = resultData.NO2540Evl == "合格" ? 1 : 0;
            dr["Result"]      = resultData.Result == "合格" ? 1 : 0;
            dt.Rows.Add(dr);
            InsertRecords(dt);
        }
Exemplo n.º 11
0
        public void SaveLDResult(string strVIN, DateTime startTime, double runningTime, EnvironmentData envData, LDResultData resultData)
        {
            DataTable dt = new DataTable("SH_LugdownResult");

            dt.Columns.Add("VIN");
            dt.Columns.Add("Temperature");
            dt.Columns.Add("Humidity");
            dt.Columns.Add("Pressure");
            dt.Columns.Add("StartTime");
            dt.Columns.Add("RunningTime");
            dt.Columns.Add("RatedRPM");
            dt.Columns.Add("MaxRPM");
            dt.Columns.Add("VelMaxHP");
            dt.Columns.Add("RealMaxPowerLimit");
            dt.Columns.Add("RealMaxPower");
            dt.Columns.Add("KLimit");
            dt.Columns.Add("K100");
            dt.Columns.Add("K80");
            dt.Columns.Add("NOx80Limit");
            dt.Columns.Add("NOx80");
            dt.Columns.Add("Result");
            DataRow dr = dt.NewRow();

            dr["VIN"]               = strVIN;
            dr["Temperature"]       = envData.Temperature;
            dr["Humidity"]          = envData.Humidity;
            dr["Pressure"]          = envData.Pressure;
            dr["StartTime"]         = startTime;
            dr["RunningTime"]       = runningTime;
            dr["RatedRPM"]          = resultData.RatedRPM;
            dr["MaxRPM"]            = resultData.MaxRPM;
            dr["VelMaxHP"]          = resultData.VelMaxHP;
            dr["RealMaxPowerLimit"] = resultData.RealMaxPowerLimit;
            dr["RealMaxPower"]      = resultData.RealMaxPower;
            dr["KLimit"]            = resultData.KLimit;
            dr["K100"]              = resultData.K100;
            dr["K80"]               = resultData.K80;
            dr["NOx80Limit"]        = resultData.NOx80Limit;
            dr["NOx80"]             = resultData.NOx80;
            dr["Result"]            = resultData.Result == "合格" ? 1 : 0;
            dt.Rows.Add(dr);
            InsertRecords(dt);
        }
Exemplo n.º 12
0
        public VMASForm(string VIN, DynoCmd dynoCmd, MainSetting mainCfg, ModelLocal db, EnvironmentData envData, Logger log)
        {
            InitializeComponent();
            _lastHeight = Height;
            _VIN        = VIN;
            _dynoCmd    = dynoCmd;
            _mainCfg    = mainCfg;
            _db         = db;
            _envData    = envData;
            _log        = log;
            _rangeScale = 3;
            _speedRange = 3;
            _speedMax   = 0 + _speedRange * _rangeScale;
            _speedMin   = 0 + _speedRange * _rangeScale;
            _speedStart = 0 + _speedRange;
            _speedEnd   = 0 - _speedRange;
            _XPosition  = 0;

            _dtRealTime = new DataTable("VMASRealTime");
            _dtRealTime.Columns.Add("VIN");
            _dtRealTime.Columns.Add("StartTime");
            _dtRealTime.Columns.Add("TimeSN");
            _dtRealTime.Columns.Add("Speed");
            _dtRealTime.Columns.Add("RPM");
            _dtRealTime.Columns.Add("SpeedOverTime");
            _dtRealTime.Columns.Add("Power");
            _dtRealTime.Columns.Add("HC");
            _dtRealTime.Columns.Add("NO");
            _dtRealTime.Columns.Add("CO");
            _dtRealTime.Columns.Add("CO2");
            _dtRealTime.Columns.Add("O2");
            _dtRealTime.Columns.Add("DilutionO2");
            _dtRealTime.Columns.Add("EnvO2");
            _dtRealTime.Columns.Add("DilutionRatio");
            _dtRealTime.Columns.Add("Flow");

            _dtSpeeds = new DataTable();
            _dtSpeeds.Columns.Add(_mainCfg.VMASSpeed.Columns[0].ToString());
            _dtSpeeds.Columns.Add(_mainCfg.VMASSpeed.Columns[1].ToString());
            _dtSpeeds.Columns.Add(_mainCfg.VMASSpeed.Columns[2].ToString());
            _dtSpeeds.Columns.Add(_mainCfg.VMASSpeed.Columns[3].ToString());
            _dtSpeeds.Columns.Add("Speed");

            for (int i = 0; i < _mainCfg.VMASSpeed.Rows.Count; i++)
            {
                DataRow dr = _dtSpeeds.NewRow();
                if (_mainCfg.VMASSpeed.Rows[i][1].ToString().Length > 0)
                {
                    dr[0] = _mainCfg.VMASSpeed.Rows[i][0];
                    dr[1] = _mainCfg.VMASSpeed.Rows[i][1];
                    dr[2] = _mainCfg.VMASSpeed.Rows[i][2];
                    dr[3] = _mainCfg.VMASSpeed.Rows[i][3];
                }
                _dtSpeeds.Rows.Add(dr);
            }

            _resultData = new VMASResultData();

            _timer           = new System.Timers.Timer(_mainCfg.RealtimeInterval);
            _timer.Elapsed  += OnTimer;
            _timer.AutoReset = true;

            f_result = new VMASResultForm();
        }