Exemple #1
0
        /// <summary>
        /// 线程主体,循环发送指令
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void thread_Refresh()
        {
            int count = 0;

            while (true)
            {
                Thread.Sleep(30);

                if (S1data.COMHardCon == 1)      //串口数据处理
                {
                    if (Com.IsExists())
                    {
                        S1data.COMSoftCon = 1;
                        count             = 0;
                    }
                    else
                    {
                        count++;

                        if (count > 5)
                        {
                            count             = 0;
                            S1data.COMHardCon = 0;
                            S1data.COMSoftCon = 0;
                            lForm.RecodeInfo("心跳异常");
                            thread.Abort();            //避免重复新建线程
                        }
                    }

                    if (S1data.COMSoftCon == 1)        //软链接成功
                    {
                        if (S1data.GetFirstNum() == 0) //读取固件信息
                        {
                            S1data.SetFirstNum(1);
                            //获取版本信息
                            S1data.SetVer_Info(Com.GetVerInfo());
                        }

                        int axis = S1data.Axis;
                        //获取轴位置
                        S1data.SetLocation(axis, Com.GetPosition());
                        //获取DIP
                        if (Com.GetDIP() != Com.ErrNum)
                        {
                            S1data.DIP = Com.GetDIP();
                        }
                        //获取输入口状态
                        if (Com.GetInputs() != Com.ErrNum)
                        {
                            S1data.MInput = Com.GetInputs();
                        }
                        //获取输出口状态
                        if (Com.GetOutputs() != Com.ErrNum)
                        {
                            S1data.MOutput = Com.GetOutputs();
                        }

                        if (S1data.GetShowMode(axis) == 1)
                        {
                            int  dir  = S1data.GetDire(axis);
                            int  dis  = S1data.GetDistence(axis);
                            long Loca = S1data.GetLocation(axis);

                            if (ShowLoc - Loca == 0 && ShowNum == 0)
                            {
                                ShowEn = true;
                                ShowNum++;
                            }
                            else if (Math.Abs(ShowLoc - Loca) == dis && ShowNum == 1)
                            {
                                ShowEn = true;
                                ShowNum--;
                            }
                            if (ShowEn)
                            {
                                ShowEn = false;
                                Com.SetMMmove(S1data.GetDire(axis), S1data.GetDistence(axis), S1data.GetRunSpd(axis));
                                if (dir == 0)
                                {
                                    S1data.SetDire(axis, 1);
                                }
                                else
                                {
                                    S1data.SetDire(axis, 0);
                                }
                            }
                        }
                    }
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// 窗口数据变化
        /// </summary>
        void WindosShowData()
        {
            int    temp = 0;
            double temd = 0;
            int    axis = S2data.Axis;

            if (axis == 0)
            {
                tbXLoca.Text = S2data.GetLocation(axis).ToString();
            }
            else if (axis == 1)
            {
                tbYLoca.Text = S2data.GetLocation(axis).ToString();
            }
            else
            {
                tbZLoca.Text = S2data.GetLocation(axis).ToString();
            }


            if (axis == 0)
            {
                temp = Convert.ToInt32(tbXDist.Text);
            }
            else if (axis == 1)
            {
                temp = Convert.ToInt32(tbYDist.Text);
            }
            else if (axis == 2)
            {
                temp = Convert.ToInt32(tbZDist.Text);
            }
            S2data.SetDistence(axis, temp);

            if (axis == 0)
            {
                temp = Convert.ToInt32(tbXTarg.Text);
            }
            else if (axis == 1)
            {
                temp = Convert.ToInt32(tbYTarg.Text);
            }
            else if (axis == 2)
            {
                temp = Convert.ToInt32(tbZTarg.Text);
            }
            S2data.SetTargloca(axis, temp);

            if (axis == 0)
            {
                temp = Convert.ToInt32(tbXSpdstart.Text);
            }
            else if (axis == 1)
            {
                temp = Convert.ToInt32(tbYSpdstart.Text);
            }
            else if (axis == 2)
            {
                temp = Convert.ToInt32(tbZSpdstart.Text);
            }
            S2data.SetStartSpd(axis, temp);

            if (axis == 0)
            {
                temp = Convert.ToInt32(tbXSpdrun.Text);
            }
            else if (axis == 1)
            {
                temp = Convert.ToInt32(tbYSpdrun.Text);
            }
            else if (axis == 2)
            {
                temp = Convert.ToInt32(tbZSpdrun.Text);
            }
            S2data.SetRunSpd(axis, temp);

            if (axis == 0)
            {
                temp = Convert.ToInt32(tbXSpdsec.Text);
            }
            else if (axis == 1)
            {
                temp = Convert.ToInt32(tbYSpdsec.Text);
            }
            else if (axis == 2)
            {
                temp = Convert.ToInt32(tbZSpdsec.Text);
            }
            S2data.SetSecSpd(axis, temp);

            if (axis == 0)
            {
                temd = double.Parse(tbXAss.Text);
            }
            else if (axis == 1)
            {
                temd = double.Parse(tbYAss.Text);
            }
            else if (axis == 2)
            {
                temd = double.Parse(tbZAss.Text);
            }
            S2data.SetAcce(axis, temd);

            S2data.SetRunMode(0, cbXMode.SelectedIndex);
            S2data.SetRunMode(1, cbYMode.SelectedIndex);
            S2data.SetRunMode(2, cbZMode.SelectedIndex);
        }