public void rdpdfDrive() { Fanuc.ODBPDFDRV odbpdfdrv = new Focas1.ODBPDFDRV(); short ret = Fanuc.cnc_rdpdf_drive(Fanuc.h, odbpdfdrv); if (ret == Fanuc.EW_OK) { listBox1.Items.Clear(); string sodbpdfdrv; short num = odbpdfdrv.max_num;//返回存储器的数量,最大不超过16 listBox1.Items.Add("数量:" + num.ToString()); System.Type type = odbpdfdrv.GetType(); for (int i = 1; i < num + 1; i++) { sodbpdfdrv = "drive" + i; object obj = type.GetField(sodbpdfdrv).GetValue(odbpdfdrv); listBox1.Items.Add(obj.ToString()); } } else { MessageBox.Show(ret + ""); } }
private void GridControl_SelectedItemChanged(object sender, DevExpress.Xpf.Grid.SelectedItemChangedEventArgs e) { try { ListProgram.Items.Clear(); AmAssetMasterN amAssetMasterN = e.NewItem as AmAssetMasterN; amAssetMasterN_temp = amAssetMasterN; FmsAssetCommParam fmsAssetCommParams = new FmsAssetCommParam(); string stra = " ASSET_CODE = " + amAssetMasterN.ASSET_CODE + " AND INTERFACE_TYPE = 1"; fmsAssetCommParams = _FMSClient.UseService(s => s.GetFmsAssetCommParams(" ASSET_CODE = " + amAssetMasterN.ASSET_CODE + " AND INTERFACE_TYPE = 1")).FirstOrDefault(); if (fmsAssetCommParams != null) { IP = fmsAssetCommParams.COMM_ADDRESS; //this.lstbx_CNCProgramPath.Items.Clear(); string ip = IP; ushort Flibhndl = 0; short ret = Focas1.cnc_allclibhndl3(ip, 8193, 3, out Flibhndl); if (ret != Focas1.EW_OK) { Flibhndl = 0; return; } string drive = ""; Focas1.ODBPDFDRV odbpdfdrv = new Focas1.ODBPDFDRV(); ret = Focas1.cnc_rdpdf_drive(Flibhndl, odbpdfdrv); switch (odbpdfdrv.max_num) { case 1: drive = "//" + odbpdfdrv.drive1 + "/";// break; } //this.lbCNCPath.Text = drive;//"//CNC_MEM/" GetProgramDir(drive); foreach (var item in array_Folder) { ListProgram.Items.Add(item.ToString()); //this.lstbx_CNCProgramPath.Items.Add(item.ToString()); } foreach (var item in array_File) { ListProgram.Items.Add(item.ToString()); //this.lstbx_CNCProgramPath.Items.Add(item.ToString()); } } } catch (Exception) { } }
private void BtnRefreshCnc(object sender, RoutedEventArgs e) { ListProgram.Items.Clear(); AmAssetMasterN amAssetMasterN = amAssetMasterN_temp as AmAssetMasterN; FmsAssetCommParam fmsAssetCommParams = new FmsAssetCommParam(); fmsAssetCommParams = _FMSClient.UseService(s => s.GetFmsAssetCommParams(" ASSET_CODE = " + amAssetMasterN.ASSET_CODE + "")).FirstOrDefault(); if (fmsAssetCommParams != null) { IP = fmsAssetCommParams.COMM_ADDRESS; //this.lstbx_CNCProgramPath.Items.Clear(); string ip = IP; ushort Flibhndl = 0; short ret = Focas1.cnc_allclibhndl3(ip, 8193, 3, out Flibhndl); if (ret != Focas1.EW_OK) { Flibhndl = 0; return; } string drive = ""; Focas1.ODBPDFDRV odbpdfdrv = new Focas1.ODBPDFDRV(); ret = Focas1.cnc_rdpdf_drive(Flibhndl, odbpdfdrv); switch (odbpdfdrv.max_num) { case 1: drive = "//" + odbpdfdrv.drive1 + "/";// break; } //this.lbCNCPath.Text = drive;//"//CNC_MEM/" GetProgramDir(drive); foreach (var item in array_Folder) { ListProgram.Items.Add(item.ToString()); //this.lstbx_CNCProgramPath.Items.Add(item.ToString()); } foreach (var item in array_File) { ListProgram.Items.Add(item.ToString()); //this.lstbx_CNCProgramPath.Items.Add(item.ToString()); } } }
private bool DownToCNC(string fileName, bool bSetMainProg = false) { short ret; // Return code string ip = IP; ushort Flibhndl = 0; ret = Focas1.cnc_allclibhndl3(ip, 8193, 3, out Flibhndl); if (ret != Focas1.EW_OK) { Flibhndl = 0; return false; } ret = Focas1.cnc_dwnstart4(Flibhndl, 0, CNCPath); if (ret != Focas1.EW_OK) { return false; } string drive = ""; Focas1.ODBPDFDRV odbpdfdrv = new Focas1.ODBPDFDRV(); ret = Focas1.cnc_rdpdf_drive(Flibhndl, odbpdfdrv); switch (odbpdfdrv.max_num) { case 1: drive = "//" + odbpdfdrv.drive1 + "/";// break; } GetProgramDir(drive); string progName = ""; try { FileStream downfilename = new FileStream(fileName, FileMode.Open, FileAccess.Read); byte[] buf = new byte[257]; // for String of CNC program int len; // Number of character // Send CNC program to CNC while (true) { // Read 256 characters from PC file len = downfilename.Read(buf, 0, 256); #region 解析NC程序名称 if ((bSetMainProg) && (progName == "")) { int iBegin = -1; int iEnd = -1; int index = 0; foreach (byte b in buf) { if (iBegin == -1) //检测开始 { if (b == 0x4F) //O { iBegin = index; } } else //检测完成 { if (b == 0x28) //( { iEnd = index; break; } } index++; } if (iBegin >= 0 && iEnd >= 0) { byte[] progBuf = new byte[iEnd - iBegin]; Array.Copy(buf, iBegin, progBuf, 0, iEnd - iBegin); progName = System.Text.Encoding.Default.GetString(progBuf); } } #endregion // If readed number of character is 0 then break if (len == 0) { break; } // Send program to CNC do { ret = Focas1.cnc_download4(Flibhndl, ref len, buf); } while (ret == 10); // Focas1.focas_ret.EW_BUFFER ; //说明缓存已满或为空,继续尝试 if (ret != Focas1.EW_OK) { //DispError(ret, "cnc_download4()"); ret = Focas1.cnc_dwnend4(Flibhndl); return false; } } // Close PC file downfilename.Close(); // End of download ret = Focas1.cnc_dwnend4(Flibhndl); if (ret != Focas1.EW_OK) { if (ret == 5) { Focas1.ODBERR err = new Focas1.ODBERR(); ret = Focas1.cnc_getdtailerr(Flibhndl, err); switch (err.err_no) { case 1: //A character which is unavailable for NC program is detected. MessageBox.Show("NC程序中存在无效字符!", "程序下载错误", MessageBoxButton.OK, MessageBoxImage.Information); break; case 2: //When TV check is effective, a block which includes odd number of characters(including 'LF' at the end of the block) is detected. MessageBox.Show("当TV检测有效时,一个程序段中的字符数(从紧跟在一个EOB后的代码起到下一个EOB止,包括使用'LF'字符的情况)是奇数!", "程序下载错误", MessageBoxButton.OK, MessageBoxImage.Information); break; case 3: //The registered program count is full. MessageBox.Show("系统中程序已满!", "程序下载错误", MessageBoxButton.OK, MessageBoxImage.Information); break; case 4: //The same program number has already been registered. MessageBox.Show("系统中已经存在相同程序!", "程序下载错误", MessageBoxButton.OK, MessageBoxImage.Information); break; case 5: //The same program number is selected on CNC. MessageBox.Show("相同程序号的程序在CNC侧被选中!", "程序下载错误", MessageBoxButton.OK, MessageBoxImage.Information); break; default: break; } } else { //DispError(ret, "cnc_dwnend4()"); } return false; } MessageBox.Show("下载完成!", "程序下载", MessageBoxButton.OK, MessageBoxImage.Information); #region 刷新CNC program #endregion //if ((bSetMainProg) && (progName != "")) //设置主程序 //{ // ret = Focas1.cnc_pdf_slctmain(Flibhndl, this.lbCNCPath.Text + progName); // if (ret != Focas1.EW_OK) // { // MessageBox.Show("设置主程序失败,错误号" + ret, "自动切换程序", MessageBoxButton.OK, MessageBoxImage.Error); // return false; // } //} } catch (FileNotFoundException) { // If can not open PC file MessageBox.Show("无法打开文件...", "程序下载", MessageBoxButton.OK, MessageBoxImage.Error); return false; } return true; }
private void BtnDeleteCnc(object sender, RoutedEventArgs e) { //删除 if (this.ListProgram.Items.Count <= 0) { MessageBox.Show("路径中无文件!", "程序", MessageBoxButton.OK, MessageBoxImage.Information); return; } if (this.ListProgram.SelectedIndex == -1) { MessageBox.Show("请选中要删除的文件!", "程序", MessageBoxButton.OK, MessageBoxImage.Information); return; } // Delete program string str = ""; // for work // short prognum = 0; // Program number //changebySGL2015.9.24 short ret = 0; // Return code // Get program number from combobox str = (string)ListProgram.SelectedItem; string path = CNCPath.Replace("\0","") + str; if (MessageBox.Show("确定该删除吗?", "程序删除", MessageBoxButton.YesNo, MessageBoxImage.Question) != MessageBoxResult.Yes) { return; } string ip = IP; ushort Flibhndl = 0; ret = Focas1.cnc_allclibhndl3(ip, 8193, 3, out Flibhndl); if (ret != Focas1.EW_OK) { Flibhndl = 0; return; } ret = Focas1.cnc_pdf_del(Flibhndl, path); if (ret != Focas1.EW_OK) { MessageBox.Show("删除失败!", "CNC程序", MessageBoxButton.OK, MessageBoxImage.Information); return; } #region 刷新CNC program // Refresh listbox of CNC program string drive = CNCPath; if (drive == "//CNC_MEM/") { Focas1.ODBPDFDRV odbpdfdrv = new Focas1.ODBPDFDRV(); ret = Focas1.cnc_rdpdf_drive(Flibhndl, odbpdfdrv); switch (odbpdfdrv.max_num) { case 1: drive = "//" + odbpdfdrv.drive1 + "/";// break; } CNCPath = drive; } else { this.ListProgram.Items.Clear(); this.ListProgram.Items.Add("[请点击刷新按钮]"); } GetProgramDir(drive); foreach (var item in array_Folder) { this.ListProgram.Items.Add(item.ToString()); } foreach (var item in array_File) { this.ListProgram.Items.Add(item.ToString()); } #endregion }