示例#1
0
 private void ToClear()
 {
     for (int i = 0; i < 6; i++)
     {
         SinglePlatFormControl.P2P_runing_start(m_ControlData.mSinglePlatFormControl.thisplatform.g_handle, i, m_ControlData.mConfigXML.FU_Acc, m_ControlData.mConfigXML.FU_speed, m_ControlData.mConfigXML.FU_speed, 0);
     }
     WaitForTime tm = new WaitForTime(1.0f, /*ToReady*/ Showms);
 }
示例#2
0
 private void CompleteFuWei()
 {
     for (int i = 0; i < 6; i++)
     {
         SinglePlatFormControl.P2P_runing_StopOne(m_ControlData.mSinglePlatFormControl.thisplatform.g_handle, i);
     }
     WaitForTime tm = new WaitForTime(1.0f, TCaculator);
 }
示例#3
0
 private void TCaculator()
 {
     m_ControlData.mSinglePlatFormControl.thisplatform.CaculatorBili(m_ControlData.mConfigXML.P_XingC);
     m_ControlData.mSinglePlatFormControl.thisplatform.SetOrigPosAll();
     for (int i = 0; i < 6; i++)
     {
         SinglePlatFormControl.P2P_runing_start(m_ControlData.mSinglePlatFormControl.thisplatform.g_handle, i, m_ControlData.mConfigXML.FU_Acc, m_ControlData.mConfigXML.FU_speed, m_ControlData.mConfigXML.FU_speed, 0);
     }
     WaitForTime tm = new WaitForTime(1.0f, ToClear);
     //   m_ControlData.mSinglePlatFormControl.Set_Limitswitch(0);
 }
示例#4
0
        private void Timer2_Tick(object sender, EventArgs e)
        {
            //throw new NotImplementedException();
            LightDataPoint ldx = new LightDataPoint();
            LightDataPoint ldy = new LightDataPoint();
            LightDataPoint ldz = new LightDataPoint();

            ldx.XValue = talsec;
            ldy.XValue = talsec;
            ldz.XValue = talsec;
            //ld.YValue = Math.Sin(i * 0.1);
            //_chart.Series[0].DataPoints.Add(ld);
            if (BeginMove)
            {
                commandListBox.SelectedIndex = NowIndex;
                RunTime.Text  = "时间:" + Math.Round(talsec, 2) + "秒";
                RunState.Text = "俯仰:" + rx + "\n偏航:" + ry + "\n滚转:" + rz;

                RunType.Text  = nowModel;
                RunSpeed.Text = nowSpeed.ToString() + "度/秒";
                /// @Todo: 增加保存rx,ry,rz,以绘制曲线
                ldx.YValue = rx;
                ldy.YValue = ry;
                ldz.YValue = rz;
                _chart.Series[0].DataPoints.Add(ldx);
                _chart.Series[1].DataPoints.Add(ldy);
                _chart.Series[2].DataPoints.Add(ldz);
            }
            else
            {
                rx = 0;
                ry = 0;
                rz = 0;
                float[] abc  = m_ControlData.mSixPlaneF.rounds(0, 0, 0);
                float[] Le   = m_ControlData.mSixPlaneF.Six_Platform_RoundF(0, 45, 0, abc[0], abc[1], abc[2]);
                int[]   Spos = m_ControlData.mSinglePlatFormControl.thisplatform.Conver_LengthTopluse2(Le);
                for (int i = 0; i < 6; i++)
                {
                    Spos[i] = Spos[i] + m_ControlData.mConfigXML.DeltalPos[i];
                }

                SinglePlatFormControl.SixSame_ManualStart(m_ControlData.mSinglePlatFormControl.thisplatform.g_handle, Spos, 10, 10 * 0.01f, 0);

                RunTime.Text  = "时间:" + Math.Round(talsec, 2) + "秒";
                RunState.Text = "俯仰:" + rx + "\n偏航:" + ry + "\n滚转:" + rz;
                RunType.Text  = "N/A";
                RunSpeed.Text = nowSpeed.ToString() + "度/秒";

                EnabledBeginEnd(true);
                timer2.Stop();
            }
        }
