コード例 #1
0
        private void FillDieselResult(GetCYDynoLoadGlideCheckRealTimeDataAckParams ackParams)
        {
            _dtResult.Rows[0]["PLHP"]    = ackParams.PLHP90_30kw;
            _dtResult.Rows[0]["CCDT"]    = ackParams.CCDT90_30kw;
            _dtResult.Rows[0]["ACDT"]    = ackParams.ACDT90_30kw;
            _dtResult.Rows[0]["滑行误差(%)"] = ackParams.Error90_30kw;
            _dtResult.Rows[1]["PLHP"]    = ackParams.PLHP80_30kw;
            _dtResult.Rows[1]["CCDT"]    = ackParams.CCDT80_30kw;
            _dtResult.Rows[1]["ACDT"]    = ackParams.ACDT80_30kw;
            _dtResult.Rows[1]["滑行误差(%)"] = ackParams.Error80_30kw;
            _dtResult.Rows[2]["PLHP"]    = ackParams.PLHP70_30kw;
            _dtResult.Rows[2]["CCDT"]    = ackParams.CCDT70_30kw;
            _dtResult.Rows[2]["ACDT"]    = ackParams.ACDT70_30kw;
            _dtResult.Rows[2]["滑行误差(%)"] = ackParams.Error70_30kw;
            _dtResult.Rows[3]["PLHP"]    = ackParams.PLHP60_30kw;
            _dtResult.Rows[3]["CCDT"]    = ackParams.CCDT60_30kw;
            _dtResult.Rows[3]["ACDT"]    = ackParams.ACDT60_30kw;
            _dtResult.Rows[3]["滑行误差(%)"] = ackParams.Error60_30kw;
            _dtResult.Rows[4]["PLHP"]    = ackParams.PLHP50_30kw;
            _dtResult.Rows[4]["CCDT"]    = ackParams.CCDT50_30kw;
            _dtResult.Rows[4]["ACDT"]    = ackParams.ACDT50_30kw;
            _dtResult.Rows[4]["滑行误差(%)"] = ackParams.Error50_30kw;
            _dtResult.Rows[5]["PLHP"]    = ackParams.PLHP40_30kw;
            _dtResult.Rows[5]["CCDT"]    = ackParams.CCDT40_30kw;
            _dtResult.Rows[5]["ACDT"]    = ackParams.ACDT40_30kw;
            _dtResult.Rows[5]["滑行误差(%)"] = ackParams.Error40_30kw;
            _dtResult.Rows[6]["PLHP"]    = ackParams.PLHP30_30kw;
            _dtResult.Rows[6]["CCDT"]    = ackParams.CCDT30_30kw;
            _dtResult.Rows[6]["ACDT"]    = ackParams.ACDT30_30kw;
            _dtResult.Rows[6]["滑行误差(%)"] = ackParams.Error30_30kw;
            _dtResult.Rows[7]["PLHP"]    = ackParams.PLHP20_30kw;
            _dtResult.Rows[7]["CCDT"]    = ackParams.CCDT20_30kw;
            _dtResult.Rows[7]["ACDT"]    = ackParams.ACDT20_30kw;
            _dtResult.Rows[7]["滑行误差(%)"] = ackParams.Error20_30kw;

            _dtResult.Rows[8]["PLHP"]     = ackParams.PLHP90_20kw;
            _dtResult.Rows[8]["CCDT"]     = ackParams.CCDT90_20kw;
            _dtResult.Rows[8]["ACDT"]     = ackParams.ACDT90_20kw;
            _dtResult.Rows[8]["滑行误差(%)"]  = ackParams.Error90_20kw;
            _dtResult.Rows[9]["PLHP"]     = ackParams.PLHP80_20kw;
            _dtResult.Rows[9]["CCDT"]     = ackParams.CCDT80_20kw;
            _dtResult.Rows[9]["ACDT"]     = ackParams.ACDT80_20kw;
            _dtResult.Rows[9]["滑行误差(%)"]  = ackParams.Error80_20kw;
            _dtResult.Rows[10]["PLHP"]    = ackParams.PLHP70_20kw;
            _dtResult.Rows[10]["CCDT"]    = ackParams.CCDT70_20kw;
            _dtResult.Rows[10]["ACDT"]    = ackParams.ACDT70_20kw;
            _dtResult.Rows[10]["滑行误差(%)"] = ackParams.Error70_20kw;
            _dtResult.Rows[11]["PLHP"]    = ackParams.PLHP60_20kw;
            _dtResult.Rows[11]["CCDT"]    = ackParams.CCDT60_20kw;
            _dtResult.Rows[11]["ACDT"]    = ackParams.ACDT60_20kw;
            _dtResult.Rows[11]["滑行误差(%)"] = ackParams.Error60_20kw;
            _dtResult.Rows[12]["PLHP"]    = ackParams.PLHP50_20kw;
            _dtResult.Rows[12]["CCDT"]    = ackParams.CCDT50_20kw;
            _dtResult.Rows[12]["ACDT"]    = ackParams.ACDT50_20kw;
            _dtResult.Rows[12]["滑行误差(%)"] = ackParams.Error50_20kw;
            _dtResult.Rows[13]["PLHP"]    = ackParams.PLHP40_20kw;
            _dtResult.Rows[13]["CCDT"]    = ackParams.CCDT40_20kw;
            _dtResult.Rows[13]["ACDT"]    = ackParams.ACDT40_20kw;
            _dtResult.Rows[13]["滑行误差(%)"] = ackParams.Error40_20kw;
            _dtResult.Rows[14]["PLHP"]    = ackParams.PLHP30_20kw;
            _dtResult.Rows[14]["CCDT"]    = ackParams.CCDT30_20kw;
            _dtResult.Rows[14]["ACDT"]    = ackParams.ACDT30_20kw;
            _dtResult.Rows[14]["滑行误差(%)"] = ackParams.Error30_20kw;
            _dtResult.Rows[15]["PLHP"]    = ackParams.PLHP20_20kw;
            _dtResult.Rows[15]["CCDT"]    = ackParams.CCDT20_20kw;
            _dtResult.Rows[15]["ACDT"]    = ackParams.ACDT20_20kw;
            _dtResult.Rows[15]["滑行误差(%)"] = ackParams.Error20_20kw;

            _dtResult.Rows[16]["PLHP"]    = ackParams.PLHP90_10kw;
            _dtResult.Rows[16]["CCDT"]    = ackParams.CCDT90_10kw;
            _dtResult.Rows[16]["ACDT"]    = ackParams.ACDT90_10kw;
            _dtResult.Rows[16]["滑行误差(%)"] = ackParams.Error90_10kw;
            _dtResult.Rows[17]["PLHP"]    = ackParams.PLHP80_10kw;
            _dtResult.Rows[17]["CCDT"]    = ackParams.CCDT80_10kw;
            _dtResult.Rows[17]["ACDT"]    = ackParams.ACDT80_10kw;
            _dtResult.Rows[17]["滑行误差(%)"] = ackParams.Error80_10kw;
            _dtResult.Rows[18]["PLHP"]    = ackParams.PLHP70_10kw;
            _dtResult.Rows[18]["CCDT"]    = ackParams.CCDT70_10kw;
            _dtResult.Rows[18]["ACDT"]    = ackParams.ACDT70_10kw;
            _dtResult.Rows[18]["滑行误差(%)"] = ackParams.Error70_10kw;
            _dtResult.Rows[19]["PLHP"]    = ackParams.PLHP60_10kw;
            _dtResult.Rows[19]["CCDT"]    = ackParams.CCDT60_10kw;
            _dtResult.Rows[19]["ACDT"]    = ackParams.ACDT60_10kw;
            _dtResult.Rows[19]["滑行误差(%)"] = ackParams.Error60_10kw;
            _dtResult.Rows[20]["PLHP"]    = ackParams.PLHP50_10kw;
            _dtResult.Rows[20]["CCDT"]    = ackParams.CCDT50_10kw;
            _dtResult.Rows[20]["ACDT"]    = ackParams.ACDT50_10kw;
            _dtResult.Rows[20]["滑行误差(%)"] = ackParams.Error50_10kw;
            _dtResult.Rows[21]["PLHP"]    = ackParams.PLHP40_10kw;
            _dtResult.Rows[21]["CCDT"]    = ackParams.CCDT40_10kw;
            _dtResult.Rows[21]["ACDT"]    = ackParams.ACDT40_10kw;
            _dtResult.Rows[21]["滑行误差(%)"] = ackParams.Error40_10kw;
            _dtResult.Rows[22]["PLHP"]    = ackParams.PLHP30_10kw;
            _dtResult.Rows[22]["CCDT"]    = ackParams.CCDT30_10kw;
            _dtResult.Rows[22]["ACDT"]    = ackParams.ACDT30_10kw;
            _dtResult.Rows[22]["滑行误差(%)"] = ackParams.Error30_10kw;
            _dtResult.Rows[23]["PLHP"]    = ackParams.PLHP20_10kw;
            _dtResult.Rows[23]["CCDT"]    = ackParams.CCDT20_10kw;
            _dtResult.Rows[23]["ACDT"]    = ackParams.ACDT20_10kw;
            _dtResult.Rows[23]["滑行误差(%)"] = ackParams.Error20_10kw;
        }
