Example #1
0
        /// <summary>
        /// 关闭气缸,可选延迟
        /// </summary>
        /// <param name="delay">等待时间,等于0时不等待直接返回OK</param>
        /// <param name="bdoevnet">为True时,循环中处理其他系统信息,例如界面刷新等</param>
        /// <returns></returns>
        public EM_RES SetOff(int delay = 0, bool bdoevnet = false)
        {
            //防呆
            if (ChkSafe != null)
            {
                EM_RES res = ChkSafe((int)GPIO.IO_STA.OUT_OFF);
                if (res != EM_RES.OK)
                {
                    return(res);
                }
            }

            //set off
            io_out.SetOff();
            if (io_out.res != EM_RES.OK)
            {
                return(io_out.res);
            }

            //delay
            if (delay > 0)
            {
                while (delay > 0)
                {
                    Thread.Sleep(delay);
                    if (bdoevnet)
                    {
                        Application.DoEvents();
                    }
                    delay -= 10;
                }
            }
            return(EM_RES.OK);
        }
Example #2
0
        public EM_RES ChkParam()
        {
            if (type == IO_TYPE.NULL)
            {
                res = EM_RES.OK;
            }

            if (m_id < 0)
            {
                if (bShowErrmsg)
                {
                    VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, String.Format("{0} ID({1})异常!", disc, m_id));
                }
                bShowErrmsg = false;
                res         = EM_RES.PARA_ERR;
                return(res);
            }

            if (card == null || !card.isReady)
            {
                if (bShowErrmsg)
                {
                    VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, String.Format("{0} 对应板卡{1}未初始化!", disc, card.disc));
                }
                bShowErrmsg = false;
                res         = EM_RES.PARA_ERR;
                return(res);
            }

            bShowErrmsg = true;
            res         = EM_RES.OK;
            return(res);
        }
Example #3
0
        /// <summary>
        /// 打开气缸,可选等待传感器到位
        /// </summary>
        /// <param name="bquit">取消控制</param>
        /// <param name="waitms">等待时间,等于0时不等待直接返回OK</param>
        /// <param name="bdoevnet">为True时,循环中处理其他系统信息,例如界面刷新等</param>
        /// <returns>在指定时间内感应到对应的传感器则返回OK</returns>
        public EM_RES SetOn(ref bool bquit, int waitms = 0, bool bdoevnet = false)
        {
            //防呆
            if (ChkSafe != null)
            {
                EM_RES res = ChkSafe((int)GPIO.IO_STA.OUT_ON);
                if (res != EM_RES.OK)
                {
                    return(res);
                }
            }

            //set on
            io_out.SetOn();
            if (io_out.res != EM_RES.OK)
            {
                return(io_out.res);
            }

            //wait for sensor
            EM_RES ret = EM_RES.OK;

            if (waitms > 0)
            {
                if (io_sen_on != null)
                {
                    ret = io_sen_on.WaitForSta(ref bquit, io_sen_on_active, (uint)waitms, true, bdoevnet);
                    if (ret != EM_RES.OK)
                    {
                        return(ret);
                    }
                }
                if (io_sen_off != null)
                {
                    ret = io_sen_off.WaitForSta(ref bquit, io_sen_off_active == GPIO.IO_STA.IN_ON ? GPIO.IO_STA.IN_OFF : GPIO.IO_STA.IN_ON, (uint)waitms, true, bdoevnet);
                    if (ret != EM_RES.OK)
                    {
                        return(ret);
                    }
                }

                if (io_sen_on == null && io_sen_off == null)
                {
                    while (waitms > 0)
                    {
                        Thread.Sleep(waitms);
                        if (bdoevnet)
                        {
                            Application.DoEvents();
                        }
                        waitms -= 10;
                    }
                }
            }
            return(ret);
        }
Example #4
0
 private void btn_m_Click(object sender, EventArgs e)
 {
     if (gpio_out != null)
     {
         EM_RES ret = gpio_out.Invert();
         if (ret != EM_RES.OK)
         {
             MessageBox.Show(gpio_out.disc + " IO Operation error!");
         }
         lbl_on.BackColor = (gpio_out.isON ? mOUT_Color : Color.Silver);
     }
 }
