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

     要开发FANUC程序,首先要做的就是引入FANUC提供的动态链接库Dll,只有正确的引入FANUC提供的动态链接库Dll,才能通过相应的DLL文件调用其提供的函数。

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

C#实战023:解决添加xxx.dll的引用时报错,请确保xxx是有效的程序集或者COM组件

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

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

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

在类中添加(DllImport只能放置在方法声明上):

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

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

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

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

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

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

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

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

引用了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);

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

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

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);//获取函数的返回值
    if (ret == Focas1.EW_OK)//跟系统提供的参数进行对比,EW_OK返回值为0(Normal termination:正常结束),即表示成功
    {
        MessageBox.Show("连接成功!");
    }
    else
    {
        MessageBox.Show(ret + "-连接失败!");
    }
}

 首发百度经验 :  C#实战029:FANUC开发-动态链接库Dll使用

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ProgramNotes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值