コード例 #2
0
        private void OnTimer(object source, System.Timers.ElapsedEventArgs e)
        {
            if (_bDiesel)
            {
                double IHP = 0;
                switch (_dieselIHP)
                {
                case DieselIHP.IHP30kW:
                    IHP = 30;
                    break;

                case DieselIHP.IHP20kW:
                    IHP = 20;
                    break;

                case DieselIHP.IHP10kW:
                    IHP = 10;
                    break;
                }
                GetCYDynoLoadGlideCheckRealTimeDataAckParams ackParams = new GetCYDynoLoadGlideCheckRealTimeDataAckParams();
                if (_dynoCmd.GetCYDynoLoadGlideCheckRealTimeDataCmd(IHP, ref ackParams, out string errMsg) && ackParams != null)
                {
                    if (_timer != null && _timer.Enabled)
                    {
                        try {
                            DataRow  dr       = _dtRTData.NewRow();
                            TimeSpan interval = DateTime.Now - _startTime;
                            if (interval.TotalSeconds < 0.001)
                            {
                                interval = TimeSpan.Zero;
                            }
                            dr["TimeSN"]  = interval.TotalSeconds.ToString("F1");
                            dr["Power"]   = ackParams.power;
                            dr["Speed"]   = ackParams.speed;
                            dr["TorqueF"] = ackParams.torquef;
                            _dtRTData.Rows.Add(dr);

                            FillDieselResult(ackParams);
                            if (ackParams.step == 7)
                            {
                                _dieselIHP = DieselIHP.IHP20kW;
                            }
                            else if (ackParams.step == 15)
                            {
                                _dieselIHP = DieselIHP.IHP10kW;
                            }
                            Invoke((EventHandler) delegate {
                                lblPower.Text   = ackParams.power.ToString("F");
                                lblSpeed.Text   = ackParams.speed.ToString("F");
                                lblTorqueF.Text = ackParams.torquef.ToString("F");
                                chart1.DataBind();
                                switch (_dieselIHP)
                                {
                                case DieselIHP.IHP30kW:
                                    txtBoxIHP.Text = "30";
                                    break;

                                case DieselIHP.IHP20kW:
                                    txtBoxIHP.Text = "20";
                                    break;

                                case DieselIHP.IHP10kW:
                                    txtBoxIHP.Text = "10";
                                    break;
                                }
                                // 柴油无法仅用step来判断滑行检查是否已结束
                                if (ackParams.step >= 23 && ackParams.result != null && ackParams.result.Length > 0)
                                {
                                    lblResult.Text = ackParams.result;
                                    if (ackParams.result.Contains("不"))
                                    {
                                        lblResult.BackColor = Color.Red;
                                    }
                                    _timer.Enabled = false;
                                }
                            });
                        } catch (ObjectDisposedException) {
                            // 关闭窗口后仍有一定几率会进入主UI线程,此时访问界面元素会引发此异常,直接忽略即可
                        }
                    }
                }
            }
            else
            {
                GetQYDynoLoadGlideCheckRealTimeDataAckParams ackParams = new GetQYDynoLoadGlideCheckRealTimeDataAckParams();
                if (_dynoCmd.GetQYDynoLoadGlideCheckRealTimeDataCmd(ref ackParams, out string errMsg) && ackParams != null)
                {
                    if (_timer != null && _timer.Enabled)
                    {
                        try {
                            DataRow  dr       = _dtRTData.NewRow();
                            TimeSpan interval = DateTime.Now - _startTime;
                            if (interval.TotalSeconds < 0.001)
                            {
                                interval = TimeSpan.Zero;
                            }
                            dr["TimeSN"]  = interval.TotalSeconds.ToString("F1");
                            dr["Power"]   = ackParams.power;
                            dr["Speed"]   = ackParams.speed;
                            dr["TorqueF"] = ackParams.torquef;
                            _dtRTData.Rows.Add(dr);

                            _dtResult.Rows[0]["ACDT"]    = ackParams.ACDT25_11kw;
                            _dtResult.Rows[0]["滑行误差(%)"] = ackParams.Error25_11kw;
                            _dtResult.Rows[1]["ACDT"]    = ackParams.ACDT40_11kw;
                            _dtResult.Rows[1]["滑行误差(%)"] = ackParams.Error40_11kw;
                            Invoke((EventHandler) delegate {
                                lblPower.Text   = ackParams.power.ToString("F");
                                lblSpeed.Text   = ackParams.speed.ToString("F");
                                lblTorqueF.Text = ackParams.torquef.ToString("F");
                                chart1.DataBind();
                                if (ackParams.result != null && ackParams.result.Length > 0)
                                {
                                    lblResult.Text = ackParams.result;
                                    if (ackParams.result.Contains("不"))
                                    {
                                        lblResult.BackColor = Color.Red;
                                    }
                                }
                            });
                            // 汽油可以用step来判断滑行检查是否已结束
                            if (ackParams.step < 0)
                            {
                                _timer.Enabled = false;
                            }
                        } catch (ObjectDisposedException) {
                            // 关闭窗口后仍有一定几率会进入主UI线程,此时访问界面元素会引发此异常,直接忽略即可
                        }
                    }
                }
            }
        }