Example #5
0
        /// <summary>
        /// 等待到指定状态后立刻返回
        /// </summary>
        /// <param name="bquit">取消控制</param>
        /// <param name="sta_wait_for">指定状态</param>
        /// <param name="timeout_ms">超时控制</param>
        /// <param name="bshow_mgs">显示异常信息</param>
        /// <param name="bdoevnet">为True时,循环中处理其他系统信息,例如界面刷新等</param>
        /// <returns>在指时间内检查到指定状态则返回EM_RES.OK</returns>
        public EM_RES WaitForSta(ref bool bquit, IO_STA sta_wait_for, uint timeout_ms, bool bshow_mgs = true, bool bdoevnet = false)
        {
            //check
            res = ChkParam();
            if (res != EM_RES.OK)
            {
                return(res);
            }

            IO_STA pbitstate = 0;
            int    timeout   = (int)timeout_ms;

            do
            {
                //cancel
                if (bquit == true)
                {
                    return(res = EM_RES.QUIT);
                }

                //check and return
                pbitstate = Status;
                if (pbitstate == sta_wait_for)
                {
                    return(res = EM_RES.OK);
                }
                else if (pbitstate == IO_STA.ERR)
                {
                    res = EM_RES.ERR;
                    VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, String.Format("{0} 等待状态返回异常!", disc));
                    return(res);
                }

                //delay 10ms
                if (timeout > 0)
                {
                    timeout -= 10;
                    if (bdoevnet)
                    {
                        Application.DoEvents();
                    }
                    Thread.Sleep(10);
                }
            } while (timeout > 0);

            if (bshow_mgs)
            {
                VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, String.Format("{0} 等待 {1} 超时({2}ms)!", disc, sta_wait_for == IO_STA.IN_ON ? "ON" : "OFF", timeout_ms));
            }
            return(EM_RES.TIMEOUT);
        }
Example #6
0
        public static EM_RES SetAxToManualSpd(List <AXIS> ax_list)
        {
            EM_RES ret = EM_RES.OK;

            foreach (AXIS ax in ax_list)
            {
                ret = ax.SetToManualHighSpd();
                if (ret != EM_RES.OK)
                {
                    return(ret);
                }
            }
            return(ret);
        }
Example #7
0
        public static EM_RES SetAxToWorkSpd(List <AXIS> ax_list, double persent = 1.0)
        {
            EM_RES ret = EM_RES.OK;

            foreach (AXIS ax in ax_list)
            {
                ret = ax.SetToWorkSpd(persent);
                if (ret != EM_RES.OK)
                {
                    return(ret);
                }
            }
            return(ret);
        }
Example #8
0
        /// <summary>
        /// 取反气缸,可选延迟
        /// </summary>
        /// <param name="delay">等待时间,等于0时不等待直接返回OK</param>
        /// <param name="bdoevnet">为True时,循环中处理其他系统信息,例如界面刷新等</param>
        /// <returns></returns>
        public EM_RES Invert(int delay = 0, bool bdoevnet = false)
        {
            if (io_out == null)
            {
                return(EM_RES.PARA_ERR);
            }

            //防呆
            if (ChkSafe != null)
            {
                EM_RES res = ChkSafe((int)(io_out.isON?GPIO.IO_STA.OUT_OFF: GPIO.IO_STA.OUT_ON));
                if (res != EM_RES.OK)
                {
                    return(res);
                }
            }

            //invert
            io_out.Invert();
            if (io_out.res != EM_RES.OK)
            {
                return(io_out.res);
            }

            //delay
            if (delay > 0)
            {
                while (delay > 0)
                {
                    Thread.Sleep(delay);
                    if (bdoevnet)
                    {
                        Application.DoEvents();
                    }
                    delay -= 10;
                }
            }
            return(EM_RES.OK);
        }
