Example #1
0
        public void HomeXY()
        {
            //_selectAxis = Convert.ToInt32(cmbSelectAxis.SelectedItem);
            int    homeMode = 0;
            int    homeDir  = 1;
            double praCurve = 0.5;
            double praAcc   = 100000;
            double praVmX   = 5000;
            double praVmY   = 20000;

            double curX, curY;
            Task   taskX = null;
            Task   taskY = null;

            curX = -1;
            curY = -1;
            if (IsInitialed == false)
            {
                return;
            }

            GetPostionAbs(ref curX, ref curY);

            if (curX != 0 || curY != 0)
            {
                taskX = new Task(() => Class_8338.StartHoming(_selectAxisX, homeMode, homeDir, praCurve, praAcc, praVmX));
                taskY = new Task(() => Class_8338.StartHoming(_selectAxisY, homeMode, homeDir, praCurve, praAcc, praVmY));
                taskX.Start();
                taskY.Start();
            }
        }
Example #2
0
        public bool InitialFixture(int cardId)
        {
            CardId = cardId;
            int boardIdInBits = 0;
            int ret           = Class_8338.Initial(CardId);//初始化

            if (ret != 0)
            {
                Class_8338.Close();
                return(false);
            }

            ret = Class_8338.StartFieldBUS(CardId, ref StartAxisId);
            if (ret < 0)//连接失败
            {
                return(false);
            }

            if (File.Exists(txtXmlFilename))
            {
                ret = Class_8338.LoadXMLFile(txtXmlFilename);
                if (ret != 0)
                {
                    return(false);
                }
            }

            IsInitialed = true;
            return(true);
        }
Example #3
0
        public void MovePT_Line(int x, int y)
        {
            int[] Axis_ID = new int[2] {
                _selectAxisX, _selectAxisY
            };
            double[] Position = new double[2] {
                x, y
            };

            Class_8338.Interpolation_2D_line_move(Axis_ID, Position, false);
        }
Example #4
0
        public void Scan()
        {
            int    Y_Start = 0;
            int    Y_End   = 300000;
            double Acc     = 80000.0; //设置加速度
            double Dec     = 80000.0; //设置减速度
            int    Vm      = 100000;  //设置最大速度

            // move to origial postion
            MovePT_Line(0, 0);

            //open scanner
            m_objScanner.StartGetPoint();
            int ret = Class_8338.AbsluteMove(_selectAxisY, Y_End, Acc, Dec, Vm);//开始绝对

            m_objScanner.StopGetPoint();
            ret = Class_8338.AbsluteMove(_selectAxisY, Y_Start, Acc, Dec, Vm);//开始绝对运动
        }
Example #5
0
        public void ServoOn(bool onOff)
        {
            if (IsInitialed == false)
            {
                return;
            }

            int ret = Class_8338.Servo(_selectAxisX);

            if (ret < 0)
            {
                System.Windows.Forms.MessageBox.Show("ServerOn _selectAxisX fail");
            }

            ret = Class_8338.Servo(_selectAxisY);
            if (ret < 0)
            {
                System.Windows.Forms.MessageBox.Show("ServerOn _selectAxisY fail");
            }
        }
Example #6
0
        public double ReadSickValue()
        {
            double    AnalogValue = 0;
            const int an_subNo    = 5;
            const int an_channel  = 0;
            int       Analog      = 0;
            uint      value       = 0;
            int       ODIndex;//索引
            int       live;

            if (IsInitialed == false)
            {
                return(-1);
            }

            Class_8338.GetSlaveOnlineStatus(CardId, MOD_No_AI, out live);

            if (live == 33)
            {
                ODIndex = decimal.ToInt16(an_channel);
                Class_8338.GetInputStatus(CardId, MOD_No_AI, an_subNo, ODIndex, ref value);
                if (IsNBitOne(value, 16))                                                       //判断 16bit 位是不是 1
                {
                    Analog      = ((int)value ^ (int)(Math.Pow(2, 15) - 1)) + 1;                //如果第 16 位是1,则电压值为 负值 ,先去除符号位
                    AnalogValue = ((Analog - Math.Pow(2, 15)) / (Math.Pow(2, 15) - 1)) * (-10); //计算实际电压
                }
                else
                {
                    AnalogValue = (value / (Math.Pow(2, 15))) * 10;
                }

                AnalogValue = AnalogValue * (-103.7) + 2.1;

                AnalogValue = 794.49 - AnalogValue;
            }

            return(AnalogValue);
        }
Example #7
0
        public void GetLineValues(int pxStart, int pyStart, int pxEnd, int pyEnd, ref List <LineData> data)
        {
            LineData tempDate = new LineData();

            int[] Axis_ID = new int[2] {
                _selectAxisX, _selectAxisY
            };
            double[] PositionStart = new double[2] {
                pxStart, pyStart
            };
            double[] PositionEnd = new double[2] {
                pxEnd, pyEnd
            };

            Class_8338.Interpolation_2D_line_move(Axis_ID, PositionStart, false);
            //add start
            tempDate.X = pxStart;
            tempDate.Y = pyStart;
            tempDate.Z = ReadSickValue();
            data.Add(tempDate);

            Class_8338.Interpolation_2D_line_moveNowait(Axis_ID, PositionEnd, false);
            int motionStatusMdn = 5;

            while ((APS168.APS_motion_status(Axis_ID[0]) & 1 << motionStatusMdn) == 0 && (APS168.APS_motion_status(Axis_ID[1]) & 1 << motionStatusMdn) == 0)
            {
                Thread.Sleep(300);
                tempDate.Z = ReadSickValue();
                GetPostionAbs(ref tempDate.X, ref tempDate.Y);
                data.Add(tempDate);
            }
            //add end
            tempDate.X = pxEnd;
            tempDate.Y = pyEnd;
            tempDate.Z = ReadSickValue();
            data.Add(tempDate);
        }