//下載程序的入口點 /// <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); } }
//上傳程序的入口 /// <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); } }
//獲取詳細的錯誤信息 private static short getdtailerr(ushort handle, Fanuc.ODBERR odberr) { return(Fanuc.cnc_getdtailerr(handle, odberr)); }
//下载程序的入口点 /// <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); } }