Example #9
0
        /// <summary>
        /// 检查板卡是否在线,否在重连
        /// </summary>
        /// <returns></returns>
        public EM_RES ChkOnline(string filename = "")
        {
            EM_RES res = EM_RES.OK;

#if LEADSHINE
            if (brand == BRAND.LEADSHINE)
            {
                if (isReady)
                {
                    return(EM_RES.OK);
                }
            }
#endif
#if ZMOTION
            if (brand == BRAND.ZMOTION)
            {
                //check on line
                if (((long)handle) == 0)
                {
                    if (bshowmsg)
                    {
                        VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("{0} 掉线!", disc));
                    }
                    bshowmsg = false;
                    return(res = EM_RES.ERR);
                }
                uint val = 0;
                int  ret = zmcaux.ZAux_Direct_GetIn(handle, 0, ref val);
                if (ret != 0)
                {
                    if (bshowmsg)
                    {
                        VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("{0} 掉线!", disc));
                    }
                    if (((long)handle) != 0)
                    {
                        zmcaux.ZAux_Close(handle);
                    }
                    handle   = (IntPtr)0;
                    bshowmsg = false;
                    res      = EM_RES.ERR;
                }
                else if (((long)handle) == 0)
                {
                    bshowmsg = true;
                    res      = Init(ip, filename);
                }
            }
#endif
#if ORIENTALMOTOR
            if (brand == BRAND.ORIENTALMOTOR)
            {
                foreach (AXIS ax in AxList)
                {
                    ax.AzdMotor.ErrorCount = 0;
                }
                if (AZD.Motor.isRs485Ready)
                {
                    return(res = EM_RES.OK);
                }
                else
                {
                    res = Init();
                    return(res);
                    //res = EM_RES.ERR;
                    //return res;
                }
            }
#endif
            return(res);
        }
Example #10
0
        public EM_RES DownLoadFile(string filename = "")
        {
            int ret = 0;

            //if (!isReady) return EM_RES.ERR;
#if LEADSHINE
            if (brand == BRAND.LEADSHINE)
            {
                //download config
                if (filename == "")
                {
                    filename = string.Format("{0}DMC3800_{1}.ini", Path.GetFullPath("..") + "\\syscfg\\", card_id);
                }
                VAR.msg.AddMsg(Msg.EM_MSGTYPE.SYS, String.Format("{0}下载配置,{1}", str_disc, filename));
                ret = LTDMC.dmc_download_configfile((ushort)card_id, filename);
                if (ret != 0)
                {
                    LTDMC.dmc_board_close();
                    isInit = false;
                    VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, String.Format("{0}/id{1},配置失败!Err:0x{2:X8}", disc, card_id, ret));
                    return(EM_RES.ERR);
                }
                else
                {
                    VAR.msg.AddMsg(Msg.EM_MSGTYPE.SYS, String.Format("{0}/id{1},更新配置成功!", disc, card_id));
                }
            }
#endif
#if ZMOTION
            if (brand == BRAND.ZMOTION)
            {
                //下载时,容易引起程序丢失
                //if (filename == "") filename = string.Format("{0}{1}_{2}.bas", Path.GetFullPath("..") + "\\syscfg\\", str_disc, id);
                //VAR.msg.AddMsg(Msg.EM_MSGTYPE.SYS, String.Format("{0}下载配置,{1}", str_disc, filename));
                //ret = zmcaux.ZAux_BasDown(handle, filename);
                //if (ret != 0)
                //{
                //    isInit = false;
                //    zmcaux.ZAux_Close(handle);
                //    handle = (IntPtr)0;
                //    VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("{0} 下载配置失败,Err:{1},{2}", disc, ret, filename));
                //    return EM_RES.ERR;
                //}
                //else
                //{
                //    //set max_spd
                //    foreach (AXIS ax in AxList)
                //    {
                //        zmcaux.ZAux_Direct_SetMaxSpeed(handle, ax.num, (int)(ax.max_spd * ax.pul_per_mm));
                //        if (ret != 0)
                //        {
                //            VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("{0} 配置MAX_SPD失败,Err:{1}", disc, ret));
                //        }
                //    }
                //    VAR.msg.AddMsg(Msg.EM_MSGTYPE.SYS, String.Format("{0}/id{1},更新配置成功!", disc, id));
                //}
            }
