コード例 #1
0
ファイル: Fanuc.cs プロジェクト: purplewish07/FOCAS_API_DEMO
        //下載程序的入口點
        /// <summary>
        /// 向CNC下載指定類型的程序
        /// </summary>
        /// <param name="handle">句柄</param>
        /// <param name="type">程序類型</param>
        /// <param name="data">程序的內容</param>
        /// <param name="odberr">保存返回錯誤信息的詳細內容,為null不返回</param>
        /// <returns>錯誤碼</returns>
        public static short download(ushort handle, short type, string data, Fanuc.ODBERR odberr)
        {
            int   datalength = data.Length;
            short ret        = dwnstart(handle, type);

            if (ret == 0)
            {
                int olddata = datalength;
                while (true)
                {
                    ret = dwnload(handle, ref datalength, data);
                    //說明緩存已滿或為空,繼續嘗試
                    if (ret == (short)Fanuc.focas_ret.EW_BUFFER)
                    {
                        continue;
                    }
                    if (ret == Fanuc.EW_OK)
                    {
                        //說明當前下載完成,temp記錄剩餘下載量
                        int temp = olddata - datalength;
                        if (temp <= 0)
                        {
                            break;
                        }
                        else
                        {
                            data       = data.Substring(datalength, temp);
                            datalength = temp; olddata = temp;
                        }
                    }
                    else
                    {
                        //下載出現錯誤,解析出具體的錯誤信息
                        if (odberr != null)
                        {
                            getdtailerr(handle, odberr);
                        }
                        //下載出錯
                        break;
                    }
                }
                //判斷是哪裡出的問題
                if (ret == 0)
                {
                    ret = dwnend(handle);
                    //結束下載出錯
                    return(ret);
                }
                else
                {
                    dwnend(handle);
                    //下載出錯
                    return(ret);
                }
            }
            else
            {
                dwnend(handle);
                //開始下載出錯
                return(ret);
            }
        }
コード例 #2
0
ファイル: Fanuc.cs プロジェクト: purplewish07/FOCAS_API_DEMO
        //上傳程序的入口
        /// <summary>
        /// 根據程序號讀取指定程序
        /// </summary>
        /// <param name="handle">句柄</param>
        /// <param name="type">類型</param>
        /// <param name="no">程序號</param>
        /// <param name="odberr">詳細錯誤內容,null不返回</param>
        /// <param name="data">返回的程序內容</param>
        /// <returns>錯誤碼</returns>
        public static short upload(ushort handle, short type, int no, ref string data, Fanuc.ODBERR odberr)
        {
            int   startno = no; int endno = no;
            int   length = 256; char[] databuf = new char[256];
            short ret = upstart(handle, type, startno, endno);

            if (ret == Fanuc.EW_OK)
            {
                string temp = "";
                while (true)
                {
                    //上傳
                    ret  = uplod(handle, length, databuf);
                    temp = new string(databuf);
                    int one = temp.Length;
                    if (ret == (short)Fanuc.focas_ret.EW_BUFFER)
                    {
                        continue;
                    }
                    if (ret == Fanuc.EW_OK)
                    {
                        temp  = temp.Replace("\0", "");
                        data += temp;
                        string lastchar = temp.Substring(temp.Length - 1, 1);
                        if (lastchar == "%")
                        {
                            break;
                        }
                    }
                    else
                    {
                        //下載出現錯誤,解析出具體的錯誤信息
                        if (odberr != null)
                        {
                            getdtailerr(handle, odberr);
                        }
                        //下載出錯
                        break;
                    }
                }
                //判斷是哪裡出的問題
                if (ret == 0)
                {
                    ret = upend(handle);
                    //結束上傳出錯
                    return(ret);
                }
                else
                {
                    upend(handle);
                    //上傳出錯
                    return(ret);
                }
            }
            else
            {
                //開始出錯
                upend(handle);
                return(ret);
            }
        }
コード例 #3
0
ファイル: Fanuc.cs プロジェクト: purplewish07/FOCAS_API_DEMO
 //獲取詳細的錯誤信息
 private static short getdtailerr(ushort handle, Fanuc.ODBERR odberr)
 {
     return(Fanuc.cnc_getdtailerr(handle, odberr));
 }
コード例 #4
0
        //下载程序的入口点
        /// <summary>
        /// 向CNC下载指定类型的程序
        /// </summary>
        /// <param name="handle">句柄</param>
        /// <param name="type">程序类型</param>
        /// <param name="data">程序的内容</param>
        /// <param name="odberr">保存返回错误信息的详细内容,为null不返回</param>
        /// <returns>错误码</returns>
        public static short download(ushort handle, short type, string data, Fanuc.ODBERR odberr)
        {
            int   datalength = data.Length;
            short ret        = dwnstart(handle, type);

            if (ret == 0)
            {
                int olddata = datalength;
                while (true)
                {
                    ret = dwnload(handle, ref datalength, data);
                    //说明缓存已满或为空,继续尝试
                    if (ret == (short)Fanuc.focas_ret.EW_BUFFER)
                    {
                        continue;
                    }
                    if (ret == Fanuc.EW_OK)
                    {
                        //说明当前下载完成,temp记录剩余下载量
                        int temp = olddata - datalength;
                        if (temp <= 0)
                        {
                            break;
                        }
                        else
                        {
                            data       = data.Substring(datalength, temp);
                            datalength = temp; olddata = temp;
                        }
                    }
                    else
                    {
                        //下载出现错误,解析出具体的错误信息
                        if (odberr != null)
                        {
                            getdtailerr(handle, odberr);
                        }
                        //下载出错
                        break;
                    }
                }
                //判断是哪里出的问题
                if (ret == 0)
                {
                    ret = dwnend(handle);
                    //结束下载出错
                    return(ret);
                }
                else
                {
                    dwnend(handle);
                    //下载出错
                    return(ret);
                }
            }
            else
            {
                dwnend(handle);
                //开始下载出错
                return(ret);
            }
        }