| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416 | 
							- using IMCS.Device.FanucBase;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using YG.Device;
 
- using static IMCS.Device.FanucBase.Focas1;
 
- namespace IMCS.Device
 
- {
 
-     public class Fanuc : Focas1
 
-     {
 
-         //下载程序  5-27
 
-         //开始
 
-         private static short dwnstart(ushort handle, short type)
 
-         {
 
-             return Fanuc.cnc_dwnstart3(handle, type);
 
-         }
 
-         //结束
 
-         private static short dwnend(ushort handle)
 
-         {
 
-             return Fanuc.cnc_dwnend3(handle);
 
-         }
 
-         //下载
 
-         private static short dwnload(ushort handle, ref int datalength, string data)
 
-         {
 
-             //开始下载程序  datalength将会被返回,实际的输出的字符数量
 
-             return Fanuc.cnc_download3(handle, ref datalength, data);
 
-         }
 
-         //获取详细的错误信息
 
-         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;
 
-             }
 
-         }
 
-         //下载程序  5-27
 
-         //上传程序 5-28
 
-         //开始
 
-         private static short upstart(ushort handle, short type, int startno, int endno)
 
-         {
 
-             return cnc_upstart3(handle, type, startno, endno);
 
-         }
 
-         //上传
 
-         private static short uplod(ushort handle, int length, char[] databuf)
 
-         {
 
-             return cnc_upload3(handle, ref length, databuf);
 
-         }
 
-         //结束
 
-         private static short upend(ushort handle)
 
-         {
 
-             return cnc_upend3(handle);
 
-         }
 
-         //上传程序的入口
 
-         /// <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;
 
-             }
 
-         }
 
-         //上传程序 5-28
 
-         //根据alm_grp 编号 返回 提示内容 简
 
-         public static string getalmgrp(short no)
 
-         {
 
-             string ret = "";
 
-             switch (no)
 
-             {
 
-                 case 0:
 
-                     ret = "SW";
 
-                     break;
 
-                 case 1:
 
-                     ret = "PW";
 
-                     break;
 
-                 case 2:
 
-                     ret = "IO";
 
-                     break;
 
-                 case 3:
 
-                     ret = "PS";
 
-                     break;
 
-                 case 4:
 
-                     ret = "OT";
 
-                     break;
 
-                 case 5:
 
-                     ret = "OH";
 
-                     break;
 
-                 case 6:
 
-                     ret = "SV";
 
-                     break;
 
-                 case 7:
 
-                     ret = "SR";
 
-                     break;
 
-                 case 8:
 
-                     ret = "MC";
 
-                     break;
 
-                 case 9:
 
-                     ret = "SP";
 
-                     break;
 
-                 case 10:
 
-                     ret = "DS";
 
-                     break;
 
-                 case 11:
 
-                     ret = "IE";
 
-                     break;
 
-                 case 12:
 
-                     ret = "BG";
 
-                     break;
 
-                 case 13:
 
-                     ret = "SN";
 
-                     break;
 
-                 case 14:
 
-                     ret = "reserved";
 
-                     break;
 
-                 case 15:
 
-                     ret = "EX";
 
-                     break;
 
-                 case 19:
 
-                     ret = "PC";
 
-                     break;
 
-                 default:
 
-                     ret = "Not used";
 
-                     break;
 
-             }
 
-             return ret;
 
-         }
 
-         //根据alm_grp 编号 返回 提示内容 简
 
-         //2016-6-2 根据地址码和地址号,返回完整的显示信息
 
-         public static string getpmcadd(short a, ushort b)
 
-         {
 
-             string tempa = "";
 
-             switch (a)
 
-             {
 
-                 case 0:
 
-                     tempa = "G";
 
-                     break;
 
-                 case 1:
 
-                     tempa = "F";
 
-                     break;
 
-                 case 2:
 
-                     tempa = "Y";
 
-                     break;
 
-                 case 3:
 
-                     tempa = "X";
 
-                     break;
 
-                 case 4:
 
-                     tempa = "A";
 
-                     break;
 
-                 case 5:
 
-                     tempa = "R";
 
-                     break;
 
-                 case 6:
 
-                     tempa = "T";
 
-                     break;
 
-                 case 7:
 
-                     tempa = "K";
 
-                     break;
 
-                 case 8:
 
-                     tempa = "C";
 
-                     break;
 
-                 case 9:
 
-                     tempa = "D";
 
-                     break;
 
-                 default:
 
-                     tempa = "n";
 
-                     break;
 
-             }
 
-             string tempb = b.ToString().PadLeft(4, '0');
 
-             return tempa + tempb;
 
-         }
 
-         //2016-6-2 根据地址码和地址号,返回完整的显示信息
 
-     }
 
-     /// <summary>
 
-     /// 发那科
 
-     /// </summary>
 
