Beispiel #1
0
        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 + "");
            }
        }
Beispiel #2
0
        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)
            {

                
            }


        }
Beispiel #3
0
        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());
                }

            }
        }
Beispiel #4
0
        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;
        }
Beispiel #5
0
        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
        }