#endif
#if ORIENTALMOTOR
            if (brand == BRAND.ORIENTALMOTOR)
            {
                if (!Motor.isRs485Ready)
                {
                    EM_RES res = Init();
                    if (res != EM_RES.OK)
                    {
                        return(res);
                    }
                }
                VAR.msg.AddMsg(Msg.EM_MSGTYPE.SYS, String.Format("{0}下载配置", str_disc));
                foreach (AXIS ax in AxList)
                {
                    UInt32   temp  = 0;
                    UInt32   temp2 = 0;
                    ushort[] dat;
                    bool     bres = true;

                    ////(ZHOME)•运行速度 688/689
                    ////(ZHOME)•加减速 690/691
                    //temp = (ushort)(ax.home_spd * ax.pul_per_mm);
                    //temp2 = (ushort)(ax.tacc / 0.001);
                    //dat = new ushort[4] { (ushort)(temp >> 16), (ushort)(temp & 0XFFFF), (ushort)(temp2 >> 16), (ushort)(temp2 & 0XFFFF) };
                    //bres = ax.AzdMotor.WriteReg(688, dat);
                    //if(!bres)
                    //{
                    //    VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("{0}设置运行速度/加速出错!",ax.disc));
                    //    return EM_RES.ERR;
                    //}
                    ////SLN作为 原点/预置位置 908/909
                    //temp = (ushort)(ax.sln * ax.pul_per_mm);
                    //dat = new ushort[2] { (ushort)(temp >> 16), (ushort)(temp & 0XFFFF) };
                    //bres = ax.AzdMotor.WriteReg(908, dat);
                    //if (!bres)
                    //{
                    //    VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("{0}设置原点出错!", ax.disc));
                    //    return EM_RES.ERR;
                    //}

                    //POS0点数据 1024/1025
                    //POS1点数据 1026/1027
                    temp  = (ushort)(ax.pos0 * ax.pul_per_mm);
                    temp2 = (ushort)(ax.pos1 * ax.pul_per_mm);
                    dat   = new ushort[4] {
                        (ushort)(temp >> 16), (ushort)(temp & 0XFFFF), (ushort)(temp2 >> 16), (ushort)(temp2 & 0XFFFF)
                    };
                    bres = ax.AzdMotor.WriteReg(1024, dat);
                    if (!bres)
                    {
                        VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("{0}设置POS0/POS1出错!", ax.disc));
                        return(EM_RES.ERR);
                    }

                    ////速度No.0 1152/1153
                    ////速度No.1 1154/1155
                    //temp = (ushort)(ax.spd_work * ax.pul_per_mm);
                    //dat = new ushort[4] { (ushort)(temp >> 16), (ushort)(temp & 0XFFFF), (ushort)(temp >> 16), (ushort)(temp & 0XFFFF) };
                    //bres = ax.AzdMotor.WriteReg(1152,dat);
                    //if (!bres)
                    //{
                    //    VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("{0}设置速度0/速度1出错!", ax.disc));
                    //    return EM_RES.ERR;
                    //}

                    ////方式No.0 1280/1281 1-绝对定位
                    ////方式No.1 1282/1283 1-绝对定位
                    //dat = new ushort[4] { 0, 1, 0, 1 };
                    //bres = ax.AzdMotor.WriteReg(1280, dat);
                    //if (!bres)
                    //{
                    //    VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("{0}设置定位方式0/1出错!", ax.disc));
                    //    return EM_RES.ERR;
                    //}

                    ////加减速单位 654/655 0:•kHz/s• 1:•s• 2:•ms / kHz
                    //dat = new ushort[2] { 0,1 };
                    //bres = ax.AzdMotor.WriteReg(654, dat);
                    //if (!bres)
                    //{
                    //    VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("{0}设置加减速单位出错!", ax.disc));
                    //    return EM_RES.ERR;
                    //}

                    ////起动/变速No.0 1536/1537
                    ////起动/变速No.1 1538/1539
                    //temp = (ushort)(ax.tacc/0.001);
                    //dat = new ushort[4] { (ushort)(temp >> 16), (ushort)(temp & 0XFFFF), (ushort)(temp >> 16), (ushort)(temp & 0XFFFF) };
                    //bres = ax.AzdMotor.WriteReg(1536, dat);
                    //if (!bres)
                    //{
                    //    VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("{0}设置加速度出错!", ax.disc));
                    //    return EM_RES.ERR;
                    //}

                    ////停止No.0 1664/1665
                    ////停止No.1 1666/1667
                    //temp = (ushort)(ax.tdec / 0.001);
                    //dat = new ushort[4] { (ushort)(temp >> 16), (ushort)(temp & 0XFFFF), (ushort)(temp >> 16), (ushort)(temp & 0XFFFF) };
                    //bres = ax.AzdMotor.WriteReg(1664, dat);
                    //if (!bres)
                    //{
                    //    VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("{0}设置减速度出错!", ax.disc));
                    //    return EM_RES.ERR;
                    //}
                    return(EM_RES.OK);
                }
            }
