C/C++实战002:FANUC开发-NC程序传输

    为了更好的配合python服务器的调用,所以在开发FANUC的时候还是选择了使用C/C++来编写,因为linux没有.NET环境,无法通过Python直接调用c#编写的类文件,这是我写的FANUC-NC程序传输软件,用的是MFC。

 C/C++实战002:FANUC开发-NC程序传输_第1张图片

      利用FANUC提供的接口文档,我们可以使用cnc_allclibhndl3、cnc_dwnstart4、cnc_download4、cnc_dwnend4几个函数来实现我们的文件传输功能。

首先我们要载入头文件,这里我们用到以下几个:

#include "stdafx.h"
#include "MFCApplication2.h"
#include "MFCApplication2Dlg.h"
#include "afxdialogex.h"
#include "Fwlib32.h"

先设计好我们软件样式,工具箱中可以直接找到我们需要的组件,直接拖进来用就可以了

C/C++实战002:FANUC开发-NC程序传输_第2张图片

       接着我们要实现第一个功能,那就是连接设备,这里我们要用到的函数是cnc_allclibhndl3,双击connent进入点击事件,输入以下代码即可实现对设备的连接了。

void CMFCApplication2Dlg::OnBnClickedButton3()
{
	// TODO: 在此添加控件通知处理程序代码
	CString ip;
	GetDlgItem(IDCANCEL)->GetWindowText(ip);
	short ret;
	ret = cnc_allclibhndl3( ip, 8193, 2, &h ) ;
	if(ret!=EW_OK)
	{
		AfxMessageBox("Connent Fail");
		return;
	}
	else
	{
		AfxMessageBox("Connent Success");
	}
}

接着我们要读取文件,点击select进行文件选择,然后将文件路径赋值给fail path 旁的文本框,这样我就获取了文件路径

void CMFCApplication2Dlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码

	BOOL isOpen = TRUE;
	char* filter = "文本(*.nc)|*.nc|所有类型(*.*)|*.*||"; 

	CFileDialog openFileDlg(TRUE, NULL, NULL , OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, filter, NULL);
	INT_PTR result = openFileDlg.DoModal();//是否选中文件,或取消了选择
	if (result==IDOK)
	{
		GetDlgItem(IDC_EDIT1)->SetWindowText(openFileDlg.GetPathName());
	}	
}

最后我们通过文件路径将文件读取并发送至机台,这是方法给出的事例,可以参考,具体的方法我这里不宜发布(谅解)。

The following program registers the following NC program to CNC.

         ;
        M3 S1200 ;
        G0 Z0 ;
        G0 X0 Y0 ;
        G1 F500 X120. Y-30. ;
        M30 ;

#include "fwlib32.h"

short example( void )
{
        char* prg =
                "\n"
                "\n"
                "M3 S1200\n"
                "G0 Z0\n"
                "G0 X0 Y0\n"
                "G1 F500 X120. Y-30.\n"
                "M30\n"
                "%";

        long len, n;
        short ret;

        ret = cnc_dwnstart4( h, 0, "//CNC_MEM/USER/PATH1" ) ;
        if ( ret ) return ( ret ) ;

        len = strlen( prg ) ;
        while ( len > 0 ) {
                n = len ;
                ret = cnc_download4( h, &n, prg ) ;
                if ( ret == EW_BUFFER ) {
                        continue ;
                }
                if ( ret == EW_OK ) {
                        prg += n ;
                        len -= n ;
                }
                if ( ret != EW_OK ) {
                        break ;
                }
        }
        ret = cnc_dwnend4( h ) ;
        return ( ret ) ;
}

我把编译好的程序传在CSDN了,有需求的可以下载用用,Fanuc NC program transmission :  https://download.csdn.net/download/kevinfan2011/10855257

欢迎关注本人的公众号:编程手札,文章也会在公众号更新

你可能感兴趣的:(编程语言C/C++)