//主程序名称 private string GetProgComment(ushort handle, out string error) { error = ""; //获得当前主程序号 Focas1.ODBM macro = new Focas1.ODBM(); short nRet = Focas1.cnc_rdmacro(handle, 4000, 10, macro); if (nRet == Focas1.EW_OK) { Focas1.PRGDIR3 buf1 = new Focas1.PRGDIR3(); double dSmall = macro.dec_val * 1.0; double top_prog = macro.mcr_val / Math.Pow(10.0, dSmall); int ntop_prog = Convert.ToInt32(top_prog); short num_prog = 1; nRet = Focas1.cnc_rdprogdir3(handle, 1, ref ntop_prog, ref num_prog, buf1); if (nRet == Focas1.EW_OK) { return(buf1.dir1.comment); } } error = $"读取错误!错误代号[{nRet}]"; return(""); }
//主程序名称 private static string GetProgComment(string deviceAddress, out string error) { error = ""; //获得当前主程序号 Focas1.ODBM macro = new Focas1.ODBM(); Focas1.PRGDIR3 buf1 = new Focas1.PRGDIR3(); ushort m_handle; short nRet = Focas1.cnc_allclibhndl3(deviceAddress, 8193, 2, out m_handle); if (nRet == Focas1.EW_OK) { nRet = Focas1.cnc_rdmacro(m_handle, 4000, 10, macro); } if (nRet == Focas1.EW_OK) { //**************** double dSmall = macro.dec_val * 1.0; double top_prog = macro.mcr_val / Math.Pow(10.0, dSmall); int ntop_prog = Convert.ToInt32(top_prog); short num_prog = 1; nRet = Focas1.cnc_rdprogdir3(m_handle, 1, ref ntop_prog, ref num_prog, buf1); } if (nRet == Focas1.EW_OK) { Focas1.cnc_freelibhndl(m_handle); //释放连接 return(buf1.dir1.comment); } error = "连接失败"; return(""); }
//Get the Program List from the CNC Machine. public List <ProgramListDet> GetProgramList() //out List<ProgramListDet> PrgDetList { string retStatus = null; List <ProgramListDet> PrgDetList = new List <ProgramListDet>(); Focas1.focas_ret retallclibhndl3 = (Focas1.focas_ret)Focas1.cnc_allclibhndl3(ip, port, timeout, out h); if (retallclibhndl3 == Focas1.focas_ret.EW_OK) { try { int top_prog = 0; short num_prog = 10; Focas1.PRGDIR3 buf = new Focas1.PRGDIR3(); while (num_prog != 0) { short Retredprogdir3 = Focas1.cnc_rdprogdir3(h, 2, ref top_prog, ref num_prog, buf); string Msg = null; switch (Retredprogdir3) { case 0: Msg = "Success"; for (int i = 1; i <= num_prog; i++) { ProgramListDet PLD = new ProgramListDet(); switch (i) { case 1: PLD.ProgName = buf.dir1.comment.ToUpper(); PLD.ProgNo = "O" + buf.dir1.number.ToString(); PLD.ProgSize = buf.dir1.length.ToString(); PLD.ProgDate = buf.dir1.mdate.day + "-" + buf.dir1.mdate.month + "-" + buf.dir1.mdate.year + " " + buf.dir1.mdate.hour + ":" + buf.dir1.mdate.minute; PrgDetList.Add(PLD); //MessageBox.Show("dir1: ProgramNo: " + buf.dir1.number + " Comment:" + buf.dir1.comment + " mDate:" + buf.dir1.mdate); top_prog = buf.dir1.number + 1; break; case 2: PLD.ProgName = buf.dir2.comment.ToUpper(); PLD.ProgNo = "O" + buf.dir2.number.ToString(); PLD.ProgSize = buf.dir2.length.ToString(); PLD.ProgDate = buf.dir2.mdate.day + "-" + buf.dir2.mdate.month + "-" + buf.dir2.mdate.year + " " + buf.dir2.mdate.hour + ":" + buf.dir2.mdate.minute; PrgDetList.Add(PLD); //MessageBox.Show("dir2: ProgramNo: " + buf.dir2.number + " Comment:" + buf.dir2.comment + " Page:" + buf.dir2.page); top_prog = buf.dir2.number + 1; break; case 3: PLD.ProgName = buf.dir3.comment.ToUpper(); PLD.ProgNo = "O" + buf.dir3.number.ToString(); PLD.ProgSize = buf.dir3.length.ToString(); PLD.ProgDate = buf.dir3.mdate.day + "-" + buf.dir3.mdate.month + "-" + buf.dir3.mdate.year + " " + buf.dir3.mdate.hour + ":" + buf.dir3.mdate.minute; PrgDetList.Add(PLD); //MessageBox.Show("dir3: ProgramNo: " + buf.dir3.number + " Comment:" + buf.dir3.comment + " Page:" + buf.dir3.page); top_prog = buf.dir3.number + 1; break; case 4: PLD.ProgName = buf.dir4.comment.ToUpper(); PLD.ProgNo = "O" + buf.dir4.number.ToString(); PLD.ProgSize = buf.dir4.length.ToString(); PLD.ProgDate = buf.dir4.mdate.day + "-" + buf.dir4.mdate.month + "-" + buf.dir4.mdate.year + " " + buf.dir4.mdate.hour + ":" + buf.dir4.mdate.minute; PrgDetList.Add(PLD); //MessageBox.Show("dir4: ProgramNo: " + buf.dir4.number + " Comment:" + buf.dir4.comment + " Page:" + buf.dir4.page); top_prog = buf.dir4.number + 1; break; case 5: PLD.ProgName = buf.dir5.comment.ToUpper(); PLD.ProgNo = "O" + buf.dir5.number.ToString(); PLD.ProgSize = buf.dir5.length.ToString(); PLD.ProgDate = buf.dir5.mdate.day + "-" + buf.dir5.mdate.month + "-" + buf.dir5.mdate.year + " " + buf.dir5.mdate.hour + ":" + buf.dir5.mdate.minute; PrgDetList.Add(PLD); //MessageBox.Show("dir5: ProgramNo: " + buf.dir5.number + " Comment:" + buf.dir5.comment + " mDate:" + buf.dir5.mdate); top_prog = buf.dir5.number + 1; break; case 6: PLD.ProgName = buf.dir6.comment.ToUpper(); PLD.ProgNo = "O" + buf.dir6.number.ToString(); PLD.ProgSize = buf.dir6.length.ToString(); PLD.ProgDate = buf.dir6.mdate.day + "-" + buf.dir6.mdate.month + "-" + buf.dir6.mdate.year + " " + buf.dir6.mdate.hour + ":" + buf.dir6.mdate.minute; PrgDetList.Add(PLD); //MessageBox.Show("dir6: ProgramNo: " + buf.dir6.number + " Comment:" + buf.dir6.comment + " Page:" + buf.dir6.page); top_prog = buf.dir6.number + 1; break; case 7: PLD.ProgName = buf.dir7.comment.ToUpper(); PLD.ProgNo = "O" + buf.dir7.number.ToString(); PLD.ProgSize = buf.dir7.length.ToString(); PLD.ProgDate = buf.dir7.mdate.day + "-" + buf.dir7.mdate.month + "-" + buf.dir7.mdate.year + " " + buf.dir7.mdate.hour + ":" + buf.dir7.mdate.minute; PrgDetList.Add(PLD); //MessageBox.Show("dir7: ProgramNo: " + buf.dir7.number + " Comment:" + buf.dir7.comment + " Page:" + buf.dir7.page); top_prog = buf.dir7.number + 1; break; case 8: PLD.ProgName = buf.dir8.comment.ToUpper(); PLD.ProgNo = "O" + buf.dir8.number.ToString(); PLD.ProgSize = buf.dir8.length.ToString(); PLD.ProgDate = buf.dir8.mdate.day + "-" + buf.dir8.mdate.month + "-" + buf.dir8.mdate.year + " " + buf.dir8.mdate.hour + ":" + buf.dir8.mdate.minute; PrgDetList.Add(PLD); //MessageBox.Show("dir8: ProgramNo: " + buf.dir8.number + " Comment:" + buf.dir8.comment + " Page:" + buf.dir8.page); top_prog = buf.dir8.number + 1; break; case 9: PLD.ProgName = buf.dir9.comment.ToUpper(); PLD.ProgNo = "O" + buf.dir9.number.ToString(); PLD.ProgSize = buf.dir9.length.ToString(); PLD.ProgDate = buf.dir9.mdate.day + "-" + buf.dir9.mdate.month + "-" + buf.dir9.mdate.year + " " + buf.dir9.mdate.hour + ":" + buf.dir9.mdate.minute; PrgDetList.Add(PLD); //MessageBox.Show("dir9: ProgramNo: " + buf.dir9.number + " Comment:" + buf.dir9.comment + " Page:" + buf.dir9.page); top_prog = buf.dir9.number + 1; break; case 10: PLD.ProgName = buf.dir10.comment.ToUpper(); PLD.ProgNo = "O" + buf.dir10.number.ToString(); PLD.ProgSize = buf.dir10.length.ToString(); PLD.ProgDate = buf.dir10.mdate.day + "-" + buf.dir10.mdate.month + "-" + buf.dir10.mdate.year + " " + buf.dir10.mdate.hour + ":" + buf.dir10.mdate.minute; PrgDetList.Add(PLD); //MessageBox.Show("dir10: ProgramNo: " + buf.dir10.number + " Comment:" + buf.dir10.comment + " Page:" + buf.dir10.page); top_prog = buf.dir10.number + 1; break; default: break; } } break; case 2: Msg = "The number of readout (num_prog) is wrong." + Retredprogdir3; break; case 3: Msg = "The start number of program (top_prog) is wrong" + Retredprogdir3; break; case 4: Msg = "Output format (type) is wrong. " + Retredprogdir3; break; case 7: Msg = "Write Operation is Prohibited." + Retredprogdir3; break; default: Msg = "Error No.: " + Retredprogdir3; break; } } } catch (Exception e) { } Focas1.cnc_freelibhndl(h); } else { if (retallclibhndl3 == Focas1.focas_ret.EW_SOCKET) { //retValueInt = (int)Focas1.focas_ret.EW_SOCKET; retStatus = "Socket communication error. " + retallclibhndl3.ToString(); } else if (retallclibhndl3 == Focas1.focas_ret.EW_NODLL) { //retValueInt = (int)Focas1.focas_ret.EW_NODLL; retStatus = "There is no DLL file for each CNC series . " + retallclibhndl3.ToString(); } else if (retallclibhndl3 == Focas1.focas_ret.EW_HANDLE) { //retValueInt = (int)Focas1.focas_ret.EW_HANDLE; retStatus = "Allocation of handle number is failed. " + retallclibhndl3.ToString(); } retStatus = retallclibhndl3.ToString(); } return(PrgDetList); }
public List <ProgramListDet> GetProgramList() { List <ProgramListDet> programListDetList = new List <ProgramListDet>(); Focas1.focas_ret focasRet = (Focas1.focas_ret)Focas1.cnc_allclibhndl3((object)this.ip, this.port, this.timeout, out this.h); switch (focasRet) { case Focas1.focas_ret.EW_SOCKET: string str1 = "Socket communication error. " + focasRet.ToString(); goto default; case Focas1.focas_ret.EW_NODLL: string str2 = "There is no DLL file for each CNC series . " + focasRet.ToString(); goto default; case Focas1.focas_ret.EW_HANDLE: string str3 = "Allocation of handle number is failed. " + focasRet.ToString(); goto default; case Focas1.focas_ret.EW_OK: try { int b = 0; short c = 10; Focas1.PRGDIR3 d = new Focas1.PRGDIR3(); while (c != (short)0) { short num = Focas1.cnc_rdprogdir3(this.h, (short)2, ref b, ref c, d); switch (num) { case 0: for (int index = 1; index <= (int)c; ++index) { ProgramListDet programListDet = new ProgramListDet(); switch (index) { case 1: programListDet.ProgName = d.dir1.comment.ToUpper(); programListDet.ProgNo = "O" + d.dir1.number.ToString(); programListDet.ProgSize = d.dir1.length.ToString(); programListDet.ProgDate = ((int)d.dir1.mdate.day).ToString() + "-" + (object)d.dir1.mdate.month + "-" + (object)d.dir1.mdate.year + " " + (object)d.dir1.mdate.hour + ":" + (object)d.dir1.mdate.minute; programListDetList.Add(programListDet); b = d.dir1.number + 1; break; case 2: programListDet.ProgName = d.dir2.comment.ToUpper(); programListDet.ProgNo = "O" + d.dir2.number.ToString(); programListDet.ProgSize = d.dir2.length.ToString(); programListDet.ProgDate = ((int)d.dir2.mdate.day).ToString() + "-" + (object)d.dir2.mdate.month + "-" + (object)d.dir2.mdate.year + " " + (object)d.dir2.mdate.hour + ":" + (object)d.dir2.mdate.minute; programListDetList.Add(programListDet); b = d.dir2.number + 1; break; case 3: programListDet.ProgName = d.dir3.comment.ToUpper(); programListDet.ProgNo = "O" + d.dir3.number.ToString(); programListDet.ProgSize = d.dir3.length.ToString(); programListDet.ProgDate = ((int)d.dir3.mdate.day).ToString() + "-" + (object)d.dir3.mdate.month + "-" + (object)d.dir3.mdate.year + " " + (object)d.dir3.mdate.hour + ":" + (object)d.dir3.mdate.minute; programListDetList.Add(programListDet); b = d.dir3.number + 1; break; case 4: programListDet.ProgName = d.dir4.comment.ToUpper(); programListDet.ProgNo = "O" + d.dir4.number.ToString(); programListDet.ProgSize = d.dir4.length.ToString(); programListDet.ProgDate = ((int)d.dir4.mdate.day).ToString() + "-" + (object)d.dir4.mdate.month + "-" + (object)d.dir4.mdate.year + " " + (object)d.dir4.mdate.hour + ":" + (object)d.dir4.mdate.minute; programListDetList.Add(programListDet); b = d.dir4.number + 1; break; case 5: programListDet.ProgName = d.dir5.comment.ToUpper(); programListDet.ProgNo = "O" + d.dir5.number.ToString(); programListDet.ProgSize = d.dir5.length.ToString(); programListDet.ProgDate = ((int)d.dir5.mdate.day).ToString() + "-" + (object)d.dir5.mdate.month + "-" + (object)d.dir5.mdate.year + " " + (object)d.dir5.mdate.hour + ":" + (object)d.dir5.mdate.minute; programListDetList.Add(programListDet); b = d.dir5.number + 1; break; case 6: programListDet.ProgName = d.dir6.comment.ToUpper(); programListDet.ProgNo = "O" + d.dir6.number.ToString(); programListDet.ProgSize = d.dir6.length.ToString(); programListDet.ProgDate = ((int)d.dir6.mdate.day).ToString() + "-" + (object)d.dir6.mdate.month + "-" + (object)d.dir6.mdate.year + " " + (object)d.dir6.mdate.hour + ":" + (object)d.dir6.mdate.minute; programListDetList.Add(programListDet); b = d.dir6.number + 1; break; case 7: programListDet.ProgName = d.dir7.comment.ToUpper(); programListDet.ProgNo = "O" + d.dir7.number.ToString(); programListDet.ProgSize = d.dir7.length.ToString(); programListDet.ProgDate = ((int)d.dir7.mdate.day).ToString() + "-" + (object)d.dir7.mdate.month + "-" + (object)d.dir7.mdate.year + " " + (object)d.dir7.mdate.hour + ":" + (object)d.dir7.mdate.minute; programListDetList.Add(programListDet); b = d.dir7.number + 1; break; case 8: programListDet.ProgName = d.dir8.comment.ToUpper(); programListDet.ProgNo = "O" + d.dir8.number.ToString(); programListDet.ProgSize = d.dir8.length.ToString(); programListDet.ProgDate = ((int)d.dir8.mdate.day).ToString() + "-" + (object)d.dir8.mdate.month + "-" + (object)d.dir8.mdate.year + " " + (object)d.dir8.mdate.hour + ":" + (object)d.dir8.mdate.minute; programListDetList.Add(programListDet); b = d.dir8.number + 1; break; case 9: programListDet.ProgName = d.dir9.comment.ToUpper(); programListDet.ProgNo = "O" + d.dir9.number.ToString(); programListDet.ProgSize = d.dir9.length.ToString(); programListDet.ProgDate = ((int)d.dir9.mdate.day).ToString() + "-" + (object)d.dir9.mdate.month + "-" + (object)d.dir9.mdate.year + " " + (object)d.dir9.mdate.hour + ":" + (object)d.dir9.mdate.minute; programListDetList.Add(programListDet); b = d.dir9.number + 1; break; case 10: programListDet.ProgName = d.dir10.comment.ToUpper(); programListDet.ProgNo = "O" + d.dir10.number.ToString(); programListDet.ProgSize = d.dir10.length.ToString(); programListDet.ProgDate = ((int)d.dir10.mdate.day).ToString() + "-" + (object)d.dir10.mdate.month + "-" + (object)d.dir10.mdate.year + " " + (object)d.dir10.mdate.hour + ":" + (object)d.dir10.mdate.minute; programListDetList.Add(programListDet); b = d.dir10.number + 1; break; } } continue; case 2: string str4 = "The number of readout (num_prog) is wrong." + (object)num; continue; case 3: string str5 = "The start number of program (top_prog) is wrong" + (object)num; continue; case 4: string str6 = "Output format (type) is wrong. " + (object)num; continue; case 7: string str7 = "Write Operation is Prohibited." + (object)num; continue; default: string str8 = "Error No.: " + (object)num; continue; } } } catch { } int num1 = (int)Focas1.cnc_freelibhndl(this.h); break; default: focasRet.ToString(); break; } return(programListDetList); }
//读注册程序 private void button8_Click(object sender, EventArgs e) { Fanuc.PRGDIR3 prgdir3 = new Focas1.PRGDIR3(); short a = 2, c = 100;//a:输出type b:指针开始位置 c:程序的总数量 int b = Convert.ToInt16(textBox1.Text); short ret = Fanuc.cnc_rdprogdir3(Fanuc.h, a, ref b, ref c, prgdir3); //dir1包含的数据number编号 length程序大小 comment注释 if (ret == Fanuc.EW_OK) { string sprgdir3 = "dir"; string sprgdir3_data = "number"; string sprgdir3_data2 = "length"; string sprgdir3_data3 = "comment"; string sprgdir3_data4 = "mdate"; string sprgdir3_data5 = "year"; string sprgdir3_data6 = "month"; string sprgdir3_data7 = "day"; string sprgdir3_data8 = "hour"; string sprgdir3_data9 = "minute"; if (ret == Fanuc.EW_OK) { //处理显示的数据 listcnc_rdprogdir2.Items.Clear(); listcnc_rdprogdir2.Items.Add("合计:" + c); listcnc_rdprogdir2.Items.Add("程序号(个)|大小(Kbyte)|时间 |注释()"); System.Type type = prgdir3.GetType(); //|2016/5/25 24:24 for (int j = 1; j < c + 1; j++) { sprgdir3 = "dir" + j; FieldInfo fieidinfo = type.GetField(sprgdir3); object ob = fieidinfo.GetValue(prgdir3); System.Type typeob = ob.GetType(); string ncNumber = typeob.GetField(sprgdir3_data).GetValue(ob).ToString().PadLeft(4, '0'); ncNumber = ncNumber.PadRight(12, ' '); double temp = Convert.ToDouble(typeob.GetField(sprgdir3_data2).GetValue(ob).ToString()); temp = temp / 1024.0 + 0.5; if (temp < 1) { temp += 0.5; } string ncLength = ((int)temp).ToString(); ncLength = ncLength.PadRight(13, ' '); object ob1 = typeob.GetField(sprgdir3_data4).GetValue(ob); System.Type tyob1 = ob1.GetType(); string year = tyob1.GetField(sprgdir3_data5).GetValue(ob1).ToString().PadLeft(4, '0'); string month = tyob1.GetField(sprgdir3_data6).GetValue(ob1).ToString().PadLeft(2, '0'); string day = tyob1.GetField(sprgdir3_data7).GetValue(ob1).ToString().PadLeft(2, '0'); string hour = tyob1.GetField(sprgdir3_data8).GetValue(ob1).ToString().PadLeft(2, '0'); string minute = tyob1.GetField(sprgdir3_data9).GetValue(ob1).ToString().PadLeft(2, '0'); string nctime = year + "/" + month + "/" + day + " " + hour + ":" + minute; string ncComment = typeob.GetField(sprgdir3_data3).GetValue(ob).ToString(); string all = ncNumber + "|" + ncLength + "|" + nctime + "|" + ncComment; listcnc_rdprogdir2.Items.Add(all); } } } }