#endif
            return(EM_RES.OK);
        }
Example #11
0
        /// <summary>
        /// 初始化板卡。
        /// 如有主次卡之分,请先初始化主卡。关闭则相反,先关从卡再关主卡。
        /// </summary>
        /// <param name="id">卡ID</param>
        /// <param name="maincard_id">主卡ID</param>
        /// <param name="ip">卡IP</param>
        /// <param name="filename">配置文件路径</param>
        /// <returns></returns>
        public EM_RES Init(int card_id = -1, int maincard_id = -1, string ip = "", string filename = "")
        {
            if (isReady)
            {
                return(EM_RES.OK);
            }
            int    ret = 0;
            EM_RES res = EM_RES.OK;

            //update id
            if (card_id >= 0)
            {
                this.card_id = card_id;
            }
            else
            {
                card_id = this.card_id;
            }
            //update ip
            if (ip.Length > 7)
            {
                this.ip = ip;
            }
            else
            {
                ip = this.ip;
            }
            //update maincard_id
            if (maincard_id >= 0)
            {
                this.maincard_id = maincard_id;
            }
            else
            {
                maincard_id = this.maincard_id;
            }

#if LEADSHINE
            if (brand == BRAND.LEADSHINE)
            {
                if (type == TYPE.MOTION)
                {
                    //init card
                    ret = LTDMC.dmc_board_init();
                    if (ret < 0)
                    {
                        VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("{0}ID有重复,请检查确认!0x{1:X8}", disc, ret));
                        return(EM_RES.ERR);
                    }

                    //get card list
                    ushort   cardnum  = 0;
                    ushort[] cardid   = new ushort[64];
                    uint[]   cardtype = new uint[64];
                    ret = LTDMC.dmc_get_CardInfList(ref cardnum, cardtype, cardid);
                    if (ret != 0)
                    {
                        VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("获取{0}列表错误,0x{1:X8}", disc, ret));
                        return(EM_RES.ERR);
                    }

                    //search card list
                    bool bfound = false;
                    for (int n = 0; n < cardnum; n++)
                    {
                        if (card_id == cardid[n])
                        {
                            bfound = true;
                            break;
                        }
                    }
                    if (!bfound)
                    {
                        isInit = false;
                        VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("{0}列表找不到ID为{1}的板卡!", disc, card_id));
                        return(EM_RES.ERR);
                    }

                    //download config
                    res = DownLoadFile(filename);
                    if (res != EM_RES.OK)
                    {
                        return(res);
                    }

                    isInit = true;
                    handle = (IntPtr)1;
                    VAR.msg.AddMsg(Msg.EM_MSGTYPE.SYS, string.Format("{0}初始化成功!", disc));
                    return(EM_RES.OK);
                }
                else if (type == TYPE.CAN_IO)
                {
                    //连接IO卡
                    ret = LTDMC.dmc_set_can_state((ushort)maincard_id, (ushort)card_id, 1, 0);
                    if (ret != 0)
                    {
                        VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("{0}连接失败,Err:0x{1:X8},重新连接...", disc, ret));
                        ret = LTDMC.dmc_set_can_state((ushort)maincard_id, (ushort)card_id, 1, 0);
                        if (ret != 0)
                        {
                            VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("{0}重新连接失败,请确认卡连接是否正确!Err:0x{1:X8}", disc, ret));
                            return(EM_RES.ERR);
                        }
                    }
                    isInit = true;
                    handle = (IntPtr)1;
                    VAR.msg.AddMsg(Msg.EM_MSGTYPE.SYS, string.Format("{0}初始化成功!", disc));
                    return(EM_RES.OK);
                }
