コード例 #1
0
        public void StartSelfcheck(bool bStart)
        {
            GetOilTempPrepareRealTimeDataAckParams ackParams = new GetOilTempPrepareRealTimeDataAckParams();

            if (bStart)
            {
                if (!_dynoCmd.GetOilTempPrepareRealTimeDataCmd(true, false, ref ackParams, out string errMsg))
                {
                    MessageBox.Show("执行开始获取油温计实时数据命令失败", "执行命令出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    _timer.Enabled = true;
                    _counter       = 0;
                }
            }
            else
            {
                Thread.Sleep(_mainCfg.RealtimeInterval);
                if (!_dynoCmd.GetOilTempPrepareRealTimeDataCmd(false, true, ref ackParams, out string errMsg))
                {
                    MessageBox.Show("执行停止获取油温计实时数据命令失败", "执行命令出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else if (errMsg.Length > 0)
                {
                    _timer.Enabled = false;
                    lblMsg.Text    = "已手动停止油温计自检";
                }
            }
        }
コード例 #2
0
        private void OnTimer(object source, System.Timers.ElapsedEventArgs e)
        {
            GetOilTempPrepareRealTimeDataAckParams ackParams = new GetOilTempPrepareRealTimeDataAckParams();

            if (_dynoCmd.GetOilTempPrepareRealTimeDataCmd(true, false, ref ackParams, out string errMsg) && ackParams != null)
            {
                if (_timer != null && _timer.Enabled)
                {
                    try {
                        Invoke((EventHandler) delegate {
                            lblOilTemp.Text    = ackParams.oilTemp.ToString("F");
                            lblOilTempCY.Text  = ackParams.oilTempCY.ToString("F");
                            lblOilTempOBD.Text = ackParams.oilTempOBD.ToString("F");
                            lblLQYTempOBD.Text = ackParams.LQYTempOBD.ToString("F");
                            bool tempOK        = ackParams.oilTemp > 0;
                            tempOK             = tempOK || ackParams.oilTempCY > 0;
                            tempOK             = tempOK || ackParams.oilTempOBD > 0;
                            tempOK             = tempOK || ackParams.LQYTempOBD > 0;
                            if (tempOK || _dicStops[this])
                            {
                                if (++_counter >= OK_COUNTER || _dicStops[this])
                                {
                                    _timer.Enabled    = false;
                                    _dicResults[this] = true;
                                    ackParams         = new GetOilTempPrepareRealTimeDataAckParams();
                                    _dynoCmd.GetOilTempPrepareRealTimeDataCmd(false, true, ref ackParams, out errMsg);
                                    SelfcheckDoneEventArgs args = new SelfcheckDoneEventArgs {
                                        Result = _dicResults[this]
                                    };
                                    SelfcheckDone?.Invoke(this, args);
                                }
                            }
                        });
                    } catch (ObjectDisposedException) {
                        // 关闭窗口后仍有一定几率会进入主UI线程,此时访问界面元素会引发此异常,直接忽略即可
                    }
                }
            }
        }