Beispiel #1
0
        private void Timer1_Tick(object sender, EventArgs e)
        {
            if (isSA)
            {
                //bool isSame = Math.PI - Math.Abs(Math.Abs(cH - mf.gpsHeading) - Math.PI) < (glm.PIBy2+0.1);
                dist = glm.Distance(startFix, mf.pivotAxlePos);
                cntr++;
                if (dist > diameter)
                {
                    diameter = dist;
                    cntr     = 0;
                }
                lblDiameter.Text = diameter.ToString("N2") + " m";

                if (cntr > 9)
                {
                    steerAngleRight = Math.Atan(mf.vehicle.wheelbase / (diameter / 2));
                    steerAngleRight = glm.toDegrees(steerAngleRight);
                    //steerAngleLeft = Math.Atan(mf.vehicle.wheelbase / (diameter / 2 ));
                    //steerAngleLeft = glm.toDegrees(steerAngleLeft);

                    lblCalcSteerAngleInner.Text = steerAngleRight.ToString("N1") + "\u00B0";
                    //lblCalcSteerAngleOuter.Text = steerAngleLeft.ToString("N1") + "\u00B0";
                    lblDiameter.Text = diameter.ToString("N2") + " m";
                    btnStartSA.Image = Properties.Resources.BoundaryRecord;
                    isSA             = false;
                }
            }

            double actAng = mf.mc.actualSteerAngleDegrees * 5;

            if (actAng > 0)
            {
                if (actAng > 49)
                {
                    actAng = 49;
                }
                CExtensionMethods.SetProgressNoAnimation(pbarRight, (int)actAng);
                pbarLeft.Value = 0;
            }
            else
            {
                if (actAng < -49)
                {
                    actAng = -49;
                }
                pbarRight.Value = 0;
                CExtensionMethods.SetProgressNoAnimation(pbarLeft, (int)-actAng);
            }

            lblSteerAngle.Text            = mf.SetSteerAngle;
            lblSteerAngleActual.Text      = mf.mc.actualSteerAngleDegrees.ToString("N1") + "\u00B0";
            lblActualSteerAngleUpper.Text = lblSteerAngleActual.Text;
            double err = (mf.mc.actualSteerAngleDegrees - mf.guidanceLineSteerAngle * 0.01);

            lblError.Text = Math.Abs(err).ToString("N1") + "\u00B0";
            if (err > 0)
            {
                lblError.ForeColor = Color.Red;
            }
            else
            {
                lblError.ForeColor = Color.DarkGreen;
            }

            lblPWMDisplay.Text = mf.mc.pwmDisplay.ToString();
            counter++;
            if (toSend && counter > 4)
            {
                Properties.Settings.Default.setAS_countsPerDegree = mf.p_252.pgn[mf.p_252.countsPerDegree] = unchecked ((byte)hsbarCountsPerDegree.Value);
                Properties.Settings.Default.setAS_ackerman        = mf.p_252.pgn[mf.p_252.ackerman] = unchecked ((byte)hsbarAckerman.Value);

                Properties.Settings.Default.setAS_wasOffset = hsbarWasOffset.Value;
                mf.p_252.pgn[mf.p_252.wasOffsetHi]          = unchecked ((byte)(hsbarWasOffset.Value >> 8));
                mf.p_252.pgn[mf.p_252.wasOffsetLo]          = unchecked ((byte)(hsbarWasOffset.Value));

                Properties.Settings.Default.setAS_highSteerPWM = mf.p_252.pgn[mf.p_252.highPWM] = unchecked ((byte)hsbarHighSteerPWM.Value);
                Properties.Settings.Default.setAS_lowSteerPWM  = mf.p_252.pgn[mf.p_252.lowPWM] = unchecked ((byte)hsbarLowSteerPWM.Value);
                Properties.Settings.Default.setAS_Kp           = mf.p_252.pgn[mf.p_252.gainProportional] = unchecked ((byte)hsbarProportionalGain.Value);
                Properties.Settings.Default.setAS_minSteerPWM  = mf.p_252.pgn[mf.p_252.minPWM] = unchecked ((byte)hsbarMinPWM.Value);

                Properties.Settings.Default.Save();
                Properties.Vehicle.Default.Save();

                mf.SendPgnToLoop(mf.p_252.pgn);
                toSend  = false;
                counter = 0;
            }

            if (hsbarMinPWM.Value > hsbarLowSteerPWM.Value)
            {
                lblMinPWM.ForeColor = Color.OrangeRed;
            }
            else
            {
                lblMinPWM.ForeColor = SystemColors.ControlText;
            }


            if (mf.mc.sensorData != -1)
            {
                if (mf.mc.sensorData < 0 || mf.mc.sensorData > 255)
                {
                    mf.mc.sensorData = 0;
                }
                CExtensionMethods.SetProgressNoAnimation(pbarSensor, mf.mc.sensorData);
                lblPercentFS.Text = ((int)((double)mf.mc.sensorData * 0.3921568627)).ToString() + "%";
            }
        }