#if LEADSHINE_IO
                else if (type == TYPE.IO)
                {
                    ret = IOC0640.ioc_board_init();
                    if (ret > 0)
                    {
                        isInit = true;
                        handle = (IntPtr)1;
                        VAR.msg.AddMsg(Msg.EM_MSGTYPE.SYS, string.Format("{0}初始化成功!", disc));
                        return(EM_RES.OK);
                    }
                    else
                    {
                        IOC0640.ioc_board_close();
                        isInit = false;
                        handle = (IntPtr)0;
                        VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("{0}初始化失败!Err:0x{1:X8}", disc, ret));
                        return(EM_RES.ERR);
                    }
                }
#endif
            }
#endif
#if ZMOTION
            if (brand == BRAND.ZMOTION)
            {
                //check ip
                if (ip.Length < 7)
                {
                    isInit = false;
                    handle = (IntPtr)0;
                    VAR.msg.AddMsg(Msg.EM_MSGTYPE.SYS, string.Format("{0} IP异常,{1}", disc, ip));
                    return(EM_RES.CAM_PARA_ERR);
                }

                VAR.msg.AddMsg(Msg.EM_MSGTYPE.SYS, string.Format("{0} 连接...", disc));
                ////search and open,多网卡时,搜索异常
                //for (int n = 0; n < 10; n++)
                //{
                //    ret = zmcaux.ZAux_SearchEth(ip, 100);
                //    if (ret == 0) break;
                //    Application.DoEvents();
                //}
                ret = 0;
                if (ret == 0)
                {
                    ret = zmcaux.ZAux_OpenEth(ip, out handle);
                    if (ret != 0)
                    {
                        isInit = false;
                        handle = (IntPtr)0;
                        VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("{0}初始化失败,IP={1},Err:{2}", disc, ip, ret));
                        return(EM_RES.ERR);
                    }
                    else
                    {
                        //check param
                        int  ftemp     = 0;
                        bool bdownload = false;
                        foreach (AXIS ax in AxList)
                        {
                            zmcaux.ZAux_Direct_GetMaxSpeed(handle, ax.num, ref ftemp);
                            if (Math.Abs((ax.max_spd * ax.pul_per_mm) - ftemp) > 100)
                            {
                                bdownload = true;
                                break;
                            }
                        }
                        //download config
                        if (bdownload)
                        {
                            res = DownLoadFile(filename);
                            if (res != EM_RES.OK)
                            {
                                return(res);
                            }
                        }

                        isInit = true;
                        VAR.msg.AddMsg(Msg.EM_MSGTYPE.SYS, string.Format("{0}初始化成功!", disc));
                        foreach (AXIS ax in AxList)
                        {
                            ax.Init();
                        }
                        return(EM_RES.OK);
                    }
                }
                else
                {
                    isInit = false;
                    handle = (IntPtr)0;
                    VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("{0}找不到,IP={1}", disc, ip));
                    return(EM_RES.ERR);
                }
            }
#endif
#if ADVANTTECH
            if (brand == BRAND.ADVANTTECH)
            {
                isInit = false;
                VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, "研华库未添加!");
                return(EM_RES.ERR);
            }