示例#5
0
        private void CalutorToMiddle(Action callback)
        {
            if (usemanual)
            {
                ///计算中间位置每个缸的长度
                ///
                float[] abc       = m_ControlData.mSixPlaneF.rounds(0, 0, 0);
                float[] Zitaidata = m_ControlData.mSixPlaneF.Six_Platform_RoundF(0, 45, 0, abc[0], abc[1], abc[2]);

                ///将缸的长度转换成脉冲
                int[] Spos = m_ControlData.mSinglePlatFormControl.thisplatform.Conver_LengthTopluse2(Zitaidata);
                //for (int i = 0; i < 6; i++)
                //{
                //    Spos[i] = Spos[i] + m_ControlData.mConfigXML.DeltalPos[i];
                //}
                TargetPos = Spos;
                for (int j = 0; j < 6; j++)
                {
                    SinglePlatFormControl.P2P_runing_start(m_ControlData.mSinglePlatFormControl.thisplatform.g_handle, j, 1, m_ControlData.mConfigXML.FU_speed, m_ControlData.mConfigXML.FU_speed, Spos[j]);
                }
            }
            else
            {
                ///计算中间位置每个缸的长度
                ///
                float[] abc       = m_ControlData.mSixPlaneF.rounds(0, 0, 0);
                float[] Zitaidata = m_ControlData.mSixPlaneF.Six_Platform_RoundF(0, 45, 0, abc[0], abc[1], abc[2]);

                ///将缸的长度转换成脉冲
                int[] Spos = m_ControlData.mSinglePlatFormControl.thisplatform.Conver_LengthTopluse2(Zitaidata);
                for (int i = 0; i < 6; i++)
                {
                    Spos[i] = Spos[i] + m_ControlData.mConfigXML.DeltalPos[i];
                }
                TargetPos = Spos;
                for (int j = 0; j < 6; j++)
                {
                    SinglePlatFormControl.P2P_runing_start(m_ControlData.mSinglePlatFormControl.thisplatform.g_handle, j, 1, m_ControlData.mConfigXML.FU_speed, m_ControlData.mConfigXML.FU_speed, Spos[j]);
                }
            }

            //回中后回调赋值给ReachAndCallBack
            ReachAndCallBack = callback;
            //将CheckToDoCallback检查回中是否完成放到mthread1线程
            mDocheck = null;
            mDocheck = CheckToDoCallback;
        }
示例#6
0
        //public event Action WriteConfig = null;
        private void OnCompleteL()
        {
            EnabledBeginEnd(true);

            float[] abc  = m_ControlData.mSixPlaneF.rounds(0, 0, 0);
            float[] Le   = m_ControlData.mSixPlaneF.Six_Platform_RoundF(0, 45, 0, abc[0], abc[1], abc[2]);
            int[]   Spos = m_ControlData.mSinglePlatFormControl.thisplatform.Conver_LengthTopluse2(Le);
            for (int i = 0; i < 6; i++)
            {
                Spos[i] = Spos[i] + m_ControlData.mConfigXML.DeltalPos[i];
            }
            SinglePlatFormControl.SixSame_ManualStart(m_ControlData.mSinglePlatFormControl.thisplatform.g_handle, Spos, 10, 10 * 0.01f, 0);

            //if (WriteConfig != null)
            {
                WriteConfig();
            }
        }
示例#7
0
        private void CaculatorTosend()
        {
            if (BeginMove)
            {
                TimeSpan tmpd = DateTime.Now - StartTime;
                talsec = tmpd.TotalSeconds;
                float starttime = Mlist[NowIndex].StartTime;
                float edtime    = Mlist[NowIndex].EndTime;
                int   model     = Mlist[NowIndex].Model;
                nowSpeed = Mlist[NowIndex].cury_K;
                switch (model)
                {
                case 0:
                    rz       = Mlist[NowIndex].GetAngle((float)talsec);
                    nowModel = "俯仰";
                    break;

                case 1:
                    ry       = Mlist[NowIndex].GetAngle((float)talsec);
                    nowModel = "偏航";
                    break;

                case 2:
                    rx       = Mlist[NowIndex].GetAngle((float)talsec);
                    nowModel = "滚转";
                    break;

                case 3:
                    nowModel = "延迟";
                    break;

                default:
                    nowModel = "N/A";
                    break;
                }
                if (m_ControlData.mSinglePlatFormControl.HaveCompeleteFuwei)
                {
                    float[] abc  = m_ControlData.mSixPlaneF.rounds(rx, ry, rz);
                    float[] Le   = m_ControlData.mSixPlaneF.Six_Platform_RoundF(xx, yy, zz, abc[0], abc[1], abc[2]);
                    int[]   Spos = m_ControlData.mSinglePlatFormControl.thisplatform.Conver_LengthTopluse2(Le);
                    for (int i = 0; i < 6; i++)
                    {
                        Spos[i] = Spos[i] + m_ControlData.mConfigXML.DeltalPos[i];
                    }
                    SinglePlatFormControl.SixSame_ManualStart(m_ControlData.mSinglePlatFormControl.thisplatform.g_handle, Spos, m_ControlData.mConfigXML.WorkSpeed, m_ControlData.mConfigXML.WorkSpeed * 0.01f, 0);
                }
                if (talsec > edtime)
                {
                    if (NowIndex + 1 < Mlist.Count)
                    {
                        NowIndex++;
                    }
                    else
                    {
                        G_Over();
                    }
                }
            }
            else
            {
                EnabledBeginEnd(true);
            }
        }