C#实战029:FANUC开发-动态链接库Dll使用

 时间:2026-02-13 18:58:14

1、    在c#中我们平时引用动态链接库Dll都在是在项目名上右击选择“添加应用”的方式将动态链接库Dll导入项目中,但是FANUC提供的动态链接库Dll无法直接这样导入,因为他没有托管到公共语言运行库,所以无法直接调用,这是我们就要用到DllImport来将其导入项目了。

C#实战029:FANUC开发-动态链接库Dll使用

2、DllImport默认在项目的exe所在目录查找Dll文件,也就是…\bin\Debug\目录下,所以我们只要将需要使用的Dll事先拷贝到该目录。

C#实战029:FANUC开发-动态链接库Dll使用

3、然后添加空间名引用:using System.Runtime.InteropServices;

DllImport用于指定FANUC提供的动态链接库Dll位置

在类中添加(DllImport只能放置在方法声明上):[DllImport("Fwlib32.dll", EntryPoint = "cnc_allclibhndl3")]

4、DllImport有6个参数,自己根据需求设置参数:

1、CallingConvention参数:指入口点的调用,如果未指定则使用默认值CallingConvention.Winapi;

2、CharSet参数:指用在入口点的字符集。如果未指定则使用默认值CharSet.Auto;

3、EntryPoint参数:指声明的方法在dll中入口点的名称,如果未指定则使用方法本身的名称;

4、ExactSpelling参数:指EntryPoint是否必须与指示的入口点的拼写完全匹配。如果未指定则使用默认值false;

5、PreserveSig参数:指方法的签名应被应当被保留还是被转换,如果未指定则使用默认值false;

6、SetLastError参数:指示方法是否保留Win32上的错误,如果未指定则使用默认值false。

5、引用了FANUC提供的动态链接库Dll,接下来就是使用该Dll了,用DllImport修饰的方法必须用static extern修饰符定义该方法:

/* allocate library handle 3 */

[DllImport("FWLIB32.dll", EntryPoint="cnc_allclibhndl3")]

public static extern short cnc_allclibhndl3( [In,MarshalAs(UnmanagedType.AsAny)] Object ip,

    ushort port,int timeout, out ushort FlibHndl);

C#实战029:FANUC开发-动态链接库Dll使用

6、 有了该方法我们就可以定义对应的参数并赋值给该方法来获取我们需要的参数,在文档中有说明相应的参数含义,我们根据文档定义好相应的参数:

C#实战029:FANUC开发-动态链接库Dll使用

7、将参数传入函数Focas1.cnc_allclibhndl3函数中,并获得返回值,文档Return Status of Data Window Functions中给我们提供了各种返回参数的含义,可以拿来对比。

C#实战029:FANUC开发-动态链接库Dll使用

8、public ushort h;//返回的值

private void button1_Click(object sender, EventArgs e)

{

    string ip = textBox1.Text;//IP地址:127.0.0.1

    string port = textBox2.Text;//端口号:8888

    string timeout = textBox3.Text;//延迟时间(秒):10

    int ret = Focas1.cnc_allclibhndl3(ip, Convert.ToUInt16(port), Convert.ToInt32(timeout), out h);//获取函数的返回值

           

    //Focas1.cnc_rdparam(fwlibhandleDic[no], 6711, 0, 8, prm_rd);

    if (ret == Focas1.EW_OK)//跟系统提供的参数进行对比,EW_OK返回值为0(Normal termination:正常结束),即表示成功

    {

        MessageBox.Show("连接成功!");

    }

    else

    {

        MessageBox.Show(ret + "-连接失败!");

    }

}

C#实战029:FANUC开发-动态链接库Dll使用

  • 图解在Windows Server2008上安装Oracle
  • C#如何用redis
  • WIN RAR 去广告,安装以及注册
  • 深信服上网行为管理产品的部署方式
  • 企业内网如何进行动态域名解析
  • 热门搜索
    塞舌尔旅游攻略 无锡旅游景点介绍 锦江旅游上海旅行社 狼牙山旅游景点 小蝌蚪旅游俱乐部 嘉兴乌镇旅游攻略 大山包旅游攻略 奖励旅游策划方案 重庆黑山谷旅游攻略 湖北荆州旅游