#endif
#if ORIENTALMOTOR
            if (brand == BRAND.ORIENTALMOTOR)
            {
                //get config
                if (filename.Length < 3)
                {
                    filename = Path.GetFullPath("..") + "\\syscfg\\ORIENTALMOTOR.ini";
                }
                if (File.Exists(filename))
                {
                    IniFile inf  = new IniFile(filename);
                    int     temp = inf.ReadInteger("COM", "PORT", -1);
                    if (temp >= 0 && temp < 100)
                    {
                        PortName = string.Format("COM{0}", temp);
                    }
                    temp = inf.ReadInteger("COM", "BAUD", -1);
                    if (temp > 0)
                    {
                        Baudrate = temp;
                    }
                }

                if (0 == AZD.Motor.InitRs485(PortName, Baudrate))
                {
                    isInit = true;
                    handle = (IntPtr)1;
                    VAR.msg.AddMsg(Msg.EM_MSGTYPE.SYS, string.Format("{0}初始化成功!", disc));
                    foreach (AXIS ax in AxList)
                    {
                        ax.Init();
                    }
                    return(EM_RES.OK);
                }
                else
                {
                    VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("InitRs485异常,BRAND={0},TYPE={1},Port={2}/{3}", brand, type, PortName, Baudrate));
                    return(EM_RES.ERR);
                }
            }
#endif
            VAR.msg.AddMsg(Msg.EM_MSGTYPE.ERR, string.Format("未定义异常,BRAND={0},TYPE={1}", brand, type));
            return(EM_RES.ERR);
        }
Example #12
0
        public static EM_RES Move(ref bool bquit, ref AXIS ax_x, double xpos, ref AXIS ax_y, double ypos, ref AXIS ax_z, double zpos, ref AXIS ax_r, double rpos, int time_out_ms = 10000, bool bdoevent = false)
        {
            EM_RES ret = EM_RES.OK;

            //start move
            if (ax_x != null)
            {
                ret = ax_x.MoveTo(ref bquit, xpos);
                if (ret != EM_RES.OK)
                {
                    goto MOVE_END;
                }
            }
            if (ax_y != null)
            {
                ret = ax_y.MoveTo(ref bquit, ypos);
                if (ret != EM_RES.OK)
                {
                    goto MOVE_END;
                }
            }
            if (ax_z != null)
            {
                ret = ax_z.MoveTo(ref bquit, zpos);
                if (ret != EM_RES.OK)
                {
                    goto MOVE_END;
                }
            }
            if (ax_r != null)
            {
                ret = ax_r.MoveTo(ref bquit, rpos);
                if (ret != EM_RES.OK)
                {
                    goto MOVE_END;
                }
            }

            //wait
            if (ax_x != null)
            {
                ret = ax_x.WaitForMoveDone(ref bquit, xpos, time_out_ms, bdoevent);
                if (ret != EM_RES.OK)
                {
                    goto MOVE_END;
                }
            }
            if (ax_y != null)
            {
                ret = ax_y.WaitForMoveDone(ref bquit, ypos, time_out_ms, bdoevent);
                if (ret != EM_RES.OK)
                {
                    goto MOVE_END;
                }
            }
            if (ax_z != null)
            {
                ret = ax_z.WaitForMoveDone(ref bquit, zpos, time_out_ms, bdoevent);
                if (ret != EM_RES.OK)
                {
                    goto MOVE_END;
                }
            }
            if (ax_r != null)
            {
                ret = ax_r.WaitForMoveDone(ref bquit, rpos, time_out_ms, bdoevent);
                if (ret != EM_RES.OK)
                {
                    goto MOVE_END;
                }
            }

            return(EM_RES.OK);

MOVE_END:
            if (ax_x != null)
            {
                ax_x.Stop();
            }
            if (ax_y != null)
            {
                ax_y.Stop();
            }
            if (ax_z != null)
            {
                ax_z.Stop();
            }
            if (ax_r != null)
            {
                ax_r.Stop();
            }
            return(ret);
        }
Example #13
0
 /// <summary>
 /// 等待到OFF状态后立刻返回
 /// </summary>
 /// <param name="bquit">取消控制</param>
 /// <param name="timeout_ms">超时控制</param>
 /// <param name="bshow_mgs">显示异常信息</param>
 /// <param name="bdoevnet">为True时,循环中处理其他系统信息,例如界面刷新等</param>
 /// <returns>在指时间内检查到OFF状态则返回EM_RES.OK</returns>
 public EM_RES WaitOFF(ref bool bquit, uint timeout_ms = 3000, bool bshow_mgs = true, bool bdoevnet = false)
 {
     res = WaitForSta(ref bquit, IO_STA.IN_OFF, timeout_ms, bshow_mgs, bdoevnet);
     return(res);
 }