-     public class DeviceFanucHandle
 
-     {
 
-         public bool IsOn { get; set; }
 
-         public ushort h;
 
-         public DeviceFanucHandle(string ip, int port, int outtime = 10)
 
-         {
 
-             int ret = Fanuc.cnc_allclibhndl3(ip, Convert.ToUInt16(port), outtime, out h);
 
-             if (ret == Fanuc.EW_OK)
 
-             {
 
-                 IsOn = true;
 
-                 YG.Log.Instance.WriteLogAdd($"Fanuc连接成功--->{DateTime.Now}");
 
-             }
 
-             else
 
-             {
 
-                 IsOn = false;
 
-                 YG.Log.Instance.WriteLogAdd($"Fanuc连接失败--->{DateTime.Now}");
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 关闭连接
 
-         /// </summary>
 
-         /// <returns></returns>
 
-         public bool Fanuc_Close()
 
-         {
 
-             bool result = false;
 
-             if (IsOn)
 
-             {
 
-                 int ret = Fanuc.cnc_freelibhndl(h);
 
-                 if (ret == Fanuc.EW_OK)
 
-                 {
 
-                     YG.Log.Instance.WriteLogAdd("断开连接成功!");
 
-                     result = true;
 
-                 }
 
-                 else
 
-                 {
 
-                     YG.Log.Instance.WriteLogAdd($"{ret}--->断开连接失败-->>{DateTime.Now}");
 
-                 }
 
-             }
 
-             return result;
 
-         }
 
-        /// <summary>
 
-        /// 读取正在执行的程序名称
 
-        /// </summary>
 
-        /// <returns></returns>
 
-         public bool Fanuc_ReadCurrentProc()
 
-         {
 
-             bool result = false;
 
-             ODBEXEPRG oDBEXEPRG = new ODBEXEPRG();
 
-             short ret = Fanuc.cnc_exeprgname(h, oDBEXEPRG);
 
-             if (ret == Fanuc.EW_OK)
 
-             {
 
-                 YG.Log.Instance.WriteLogAdd("成功读取当前正在执行的程序名称!");
 
-                 result = true;
 
-             }
 
-             else
 
-             {
 
-                 YG.Log.Instance.WriteLogAdd($"{ret}--->读取当前正在执行的程序名称失败-->>{DateTime.Now}");
 
-             }
 
-             return result;
 
-         }
 
-         /// <summary>
 
-         /// 读取当前机床刀具信息
 
-         /// </summary>
 
-         /// <returns></returns>
 
-         public bool Fanuc_ReadTool()
 
-         {
 
-             bool result = false;
 
-             get_tool_life();
 
-             return result;
 
-         }
 
-         /// <summary>
 
-         /// 读取获得刀片的有关信息
 
-         /// </summary>
 
-         private void get_tool_life()//
 
-         {
 
-             Fanuc.ODBTLIFE5 tool = new Focas1.ODBTLIFE5();//读取刀片组的序号
 
-             Fanuc.ODBTLIFE2 tool1 = new Focas1.ODBTLIFE2();//
 
-             Fanuc.ODBTLIFE3 tool2 = new Focas1.ODBTLIFE3();//刀具的数量
 
-             Fanuc.ODBTG btg = new Focas1.ODBTG();
 
-             Fanuc.ODBUSEGRP grp = new Focas1.ODBUSEGRP();
 
-             int m = 2;
 
-             //读取刀具寿命管理数据
 
-             Fanuc.cnc_rdgrpid2(h, m, tool);
 
-             int group_numer = tool.data;
 
-             int all = Fanuc.cnc_rdngrp(h, tool1);//刀片组的全部数量
 
-             short b = Convert.ToInt16(group_numer);
 
-             Fanuc.cnc_rdntool(h, b, tool2);//刀具的数量
 
-             Fanuc.cnc_rdlife(h, b, tool2);//刀具寿命
 
-             Fanuc.cnc_rdcount(h, b, tool2);//刀具计时器
 
-             Fanuc.cnc_rdtoolgrp(h, 2, 20 + 20 * 1, btg);//根据刀组号读出所有信息,很重要;
 
-             Fanuc.cnc_rdtlusegrp(h, grp);//读出正在使用的到组号;
 
-            System.Console.WriteLine("刀片组号:" + group_numer);
 
-            System.Console.WriteLine("type:" + tool.type);
 
-            System.Console.WriteLine("刀片组的全部数量" + all);
 
-            System.Console.WriteLine("刀片号:" + tool2.data);
 
-            System.Console.WriteLine("刀片组号;" + group_numer + "   寿命:" + tool2.data);
 
-            System.Console.WriteLine("刀片组号;" + group_numer + "   寿命计时:" + tool2.data);
 
-         }
 
-      
 
-     }
 
- }
 
 
  |