/// <summary> /// 1 运行 2待机 3报警 4急停 /// </summary> /// <param name="handle"></param> /// <param name="error"></param> /// <returns></returns> private int GetStatus2(ushort handle, out string error) { error = ""; Focas1.ODBST2 statbuf = new Focas1.ODBST2(); short nRet = Focas1.cnc_statinfo2(handle, statbuf); if (nRet != Focas1.EW_OK) { error = $"读取错误!错误代号[{nRet}]"; return(-1); } int iState = 0; if (statbuf.emergency > 0) //急停 1 : EMerGency 2 : ReSET { iState = 4; } else if (statbuf.alarm == 1) //故障 3报警 1 : ALarM 2 : BATtery low { iState = 3; } else if (statbuf.run > 0 ) //运行中 1 : STOP 2 : HOLD 3 : STaRT 4 : MSTR(during retraction and re-positioning of tool retraction and recovery, and operation of JOG MDI) { iState = 1; } else //待机 { iState = 2; } return(iState); }
public void DisConnect() { Service1 main = new Service1(); Focas1.cnc_freelibhndl(flib_Handle); //main.eventLog1.WriteEntry("已終止連線"); }
public static void Connect(string[] args) { // If we didn't provide an IP address, use HSSB, otherwise use Ethernet if (CNCHardware.HasHSSB()) { _ret = Focas1.cnc_allclibhndl(out _handle); } else { string ipaddr = ""; // If we specified an ip address, get it from the args if (args.Length > 0) { ipaddr = args[0]; } _ret = Focas1.cnc_allclibhndl3(ipaddr, 8193, 6, out _handle); } // Write the result to the console if (_ret == Focas1.EW_OK) { Console.WriteLine("We are connected!"); } else { Console.WriteLine("There was an error connecting. Return value: " + _ret); } // Free the Focas handle Focas1.cnc_freelibhndl(_handle); }
private void Form1_FormClosed(object sender, FormClosedEventArgs e) { if (cncHandle != 0) { Focas1.cnc_freelibhndl(cncHandle); } }
//写K地址 private short WritePmcKAddr(ushort nAddr, short nRValue) { ushort _Flibhndl = 0; //建立连接 short ret = Focas1.cnc_allclibhndl3(IP, 8193, 3, out _Flibhndl); if (ret == Focas1.EW_OK) //连接成功 { Focas1.IODBPMC0 pmcdata1 = new Focas1.IODBPMC0(); // for 1 Byte ret = Focas1.pmc_rdpmcrng(_Flibhndl, 7, 0, nAddr, nAddr, 9, pmcdata1); // D data of 1 Byte short value = pmcdata1.cdata[0]; pmcdata1.cdata[0] = Convert.ToByte(nRValue); ret = Focas1.pmc_wrpmcrng(_Flibhndl, 9, pmcdata1); if (ret == 0) { Focas1.cnc_freelibhndl(_Flibhndl); return(ret); } else { Focas1.cnc_freelibhndl(_Flibhndl); throw new Exception("CNC写K地址写入出错" + ret); } } else { throw new Exception("CNC写K地址出错连接失败" + ret); } }
private string WritePmcLong(ushort flib, short adr_type, ushort adr, string data) { int ltemp; bool ret_b = int.TryParse(data, out ltemp); if (ret_b == false) { return("写入PMC信号失败,数据格式错误"); } Focas1.IODBPMC2 buf = new Focas1.IODBPMC2(); buf.ldata = new int[5]; buf.ldata[0] = ltemp; buf.datano_s = (short)adr; buf.datano_e = (short)(adr + 3); buf.type_a = adr_type; buf.type_d = 2; var ret = Focas1.pmc_wrpmcrng(flib, 12, buf); if (ret != 0) { return($"写入PMC信号失败,返回:{ret}"); } return(null); }
private void btnConnect_Click(object sender, EventArgs e) { try { Focas1.focas_ret ret = (Focas1.focas_ret)Focas1.cnc_allclibhndl3("192.168.18.8", 8193, 5, out cncHandle); //¨ú±olibrary handle //Focas1.focas_ret ret = (Focas1.focas_ret)Focas1.cnc_allclibhndl3(textBox_IP.Text, 8193, 5, out cncHandle); //¨ú±olibrary handle //textBox_IP if (ret != Focas1.focas_ret.EW_OK) { this.rdpara.Enabled = false; this.btnFileDown.Enabled = false; this.btnUpload.Enabled = false; throw new Exception("Can't connect to CNC controller!"); } else { this.rdpara.Enabled = true; this.btnFileDown.Enabled = true; this.btnUpload.Enabled = true; btnConnect.Enabled = false; } } catch (Exception ex) { MessageBox.Show(ex.Message, "Message"); } }
/// <summary> /// Read Machine Position Data (MachineAbsolutePosition) /// </summary> /// <param name="axisNo">Axis No</param> private void CallAbsolute(short axisNo) { try { Focas1.ODBAXIS odbAxis = new Focas1.ODBAXIS(); short pAxisNo = (short)(axisNo + 1); focasReturn = Focas1.cnc_absolute2(fanucHandle, pAxisNo, 8, odbAxis); if (focasReturn == EW_OK) { base.SetDictionary(base.AXIS_ABS, axisNo, Convert.ToDouble(odbAxis.data[0]) / 1000); LogHandler.WriteLog(base.division, string.Format("{0} :: CallAbsolute(AxisNo = {2}) Success :: ABS = {1}", this.ToString(), base.AXIS_ABS[axisNo], axisNo)); } else if (focasReturn == EW_SOCKET) { base.isConnect = false; LogHandler.WriteLog(base.division, string.Format("{0} :: CallAbsolute(AxisNo = {1}) Fail :: SocketError", this.ToString(), axisNo)); } else { LogHandler.WriteLog(base.division, string.Format("{0} :: CallAbsolute(AxisNo = {2}) Fail :: ReturnCode = {1}", this.ToString(), focasReturn, axisNo)); } } catch (Exception ex) { LogHandler.WriteLog(base.division, string.Format("{0} :: CallAbsolute(AxisNo = {2}) Exception :: Message = {1}", this.ToString(), ex.Message, axisNo)); } }
/// <summary> /// Read Machine Spindle Loadmeter Data (MachineSpindleLoad) /// </summary> private void CallRdSpMeter() { try { Focas1.ODBSPLOAD odbSpLoad = new Focas1.ODBSPLOAD(); short spindleCount = 1; focasReturn = Focas1.cnc_rdspmeter(fanucHandle, 0, ref spindleCount, odbSpLoad); if (focasReturn == EW_OK) { base.SetDictionary(base.SPINDLE_LOAD, 0, odbSpLoad.spload1.spload.data); LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdSpMeter() Success :: SPINDLE LOAD = {1}", this.ToString(), base.SPINDLE_LOAD[0])); } else if (focasReturn == EW_SOCKET) { base.isConnect = false; LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdSpMeter() Fail :: SocketError", this.ToString())); } else { LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdSpMeter() Fail :: ReturnCode = {1}", this.ToString(), focasReturn)); } } catch (Exception ex) { LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdSpMeter() Exception :: Message = {1}", this.ToString(), ex.Message)); } }
/// <summary> /// Read Machine Spindle RPM Data (MachineSpindle) /// </summary> private void CallActS() { try { Focas1.ODBACT odbAct = new Focas1.ODBACT(); focasReturn = Focas1.cnc_acts(fanucHandle, odbAct); if (focasReturn == EW_OK) { base.SetDictionary(base.SPINDLE, 0, odbAct.data); LogHandler.WriteLog(base.division, string.Format("{0} :: CallActS() Success :: STATUS = {1}", this.ToString(), base.SPINDLE[0])); } else if (focasReturn == EW_SOCKET) { base.isConnect = false; LogHandler.WriteLog(base.division, string.Format("{0} :: CallActS() Fail :: SocketError", this.ToString())); } else { LogHandler.WriteLog(base.division, string.Format("{0} :: CallActS() Fail :: ReturnCode = {1}", this.ToString(), focasReturn)); } } catch (Exception ex) { LogHandler.WriteLog(base.division, string.Format("{0} :: CallActS() Exception :: Message = {1}", this.ToString(), ex.Message)); } }
/// <summary> /// Read Machine Modal Data (M Code, T Code) /// </summary> /// <param name="typeNo">Modal Type No</param> private void CallModal(short typeNo) { try { Focas1.ODBMDL odbMdl = new Focas1.ODBMDL(); focasReturn = Focas1.cnc_modal(fanucHandle, typeNo, 0, odbMdl); if (focasReturn == EW_OK) { base.SetDictionary(base.MODAL_VALUE, typeNo, odbMdl.modal.aux.aux_data); LogHandler.WriteLog(base.division, string.Format("{0} :: CallModal(TypeNo = {2}) Success :: VALUE = {1}", this.ToString(), base.MODAL_VALUE[typeNo], typeNo)); } else if (focasReturn == EW_SOCKET) { base.isConnect = false; LogHandler.WriteLog(base.division, string.Format("{0} :: CallModal(TypeNo = {1}) Fail :: SocketError", this.ToString(), typeNo)); } else { LogHandler.WriteLog(base.division, string.Format("{0} :: CallModal(TypeNo = {2}) Fail :: ReturnCode = {1}", this.ToString(), focasReturn, typeNo)); } } catch (Exception ex) { LogHandler.WriteLog(base.division, string.Format("{0} :: CallModal(TypeNo = {2}) Exception :: Message = {1}", this.ToString(), ex.Message, typeNo)); } }
/// <summary> /// Read Machine Status Data (MachineMode, MachineStatus, MachineAlarmStatus) /// </summary> private void CallStatInfo() { try { Focas1.ODBST odbSt = new Focas1.ODBST(); focasReturn = Focas1.cnc_statinfo(fanucHandle, odbSt); if (focasReturn == EW_OK) { base.MODE = GetDescription(machineType, "MODE", odbSt.aut.ToString()); base.STATUS = GetDescription(machineType, "STATUS", odbSt.run.ToString()); base.ALARM = GetDescription(machineType, "ALARM", odbSt.alarm.ToString()); LogHandler.WriteLog(base.division, string.Format("{0} :: CallStatInfo() Success :: MODE = {1}", this.ToString(), base.MODE)); LogHandler.WriteLog(base.division, string.Format("{0} :: CallStatInfo() Success :: STATUS = {1}", this.ToString(), base.STATUS)); LogHandler.WriteLog(base.division, string.Format("{0} :: CallStatInfo() Success :: ALARM = {1}", this.ToString(), base.ALARM)); } else if (focasReturn == EW_SOCKET) { base.isConnect = false; LogHandler.WriteLog(base.division, string.Format("{0} :: CallStatInfo() Fail :: SocketError", this.ToString())); } else { LogHandler.WriteLog(base.division, string.Format("{0} :: CallStatInfo() Fail :: ReturnCode = {1}", this.ToString(), focasReturn)); } } catch (Exception ex) { LogHandler.WriteLog(base.division, string.Format("{0} :: CallStatInfo() Exception :: Message = {1}", this.ToString(), ex.Message)); } }
/// <summary> /// Read Machine Info Data (MachineType, MachineAxesCount) /// </summary> private void CallSysInfo() { try { Focas1.ODBSYS odbSys = new Focas1.ODBSYS(); focasReturn = Focas1.cnc_sysinfo(fanucHandle, odbSys); if (focasReturn == EW_OK) { machineType = Convert.ToInt32(new string(odbSys.cnc_type)); machineAxesCount = Convert.ToInt32(new string(odbSys.axes)); LogHandler.WriteLog(base.division, string.Format("{0} :: CallSysInfo() Success :: MACHINE TYPE = {1}", this.ToString(), machineType)); LogHandler.WriteLog(base.division, string.Format("{0} :: CallSysInfo() Success :: AXES COUNT = {1}", this.ToString(), machineAxesCount)); } else if (focasReturn == EW_SOCKET) { LogHandler.WriteLog(base.division, string.Format("{0} :: CallSysInfo() Fail :: SocketError", this.ToString())); isConnect = false; } else { LogHandler.WriteLog(base.division, string.Format("{0} :: CallSysInfo() Fail :: ReturnCode = {1}", this.ToString(), focasReturn)); } } catch (Exception ex) { LogHandler.WriteLog(base.division, string.Format("{0} :: CallSysInfo() Exception :: Message = {1}", this.ToString(), ex.Message)); } }
//主程序名称 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 string WritePmcByte(ushort flib, short adr_type, ushort adr, string data) { byte btemp; bool ret_b = byte.TryParse(data, out btemp); if (ret_b == false) { return("写入PMC信号失败,数据格式错误"); } Focas1.IODBPMC0 buf = new Focas1.IODBPMC0(); buf.cdata = new byte[12]; buf.cdata[0] = btemp; buf.datano_s = (short)adr; buf.datano_e = (short)adr; buf.type_a = adr_type; buf.type_d = 0; var ret = Focas1.pmc_wrpmcrng(flib, 9, buf); ret = Focas1.pmc_wrpmcrng(flib, 9, buf); if (ret != 0) { return($"写入PMC信号失败,返回:{ret}"); } return(null); }
/// <summary> /// Read Machine Parameter Data /// </summary> /// <param name="paramNo">Parameter No</param> private void CallRdParam(short paramNo) { try { Focas1.IODBPSD_1 iOdbPsd = new Focas1.IODBPSD_1(); focasReturn = Focas1.cnc_rdparam(fanucHandle, paramNo, 0, 8, iOdbPsd); if (focasReturn == EW_OK) { base.SetDictionary(base.PARAM_VALUE, paramNo, iOdbPsd.ldata); LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdParam(ParamNo = {2}) Success :: VALUE = {1}", this.ToString(), base.PARAM_VALUE[paramNo], paramNo)); } else if (focasReturn == EW_SOCKET) { base.isConnect = false; LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdParam(ParamNo = {1}) Fail :: SocketError", this.ToString(), paramNo)); } else { LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdParam(ParamNo = {2}) Fail :: ReturnCode = {1}", this.ToString(), focasReturn, paramNo)); } } catch (Exception ex) { LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdParam(ParamNo = {2}) Exception :: Message = {1}", this.ToString(), ex.Message, paramNo)); } }
private string WritePmcWord(ushort flib, short adr_type, ushort adr, string data) { short itemp; bool ret_b = short.TryParse(data, out itemp); if (ret_b == false) { return("写入PMC信号失败,数据格式错误"); } Focas1.IODBPMC1 buf = new Focas1.IODBPMC1(); buf.idata = new short[5]; buf.idata[0] = itemp; buf.datano_s = (short)adr; buf.datano_e = (short)(adr + 1); buf.type_a = adr_type; buf.type_d = 1; var ret = Focas1.pmc_wrpmcrng(flib, 10, buf); if (ret != 0) { return($"写入PMC信号失败,返回:{ret}"); } return(null); }
/// <summary> /// Read Machine System Macro Data /// </summary> /// <param name="macroNo">System Macro No</param> private void CallRdMacro(short macroNo) { try { Focas1.ODBM odbM = new Focas1.ODBM(); focasReturn = Focas1.cnc_rdmacro(fanucHandle, macroNo, 10, odbM); if (focasReturn == EW_OK) { base.SetDictionary(base.MACRO_VALUE, macroNo, odbM.mcr_val / Math.Pow((double)10, (double)odbM.dec_val)); LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdMacro(MacroNo = {2}) Success :: VALUE = {1}", this.ToString(), base.MACRO_VALUE[macroNo], macroNo)); } else if (focasReturn == EW_SOCKET) { base.isConnect = false; LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdMacro(MacroNo = {1}) Fail :: SocketError", this.ToString(), macroNo)); } else { LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdMacro(MacroNo = {2}) Fail :: ReturnCode = {1}", this.ToString(), focasReturn, macroNo)); } } catch (Exception ex) { LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdMacro(MacroNo = {2}) Exception :: Message = {1}", this.ToString(), ex.Message, macroNo)); } }
private void btnSetParam_Click(object sender, EventArgs e) { short len = 0; short prmNum = 20; //short type = 25;//11001 //byte[] val = new byte[3] {1,2,3}; byte value = 5; //if((type & 4) == 0) //{ len = 4 + 1;//datano(2 bytes)+type(2 bytes)+cdata(1 byte) //prmData.datano = prmNum; //prmData.type = type; prmDataNoAxis.datano = prmNum; prmDataNoAxis.type = 0;//No axis //if ((type & 3) == 1) //{ //for (int i = 0; i < 3; i++) // prmData.cdatas[i] = val[i]; prmDataNoAxis.cdata = value; //} //Focas1.focas_ret ret = (Focas1.focas_ret)Focas1.cnc_wrparam(cncHandle, len, prmData); Focas1.focas_ret ret = (Focas1.focas_ret)Focas1.cnc_wrparam(cncHandle, len, prmDataNoAxis); if (ret == Focas1.focas_ret.EW_OK) { btnSetParam.Enabled = false; } //} }
/// <summary> /// Connect To Machine Using Library Method /// </summary> public override void Connect() { try { if (!base.isConnect) { focasReturn = Focas1.cnc_allclibhndl3(commInfo.machineIp, commInfo.machinePort, 5, out fanucHandle); if (focasReturn == EW_OK) { LogHandler.WriteLog(base.division, string.Format("{0} :: Connect() Success", this.ToString())); base.isConnect = true; } else { LogHandler.WriteLog(base.division, string.Format("{0} :: Connect() Fail :: ReturnCode = {1}", this.ToString(), focasReturn)); base.isConnect = false; } } } catch (Exception ex) { LogHandler.WriteLog(base.division, string.Format("{0} :: Connect() Exception :: Message = {1}", this.ToString(), ex.Message)); base.isConnect = false; } }
private void btnToolWrite_Click(object sender, EventArgs e) { StringBuilder sbShape = new StringBuilder(); short ret = Focas1.cnc_wrtofs(cncHandle, 1, 1, 8, 1);//ÐÎ×´ XÖá ret = Focas1.cnc_wrtofs(cncHandle, 1, 3, 8, 1); //ÐÎ×´ ZÖá ret = Focas1.cnc_wrtofs(cncHandle, 1, 9, 8, 1); //ÐÎ×´ YÖá ret = Focas1.cnc_wrtofs(cncHandle, 1, 5, 8, 1);//ÐÎ×´ °ë¾¶R ret = Focas1.cnc_wrtofs(cncHandle, 1, 7, 8, 1);//ÐÎ×´ T //Ä¥Ëð²¹³¥¶ÁÈ¡ ret = Focas1.cnc_wrtofs(cncHandle, 1, 0, 8, 1);//Ä¥Ëð XÖá ret = Focas1.cnc_wrtofs(cncHandle, 1, 2, 8, 1);//Ä¥Ëð ZÖá ret = Focas1.cnc_wrtofs(cncHandle, 1, 8, 8, 1);//Ä¥Ëð YÖá ret = Focas1.cnc_wrtofs(cncHandle, 1, 4, 8, 1);//Ä¥Ëð °ë¾¶R ret = Focas1.cnc_wrtofs(cncHandle, 1, 6, 8, 1);//Ä¥Ëð T MessageBox.Show("ÉèÖÃÍê³É"); }
/// <summary> /// Read Machine Program No Data (MachineMainProgramNo, MachineCurrentProgramNo) /// </summary> private void CallRdPrgNum() { try { Focas1.ODBPRO odbPro = new Focas1.ODBPRO(); focasReturn = Focas1.cnc_rdprgnum(fanucHandle, odbPro); if (focasReturn == EW_OK) { base.MAIN_PRG_NO = odbPro.mdata; base.CURRENT_PRG_NO = odbPro.data; LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdPrgNum() Success :: MAIN PRG NO = {1}", this.ToString(), base.MAIN_PRG_NO)); LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdPrgNum() Success :: CURRENT PRG NO = {1}", this.ToString(), base.CURRENT_PRG_NO)); } else if (focasReturn == EW_SOCKET) { base.isConnect = false; LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdPrgNum() Fail :: SocketError", this.ToString())); } else { LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdPrgNum() Fail :: ReturnCode = {1}", this.ToString(), focasReturn)); } } catch (Exception ex) { LogHandler.WriteLog(base.division, string.Format("{0} :: CallRdPrgNum() Exception :: Message = {1}", this.ToString(), ex.Message)); } }
//写M_macro地址 private short WritePmcMacroAddr(short nAddr, int nRValue) { ushort _Flibhndl = 0; //建立连接 short ret = Focas1.cnc_allclibhndl3(IP, 8193, 3, out _Flibhndl); if (ret == Focas1.EW_OK)//连接成功 { ret = Focas1.cnc_wrmacro(_Flibhndl, nAddr, 10, nRValue * 10000, 4); if (ret == 0) { Focas1.cnc_freelibhndl(_Flibhndl); return(ret); } else { Focas1.cnc_freelibhndl(_Flibhndl); throw new Exception("CNC写M_macro地址写入出错" + ret); } } else { throw new Exception("CNC写M_macro地址出错连接失败" + ret); } }
/// <summary> /// Read Machine Program Name Data (MachineCurrentProgramName) /// </summary> private void CallExePrgName() { try { Focas1.ODBEXEPRG odbExePrg = new Focas1.ODBEXEPRG(); focasReturn = Focas1.cnc_exeprgname(fanucHandle, odbExePrg); if (focasReturn == EW_OK) { base.CURRENT_PRG_NAME = new string(odbExePrg.name); LogHandler.WriteLog(base.division, string.Format("{0} :: CallExePrgName() Success :: CURRENT PRG NAME = {1}", this.ToString(), base.CURRENT_PRG_NAME)); } else if (focasReturn == EW_SOCKET) { base.isConnect = false; LogHandler.WriteLog(base.division, string.Format("{0} :: CallExePrgName() Fail :: SocketError", this.ToString())); } else { LogHandler.WriteLog(base.division, string.Format("{0} :: CallExePrgName() Fail :: ReturnCode = {1}", this.ToString(), focasReturn)); } } catch (Exception ex) { LogHandler.WriteLog(base.division, string.Format("{0} :: CallExePrgName() Exception :: Message = {1}", this.ToString(), ex.Message)); } }
/// <summary> /// 获得进给速度 /// </summary> public string GetFeedingSpeed(ushort Flibhndl) { Focas1.ODBACT odbaxis = new Focas1.ODBACT(); short ret = Focas1.cnc_actf(Flibhndl, odbaxis); return(odbaxis.data.ToString()); }
/// <summary> /// DisConnect Machine Using Library Method /// </summary> public override void DisConnect() { try { if (base.isConnect) { focasReturn = Focas1.cnc_freelibhndl(fanucHandle); if (focasReturn == EW_OK) { LogHandler.WriteLog(base.division, string.Format("{0} :: DisConnect() Success", this.ToString())); base.isConnect = false; } else { LogHandler.WriteLog(base.division, string.Format("{0} :: DisConnect() Fail :: ReturnCode = {1}", this.ToString(), focasReturn)); base.isConnect = true; } } } catch (Exception ex) { LogHandler.WriteLog(base.division, string.Format("{0} :: DisConnect() Exception :: Message = {1}", this.ToString(), ex.Message)); base.isConnect = true; } }
public double GetAllAxisAbsolutePositions() { if (_handle == 0) { return(0); } try { Focas1.ODBAXIS _axisPositionMachine = new Focas1.ODBAXIS(); _ret = Focas1.cnc_absolute(_handle, -1, 4 + 4 * Focas1.MAX_AXIS, _axisPositionMachine); if (_ret != Focas1.EW_OK) { return(_ret); } for (int i = 0; i < Focas1.MAX_AXIS; i++) { Console.WriteLine(i.ToString() + " = " + _axisPositionMachine.data[i] / _scale); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } return(0); }
//PMC;adr_type;adr;num public Tuple <short, string> ReadPmcRange(ushort flib, short adr_type, ushort adr, int num, ref int[] data) { if (num > 1000) { return(new Tuple <short, string>(-100, "读取PMC信号错误,读取数量超限")); } if (data.Length < num) { return(new Tuple <short, string>(-100, "读取PMC信号错误,数据存储区域过小")); } Focas1.IODBPMC2 buf = new Focas1.IODBPMC2(); buf.ldata = new int[num]; ushort adr_end = (ushort)(adr + num * 4 - 1); ushort len = (ushort)(8 + 8 * num); var ret = Focas1.pmc_rdpmcrng(flib, adr_type, 2, adr, adr_end, len, buf); if (ret == 0) { Array.Copy(buf.ldata, 0, data, 0, num); // buf.ldata.Copy(data, 0); return(new Tuple <short, string>(0, null)); } return(new Tuple <short, string>(ret, $"读取PMC信号错误,返回:{ret}")); }
//Delete the NC Program from CNC Machine internal string DeleteProgram(String MacInv, string programNo) { string retStatus = null; Focas1.focas_ret retallclibhndl3 = (Focas1.focas_ret)Focas1.cnc_allclibhndl3(ip, port, timeout, out h); if (retallclibhndl3 == Focas1.focas_ret.EW_OK) { short ret; //MessageBox.Show("Inside DeleteMethod"); String ProgCont = null; //GetProgramDataNC(programNo, out ProgCont); //SaveNCProg(ProgCont.ToString(), MacInv, programNo.ToString(), 2); short mainprogno = Convert.ToInt16(programNo.Substring(1)); ret = Focas1.cnc_delete(h, mainprogno); switch (ret) { case 0: retStatus = "Success"; break; case 5: retStatus = "PROGRAM " + programNo + " doesn't exist."; break; case 7: retStatus = "Write protection on CNC side"; break; case -1: retStatus = "Data is protected."; break; default: retStatus = "ErrorNo." + ret; break; } 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(retStatus); }
//释放Handel private bool FreeFocasHandle(out string error) { bool result = true; error = ""; if (_Flibhndl != 0) { try { short ret = Focas1.cnc_freelibhndl(_Flibhndl); //释放连接 if (ret != Focas1.EW_OK) //连接失败 { result = false; error = "释放 Focas 失败. ret=" + ret; } } catch (Exception ex) { result = false; error = "释放 Focas 失败,错误为:" + ex.Message; } } _Flibhndl = 0; return(result); }