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"); } }
//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); }
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; } //} }
internal void AddFanucMac(out int connected, out String ControllerType, out int NoOfAxis, out int CurrentControlAxis, out String ModelType) { connected = 0; ControllerType = ""; NoOfAxis = 0; CurrentControlAxis = 0; ModelType = ""; Focas1.focas_ret retallclibhndl3 = (Focas1.focas_ret)Focas1.cnc_allclibhndl3(ip, port, timeout, out h); if (retallclibhndl3 == Focas1.focas_ret.EW_OK) { Focas1.ODBSYS MacInfo = new Focas1.ODBSYS(); short SysInfoRet = Focas1.cnc_sysinfo(h, MacInfo); if (SysInfoRet == 0) { connected = 1; ControllerType = (MacInfo.cnc_type[0].ToString() + MacInfo.cnc_type[1].ToString()).ToString().Trim(); NoOfAxis = MacInfo.max_axis; ModelType = (MacInfo.mt_type[0].ToString() + MacInfo.mt_type[1].ToString()).ToString().Trim(); //NoOfAxis = Convert.ToInt32(MacInfo.axes.ToString()); CurrentControlAxis = Convert.ToInt32((MacInfo.axes[0].ToString() + MacInfo.axes[1].ToString()).ToString().Trim()); String MacSeries = MacInfo.series.ToString().Trim(); String MacVersion = MacInfo.version.ToString().Trim(); } } }
public string DeleteProgram(string MacInv, string programNo) { string str1 = (string)null; Focas1.focas_ret focasRet = (Focas1.focas_ret)Focas1.cnc_allclibhndl3((object)this.ip, this.port, this.timeout, out this.h); string str2; switch (focasRet) { case Focas1.focas_ret.EW_SOCKET: str1 = "Socket communication error. " + focasRet.ToString(); goto default; case Focas1.focas_ret.EW_NODLL: str1 = "There is no DLL file for each CNC series . " + focasRet.ToString(); goto default; case Focas1.focas_ret.EW_HANDLE: str1 = "Allocation of handle number is failed. " + focasRet.ToString(); goto default; case Focas1.focas_ret.EW_OK: short num1 = Focas1.cnc_delete(this.h, Convert.ToInt16(programNo.Substring(1))); switch (num1) { case -1: str2 = "Data is protected."; break; case 0: str2 = "Success"; break; case 5: str2 = "PROGRAM " + programNo + " doesn't exist."; break; case 7: str2 = "Write protection on CNC side"; break; default: str2 = "ErrorNo." + (object)num1; break; } int num2 = (int)Focas1.cnc_freelibhndl(this.h); break; default: str2 = focasRet.ToString(); break; } return(str2); }
internal void SetMachineUnlock(ushort UnLockDBit, ushort LockDBit) { Focas1.focas_ret retallclibhndl3 = (Focas1.focas_ret)Focas1.cnc_allclibhndl3(ip, port, timeout, out h); //Locking D Bit Parameters var rdpmcdataLockBit = new Focas1.IODBPMC0(); short adr_type = 9; short data_type = 0; ushort s_number = LockDBit; ushort e_number = LockDBit; ushort length = 9; short rdretLock = Focas1.pmc_rdpmcrng(h, adr_type, data_type, s_number, e_number, length, rdpmcdataLockBit); var wrpmcdataLock = rdpmcdataLockBit; wrpmcdataLock.cdata[0] = 0; for (int i = 0; i < 10; i++) { short wrret = Focas1.pmc_wrpmcrng(h, length, wrpmcdataLock); } //UnLocking D Bit Parameters var rdpmcdataUnLockBit = new Focas1.IODBPMC0(); short adr_typeUn = 9; short data_typeUn = 0; ushort s_numberUn = UnLockDBit; ushort e_numberUn = UnLockDBit; ushort lengthUn = 9; short rdretUnLock = Focas1.pmc_rdpmcrng(h, adr_typeUn, data_typeUn, s_numberUn, e_numberUn, lengthUn, rdpmcdataUnLockBit); var wrpmcdataUn = rdpmcdataUnLockBit; wrpmcdataUn.cdata[0] = 1; for (int i = 0; i < 10; i++) { short wrret = Focas1.pmc_wrpmcrng(h, lengthUn, wrpmcdataUn); } Thread.Sleep(2000); //Lock D Bit reverted back to OFF State rdretUnLock = Focas1.pmc_rdpmcrng(h, adr_typeUn, data_typeUn, s_numberUn, e_numberUn, lengthUn, rdpmcdataUnLockBit); var wrpmcdata1 = rdpmcdataUnLockBit; wrpmcdata1.cdata[0] = 0; for (int i = 0; i < 10; i++) { short wrret = Focas1.pmc_wrpmcrng(h, lengthUn, wrpmcdata1); } }
private void btnConnect_Click(object sender, EventArgs e) { Focas1.focas_ret ret = (Focas1.focas_ret)Focas1.cnc_allclibhndl3(textBox1.Text, 8193, 2, out handle); //取得library handle if (ret == Focas1.focas_ret.EW_OK) { btnDisconnect.Enabled = true; btnConnect.Enabled = false; MessageBox.Show("Connect Succuss"); } else { MessageBox.Show("" + ret); } }
//Upload the NC Program to CNC Machine From Remote PC internal string UploadCNCProgram(int pthID, string FilePath1, out int retValueInt) { string retValue = null; //int retStatusInt = 0; //failure. retValueInt = 0; //EW_OK. try { Focas1.focas_ret retallclibhndl3 = (Focas1.focas_ret)Focas1.cnc_allclibhndl3(ip, port, timeout, out FlibHndl); //library handle if (retallclibhndl3 == Focas1.focas_ret.EW_OK) { retValueInt = (int)Focas1.focas_ret.EW_OK; short type = 0; FilePath = FilePath1; var fileStream = new FileStream(FilePath, FileMode.Open, FileAccess.Read); using (StreamReader sr = new StreamReader(fileStream, Encoding.UTF8)) { StringBuilder DataString = new StringBuilder(); while (!sr.EndOfStream) { //read the data line by line into Dictionary, then access it. string line = null; Dictionary <int, string> AllData = new Dictionary <int, string>(); int LineNo = 1; while ((line = sr.ReadLine()) != null) { AllData.Add(LineNo, line + "\n"); LineNo++; } Focas1.focas_ret retncstart = (Focas1.focas_ret)Focas1.cnc_dwnstart3(FlibHndl, type); if (retncstart == Focas1.focas_ret.EW_OK) { retValueInt = (int)Focas1.focas_ret.EW_OK; for (int row = 1; row < AllData.Count; row++) { if (DataString != null) { DataString.Clear(); } if (row == 0) { DataString.Append("\n"); } line = null; int stringSize = DataString.Length; ushort currentLineSize = line != null ? (ushort)line.Length : (ushort)0; while (stringSize + currentLineSize < 250) //current line + old data size < 256 { if (line != null) { DataString.Append(line); //include currentline } stringSize = DataString.Length; line = null; if (AllData.ContainsKey(row)) { line = AllData[row++]; } else // Add "%" at the end of Program. { DataString.Append("%"); break; } currentLineSize = (ushort)line.Length; } row -= 2; //Above whileLoop fails only after more data, so don't consider last row + Increment in the ForLoop so -1 => Total -2. // send cur+-rent data stringSize = DataString.Length; Object Data = DataString; { Focas1.focas_ret retcnc = (Focas1.focas_ret)Focas1.cnc_download3(FlibHndl, ref stringSize, Data); if (retcnc == Focas1.focas_ret.EW_OK) { retValue = "Executed Successfully. " + retcnc.ToString(); retValueInt = (int)Focas1.focas_ret.EW_OK; } else { if (retcnc == Focas1.focas_ret.EW_FUNC) { retValueInt = (int)Focas1.focas_ret.EW_FUNC; retValue = "cnc_dwnstart3 function has not been executed. " + retcnc.ToString(); } else if (retcnc == Focas1.focas_ret.EW_RESET) { retValueInt = (int)Focas1.focas_ret.EW_RESET; retValue = "Reset or stop request. " + retcnc.ToString(); } else if (retcnc == Focas1.focas_ret.EW_LENGTH) { retValueInt = (int)Focas1.focas_ret.EW_LENGTH; retValue = "The size of character string is negative. " + retcnc.ToString(); } else if (retcnc == Focas1.focas_ret.EW_DATA) { retValueInt = (int)Focas1.focas_ret.EW_DATA; retValue = "Data error. " + retcnc.ToString(); } else if (retcnc == Focas1.focas_ret.EW_PROT) { retValueInt = (int)Focas1.focas_ret.EW_PROT; retValue = "Tape memory is write-protected by the CNC parameter setting. " + retcnc.ToString(); } else if (retcnc == Focas1.focas_ret.EW_OVRFLOW) { retValueInt = (int)Focas1.focas_ret.EW_OVRFLOW; retValue = "Make enough free area in CNC memory. " + retcnc.ToString(); } else if (retcnc == Focas1.focas_ret.EW_BUFFER) { retValueInt = (int)Focas1.focas_ret.EW_BUFFER; retValue = "Retry because the buffer is full. " + retcnc.ToString(); } else if (retcnc == Focas1.focas_ret.EW_REJECT) { retValueInt = (int)Focas1.focas_ret.EW_REJECT; retValue = "Downloading is disable in the current CNC status " + retcnc.ToString(); } else if (retcnc == Focas1.focas_ret.EW_ALARM) { retValueInt = (int)Focas1.focas_ret.EW_ALARM; retValue = "Alarm has occurred while downloading. " + retcnc.ToString(); } } retValue = retcnc.ToString(); } } Focas1.focas_ret retncend = (Focas1.focas_ret)Focas1.cnc_dwnend3(FlibHndl); if (retncend == Focas1.focas_ret.EW_OK) { retValueInt = (int)Focas1.focas_ret.EW_OK; retValue = "cnc_dwnend3 executed succesfully " + retncend.ToString(); retValue = "Success"; } else { if (retncend == Focas1.focas_ret.EW_FUNC) { retValueInt = (int)Focas1.focas_ret.EW_FUNC; retValue = "cnc_dwnstart3 function has not been executed. " + retncend.ToString(); } else if (retncend == Focas1.focas_ret.EW_DATA) { retValueInt = (int)Focas1.focas_ret.EW_DATA; retValue = "Data error. " + retncend.ToString(); } else if (retncend == Focas1.focas_ret.EW_OVRFLOW) { retValueInt = (int)Focas1.focas_ret.EW_OVRFLOW; retValue = "Make enough free area in CNC memory. " + retncend.ToString(); } else if (retncend == Focas1.focas_ret.EW_PROT) { retValueInt = (int)Focas1.focas_ret.EW_PROT; retValue = "Tape memory is write-protected by the CNC parameter setting. " + retncend.ToString(); } else if (retncend == Focas1.focas_ret.EW_REJECT) { retValueInt = (int)Focas1.focas_ret.EW_REJECT; retValue = "Downloading is disable in the current CNC status. " + retncend.ToString(); } else if (retncend == Focas1.focas_ret.EW_ALARM) { retValueInt = (int)Focas1.focas_ret.EW_ALARM; retValue = "Alarm has occurred while downloading. " + retncend.ToString(); } } //retValue = retncend.ToString(); } else { if (retncstart == Focas1.focas_ret.EW_BUSY) { retValueInt = (int)Focas1.focas_ret.EW_BUSY; retValue = "Busy. " + retncstart.ToString(); } else if (retncstart == Focas1.focas_ret.EW_ATTRIB) { retValueInt = (int)Focas1.focas_ret.EW_ATTRIB; retValue = "Data type (type) is illegal. " + retncstart.ToString(); } else if (retncstart == Focas1.focas_ret.EW_NOOPT) { retValueInt = (int)Focas1.focas_ret.EW_NOOPT; retValue = "No option. " + retncstart.ToString(); } else if (retncstart == Focas1.focas_ret.EW_PARAM) { retValueInt = (int)Focas1.focas_ret.EW_PARAM; retValue = "CNC parameter error. " + retncstart.ToString(); } else if (retncstart == Focas1.focas_ret.EW_MODE) { retValueInt = (int)Focas1.focas_ret.EW_MODE; retValue = "CNC mode error. " + retncstart.ToString(); } else if (retncstart == Focas1.focas_ret.EW_REJECT) { retValueInt = (int)Focas1.focas_ret.EW_REJECT; retValue = "CNC is machining, so Rejected. " + retncstart.ToString(); } else if (retncstart == Focas1.focas_ret.EW_ALARM) { retValueInt = (int)Focas1.focas_ret.EW_ALARM; retValue = "Alarm State error, reset the alarm on CNC. " + retncstart.ToString(); } else if (retncstart == Focas1.focas_ret.EW_PASSWD) { retValueInt = (int)Focas1.focas_ret.EW_PASSWD; retValue = "Specified CNC data cannot be written because the data is protected.. " + retncstart.ToString(); } } //retValue = retncstart.ToString(); } } Focas1.cnc_freelibhndl(h); } else { if (retallclibhndl3 == Focas1.focas_ret.EW_SOCKET) { retValueInt = (int)Focas1.focas_ret.EW_SOCKET; retValue = "Socket communication error. " + retallclibhndl3.ToString(); } else if (retallclibhndl3 == Focas1.focas_ret.EW_NODLL) { retValueInt = (int)Focas1.focas_ret.EW_NODLL; retValue = "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; retValue = "Allocation of handle number is failed. " + retallclibhndl3.ToString(); } retValue = retallclibhndl3.ToString(); } using (i_facility_shaktiEntities1 redb = new i_facility_shaktiEntities1()) { var RecordToUpdate = redb.tblprogramtransferhistories.Find(pthID); if (RecordToUpdate != null) { RecordToUpdate.ReturnTime = DateTime.Now; RecordToUpdate.ReturnStatus = retValueInt; RecordToUpdate.ReturnDesc = retValue; redb.Entry(RecordToUpdate).State = System.Data.Entity.EntityState.Modified; redb.SaveChanges(); } else { //TextLogFile("Unable to Find Latest Record to update Error/EndTime."); } } Focas1.cnc_freelibhndl(FlibHndl); } catch (Exception e) { retValue += e.ToString(); } return(retValue); }
//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); }
//Get the Program Content from the CNC Machine - Download from CNC Machine internal string GetProgramDataNC(string progno, out String ProgramData) //From CNC Machine { string retStatus = null; ProgramData = null; //ProgramData = new StringBuilder(); Focas1.focas_ret retGPL = (Focas1.focas_ret)Focas1.cnc_allclibhndl3(ip, port, timeout, out h); if (retGPL == Focas1.focas_ret.EW_OK) { ProgramReadError(h, 1); short mainprogno = Convert.ToInt16(progno.Substring(1)); short retUploadstart = Focas1.cnc_upstart(h, mainprogno); // Fanuc Controller 32i/Oi-TD/16i-MB/18i-TB/Oi-MC/Oi-TC/Oi-MD/Oi-MC Slim/21i-TB/310iM Focas1.ODBUP upld = new Focas1.ODBUP(); switch (retUploadstart) { case 0: retStatus = "Success"; short ret = 0; ushort len = 4 + 256; int LoopCount = 0; //System.Threading.Thread.Sleep(3000); while (ret == 0) { ret = Focas1.cnc_upload(h, upld, ref len); int a = upld.data.Length; string retValString = new string(upld.data); if (ret == 10) { len = 256; ret = 0; continue; } else if (ret == 0) { ProgramData += retValString; } else if (ret == 2) { //MessageBox.Show("ret 2 :: Length " + len); } else if (ret == -2) { retStatus = "Error: " + ret; ret = Focas1.cnc_upend3(h); ProgramReadError(h, 0); break; } else { retStatus = "Else :: Error: " + ret; } if (retValString.Contains('%')) { LoopCount++; if (LoopCount >= 2) { String[] Temp = ProgramData.ToString().Split('%'); ProgramData = "%" + Temp[1] + "%"; retStatus = ".Success"; ret = Focas1.cnc_upend3(h); ProgramReadError(h, 0); break; } } else { //retStatus = "Error: " + ret; //MessageBox.Show("Error(cnc_upload4):" + ret); } } ret = Focas1.cnc_upend3(h); ProgramReadError(h, 0); if (LoopCount == 1) { String[] Temp = ProgramData.ToString().Split('%'); ProgramData = "%" + Temp[1] + "%"; } break; case -1: retStatus = "Busy"; break; case 1: retStatus = "Parameter(No.20,22:Input device) is wrong"; break; case 7: retStatus = "Write protected on CNC side"; break; default: retStatus = "cnc_upstart3 :: ErrorNo. :" + retUploadstart; break; } Focas1.cnc_freelibhndl(h); } else { if (retGPL == Focas1.focas_ret.EW_SOCKET) { //retValueInt = (int)Focas1.focas_ret.EW_SOCKET; retStatus = "Socket communication error. " + retGPL.ToString(); } else if (retGPL == Focas1.focas_ret.EW_NODLL) { //retValueInt = (int)Focas1.focas_ret.EW_NODLL; retStatus = "There is no DLL file for each CNC series . " + retGPL.ToString(); } else if (retGPL == Focas1.focas_ret.EW_HANDLE) { //retValueInt = (int)Focas1.focas_ret.EW_HANDLE; retStatus = "Allocation of handle number is failed. " + retGPL.ToString(); } retStatus = retGPL.ToString(); } return(retStatus); }
public string UploadCNCProgram(int pthID, string FilePath1, out int retValueInt) { string str1 = (string)null; retValueInt = 0; try { Focas1.focas_ret focasRet1 = (Focas1.focas_ret)Focas1.cnc_allclibhndl3((object)this.ip, this.port, this.timeout, out this.FlibHndl); switch (focasRet1) { case Focas1.focas_ret.EW_SOCKET: retValueInt = -16; str1 = "Socket communication error. " + focasRet1.ToString(); goto default; case Focas1.focas_ret.EW_NODLL: retValueInt = -15; str1 = "There is no DLL file for each CNC series . " + focasRet1.ToString(); goto default; case Focas1.focas_ret.EW_HANDLE: retValueInt = -8; str1 = "Allocation of handle number is failed. " + focasRet1.ToString(); goto default; case Focas1.EW_OK: retValueInt = 0; short a = 0; this.FilePath = FilePath1; using (StreamReader streamReader = new StreamReader((Stream) new FileStream(this.FilePath, FileMode.Open, FileAccess.Read), Encoding.UTF8)) { StringBuilder stringBuilder = new StringBuilder(); while (!streamReader.EndOfStream) { string str2 = (string)null; Dictionary <int, string> dictionary = new Dictionary <int, string>(); int key1 = 1; string str3; while ((str3 = streamReader.ReadLine()) != null) { dictionary.Add(key1, str3 + "\n"); ++key1; } Focas1.focas_ret focasRet2 = (Focas1.focas_ret)Focas1.cnc_dwnstart3(this.FlibHndl, a); switch (focasRet2) { case Focas1.focas_ret.EW_BUSY: retValueInt = -1; str1 = "Busy. " + focasRet2.ToString(); continue; case Focas1.focas_ret.EW_OK: retValueInt = 0; int num; for (int key2 = 1; key2 < dictionary.Count; key2 = num + 1) { stringBuilder?.Clear(); if (key2 == 0) { stringBuilder.Append("\n"); } string str4 = (string)null; int length1 = stringBuilder.Length; for (ushort index = str4 != null ? (ushort)str4.Length : (ushort)0; length1 + (int)index < 250; index = (ushort)str4.Length) { if (str4 != null) { stringBuilder.Append(str4); } length1 = stringBuilder.Length; str2 = (string)null; if (dictionary.ContainsKey(key2)) { str4 = dictionary[key2++]; } else { stringBuilder.Append("%"); break; } } num = key2 - 2; int length2 = stringBuilder.Length; object b = (object)stringBuilder; Focas1.focas_ret focasRet3 = (Focas1.focas_ret)Focas1.cnc_download3(this.FlibHndl, ref length2, b); switch (focasRet3) { case Focas1.focas_ret.EW_RESET: retValueInt = -2; str1 = "Reset or stop request. " + focasRet3.ToString(); break; case Focas1.focas_ret.EW_OK: str1 = "Executed Successfully. " + focasRet3.ToString(); retValueInt = 0; break; case Focas1.focas_ret.EW_FUNC: retValueInt = 1; str1 = "cnc_dwnstart3 function has not been executed. " + focasRet3.ToString(); break; case Focas1.focas_ret.EW_LENGTH: retValueInt = 2; str1 = "The size of character string is negative. " + focasRet3.ToString(); break; case Focas1.focas_ret.EW_DATA: retValueInt = 5; str1 = "Data error. " + focasRet3.ToString(); break; case Focas1.focas_ret.EW_PROT: retValueInt = 7; str1 = "Tape memory is write-protected by the CNC parameter setting. " + focasRet3.ToString(); break; case Focas1.focas_ret.EW_OVRFLOW: retValueInt = 8; str1 = "Make enough free area in CNC memory. " + focasRet3.ToString(); break; case Focas1.focas_ret.EW_BUFFER: retValueInt = 10; str1 = "Retry because the buffer is full. " + focasRet3.ToString(); break; case Focas1.focas_ret.EW_REJECT: retValueInt = 13; str1 = "Downloading is disable in the current CNC status " + focasRet3.ToString(); break; case Focas1.focas_ret.EW_ALARM: retValueInt = 15; str1 = "Alarm has occurred while downloading. " + focasRet3.ToString(); break; } str1 = focasRet3.ToString(); } Focas1.focas_ret focasRet4 = (Focas1.focas_ret)Focas1.cnc_dwnend3(this.FlibHndl); switch (focasRet4) { case Focas1.focas_ret.EW_OK: retValueInt = 0; //str1 = "cnc_dwnend3 executed succesfully " + focasRet4.ToString(); str1 = "Succesfully"; continue; case Focas1.focas_ret.EW_FUNC: retValueInt = 1; str1 = "cnc_dwnstart3 function has not been executed. " + focasRet4.ToString(); continue; case Focas1.focas_ret.EW_DATA: retValueInt = 5; str1 = "Data error. " + focasRet4.ToString(); continue; case Focas1.focas_ret.EW_PROT: retValueInt = 7; str1 = "Tape memory is write-protected by the CNC parameter setting. " + focasRet4.ToString(); continue; case Focas1.focas_ret.EW_OVRFLOW: retValueInt = 8; str1 = "Make enough free area in CNC memory. " + focasRet4.ToString(); continue; case Focas1.focas_ret.EW_REJECT: retValueInt = 13; str1 = "Downloading is disable in the current CNC status. " + focasRet4.ToString(); continue; case Focas1.focas_ret.EW_ALARM: retValueInt = 15; str1 = "Alarm has occurred while downloading. " + focasRet4.ToString(); continue; default: continue; } case Focas1.focas_ret.EW_ATTRIB: retValueInt = 4; str1 = "Data type (type) is illegal. " + focasRet2.ToString(); continue; case Focas1.focas_ret.EW_NOOPT: retValueInt = 6; str1 = "No option. " + focasRet2.ToString(); continue; case Focas1.focas_ret.EW_PARAM: retValueInt = 9; str1 = "CNC parameter error. " + focasRet2.ToString(); continue; case Focas1.focas_ret.EW_MODE: retValueInt = 12; str1 = "CNC mode error. " + focasRet2.ToString(); continue; case Focas1.focas_ret.EW_REJECT: retValueInt = 13; str1 = "CNC is machining, so Rejected. " + focasRet2.ToString(); continue; case Focas1.focas_ret.EW_ALARM: retValueInt = 15; str1 = "Alarm State error, reset the alarm on CNC. " + focasRet2.ToString(); continue; case Focas1.focas_ret.EW_PASSWD: retValueInt = 17; str1 = "Specified CNC data cannot be written because the data is protected.. " + focasRet2.ToString(); continue; default: continue; } } } int num1 = (int)Focas1.cnc_freelibhndl(this.h); break; default: //str1 = str1;// + focasRet1.ToString(); break; } //using (unitworksccsEntities unitworksccsEntities = new unitworksccsEntities()) //{ // tblprogramtransferhistory entity = unitworksccsEntities.tblprogramtransferhistories.Find((object)pthID); // if (entity != null) // { // entity.ReturnTime = new DateTime?(DateTime.Now); // entity.ReturnStatus = new int?(retValueInt); // entity.ReturnDesc = str1; // unitworksccsEntities.Entry<tblprogramtransferhistory>(entity).State = EntityState.Modified; // unitworksccsEntities.SaveChanges(); // } //} int num2 = (int)Focas1.cnc_freelibhndl(this.FlibHndl); } catch (Exception ex) { str1 += ex.ToString(); } return(str1); }
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); }
public string GetProgramDataNC(string progno, out string ProgramData) { string str1 = (string)null; ProgramData = (string)null; Focas1.focas_ret focasRet = (Focas1.focas_ret)Focas1.cnc_allclibhndl3((object)this.ip, this.port, this.timeout, out this.h); string str2; switch (focasRet) { case Focas1.focas_ret.EW_SOCKET: str1 = "Socket communication error. " + focasRet.ToString(); goto default; case Focas1.focas_ret.EW_NODLL: str1 = "There is no DLL file for each CNC series . " + focasRet.ToString(); goto default; case Focas1.focas_ret.EW_HANDLE: str1 = "Allocation of handle number is failed. " + focasRet.ToString(); goto default; case Focas1.focas_ret.EW_OK: this.ProgramReadError(this.h, 1); short num1 = Focas1.cnc_upstart(this.h, Convert.ToInt16(progno.Substring(1))); Focas1.ODBUP a = new Focas1.ODBUP(); switch (num1) { case -1: str2 = "Busy"; break; case 0: str2 = "Success"; short num2 = 0; ushort b = 260; int num3 = 0; short num4; while (num2 == (short)0) { num2 = Focas1.cnc_upload(this.h, a, ref b); int length = a.data.Length; string source = new string(a.data); if (num2 == (short)10) { b = (ushort)256; num2 = (short)0; } else { if (num2 == (short)0) { ProgramData += source; } else if (num2 != (short)2) { if (num2 == (short)-2) { str2 = "Error: " + (object)num2; num4 = Focas1.cnc_upend3(this.h); this.ProgramReadError(this.h, 0); break; } str2 = "Else :: Error: " + (object)num2; } if (source.Contains <char>('%')) { ++num3; if (num3 >= 2) { string[] strArray = ProgramData.ToString().Split('%'); ProgramData = "%" + strArray[1] + "%"; str2 = ".Success"; num4 = Focas1.cnc_upend3(this.h); this.ProgramReadError(this.h, 0); break; } } } } num4 = Focas1.cnc_upend3(this.h); this.ProgramReadError(this.h, 0); if (num3 == 1) { string[] strArray = ProgramData.ToString().Split('%'); ProgramData = "%" + strArray[1] + "%"; break; } break; case 1: str2 = "Parameter(No.20,22:Input device) is wrong"; break; case 7: str2 = "Write protected on CNC side"; break; default: str2 = "cnc_upstart3 :: ErrorNo. :" + (object)num1; break; } int num5 = (int)Focas1.cnc_freelibhndl(this.h); break; default: str2 = focasRet.ToString(); break; } return(str2); }
internal void setmachinelock(bool LockStatus, ushort LockDBit = 0, ushort MsgDBit = 0, ushort UnLockDBit = 0) { Focas1.focas_ret retallclibhndl3 = (Focas1.focas_ret)Focas1.cnc_allclibhndl3(ip, port, timeout, out h); if (LockStatus) { //UnLocking D Bit Parameters var rdpmcdataUnLockBit = new Focas1.IODBPMC0(); short adr_typeUn = 9; short data_typeUn = 0; ushort s_numberUn = UnLockDBit; ushort e_numberUn = UnLockDBit; ushort lengthUn = 9; short rdretUnLock = Focas1.pmc_rdpmcrng(h, adr_typeUn, data_typeUn, s_numberUn, e_numberUn, lengthUn, rdpmcdataUnLockBit); var wrpmcdataUn = rdpmcdataUnLockBit; wrpmcdataUn.cdata[0] = 0; for (int i = 0; i < 100; i++) { short wrret = Focas1.pmc_wrpmcrng(h, lengthUn, wrpmcdataUn); if (wrret == 0) { break; } } //Locking D Bit Parameters var rdpmcdataLockBit = new Focas1.IODBPMC0(); short adr_type = 9; short data_type = 0; ushort s_number = LockDBit; ushort e_number = LockDBit; ushort length = 9; short rdretLock = Focas1.pmc_rdpmcrng(h, adr_type, data_type, s_number, e_number, length, rdpmcdataLockBit); //IdleMessage D Bit Parameters var rdpmcdataIdleBit = new Focas1.IODBPMC0(); short adr_typeIdle = 9; short data_typeIdle = 0; ushort s_numberIdle = MsgDBit; ushort e_numberIdle = MsgDBit; ushort lengthIdle = 9; short rdretIDLE = Focas1.pmc_rdpmcrng(h, adr_typeIdle, data_typeIdle, s_numberIdle, e_numberIdle, lengthIdle, rdpmcdataIdleBit); //Machine LOCK D Bit var wrpmcdata = rdpmcdataLockBit; wrpmcdata.cdata[0] = 1; for (int i = 0; i < 10; i++) { short wrretLOCK = Focas1.pmc_wrpmcrng(h, length, wrpmcdata); } if (MsgDBit != 0) { //IDLE Message D Bit var wrpmcdataIDLE = rdpmcdataIdleBit; wrpmcdataIDLE.cdata[0] = 1; for (int i = 0; i < 10; i++) { short wrretIDLE = Focas1.pmc_wrpmcrng(h, length, wrpmcdataIDLE); } wrpmcdataIDLE.cdata[0] = 0; for (int i = 0; i < 10; i++) { short wrretIDLE = Focas1.pmc_wrpmcrng(h, length, wrpmcdataIDLE); } } Thread.Sleep(2000); //Lock D Bit reverted back to OFF State rdretLock = Focas1.pmc_rdpmcrng(h, adr_type, data_type, s_number, e_number, length, rdpmcdataLockBit); var wrpmcdata1 = rdpmcdataLockBit; wrpmcdata1.cdata[0] = 0; for (int i = 0; i < 10; i++) { short wrret = Focas1.pmc_wrpmcrng(h, length, wrpmcdata1); } } else { //UnLocking D Bit Parameters var rdpmcdataLockBit = new Focas1.IODBPMC0(); short adr_type = 9; short data_type = 0; ushort s_number = LockDBit; ushort e_number = LockDBit; ushort length = 9; short rdretLock = Focas1.pmc_rdpmcrng(h, adr_type, data_type, s_number, e_number, length, rdpmcdataLockBit); var wrpmcdata1 = rdpmcdataLockBit; wrpmcdata1.cdata[0] = 0; for (int i = 0; i < 100; i++) { short wrret = Focas1.pmc_wrpmcrng(h, length, wrpmcdata1); if (wrret == 0) { break; } } } }