前言:
现在同学们对“cvi调用vc编写的dll”大体比较关切,兄弟们都想要学习一些“cvi调用vc编写的dll”的相关内容。那么小编同时在网络上汇集了一些关于“cvi调用vc编写的dll””的相关内容,希望看官们能喜欢,姐妹们快快来了解一下吧!各编程语言平台调用板卡动态链接库,读取编码器值方法详解。
板卡和计算机完成连接后,接下来就可以进行程序编写了,想要使用板卡内的编码器相关函数,就要调用相关的动态链接库,也就是Dll文件,进行编程读取。下面,就分别在C语言、LabVIEW、LabwindowsCVI、C#、VB等常用的这几个编程语言界面给大家讲解一下具体调用库的方法。
C语言:
首先是C语言的调用方法。本次 我们使用Visual C++ 6.0(以下简称VC6.0)来进行演示说明,首先打开VC6.0。点击左上方文件→新建,如图:
图.
在弹出的页面选择工程→Win32 Console Application,记得设置工程名称以及选择保存位置。如图:
图.
弹出的选择框中,我们可以选择一个“Hello World”程序。如图:
图.
新建完成后,我们点击侧边栏FileView,依次展开text files→Source Files→test.cpp,即可看到新建好的“Hello World”程序,如图:
图.
我们打开板卡的二次开发库文件夹和该项目的文件夹,将二次开发库的文件复制到项目文件夹内,如图:
图.
接下来,我们右键点击侧边栏的工程名称,选择“添加文件到工程”,如图:
图.
选择板卡二次开发库的全部文件进行添加,如图:
图.
文件添加完成后,便会显示在左侧边栏内。如图:
图.
我们在程序编辑框上方用#include写入头文件“NET_AMC4XER.h”,然后就可以使用DLL库中的函数了,例如初始化网络连接函数:SOCKET_init(void)。如图:
图.
接下来只要运行程序,就可以对网络进行初始化了,接下来我们来看到动态链接库内和编码器相关的函数,我们打开板卡说明书,找到编码器设定函数和编码器值读取函数。
首先是编码器设定函数Set_Encorder:
Set_Encorder(char* destIP,int Axs,int mod,int z_reset_en, int z_dir,int set8000,int enable);
该函数可用于设定编码器工作模式,让我们来了解一下该函数的各项参数:
destIP:板卡IP地址,默认设定为“192.168.1.30”,后续可以通过函数自行更改。Axs:板卡和编码器绑定的运动轴号。本次使用的是四轴运动控制卡,有X、Y、Z、U四个运动轴,对应值分别为0、1、2、3。Mod:编码器工作模式,一共有四种,对应值分别为0、1、2、3。
0——不计数
1——1x计数模式:只在A相的上升沿或下降沿进行一次计数
2——2x计数模式:在A、B相的上升沿或下降沿各进行一次计数
3——4x计数模式:在A、B相的上升和下降沿各进行一次计数,增量型编码器一般使用4x的计数模式进行工作。
4.z_reset_en:编码器z信号复位使能。设定为0时,Z信号出现高电平不复位;设定为1时,复位为0x000000或者0x800000。
5.z_dir:设置Z信号复位电平。0为高电平复位,1为低电平复位。
6.set8000:设定z信号复位时的计数值。设定为0,复位为0x000000;设定为1,复位为0x800000。
7.enable:计数器使能工作,设为0计数器不工作且复位为0x000000;设为1计数器正常工作。
然后是编码器计数值读取函数Read_Encorder:
Read_Encorder(char* destIP,int Axs , unsigned int* Value)
1.destIP:同编码器设定函数,板卡IP地址。
2.Axs:同编码器设定函数,要设置编码器的运动轴。
3.Value:一个指针参数,用于返回读取到的编码器计数值。
以上便是板卡内编码器相关的两个函数介绍,下面我们来实际运用一下这两个函数,我这里已经写好了一份简单的例程供大家参考,如图:
我们现在来运行一下这个例程试试。启动程序后,用手稍稍转动编码器,观察打印值是否变化。如图:
图
由上图可知,程序可正常显示编码器当前计数值,程序运行成功。以上便是C语言中板卡动态链接库及其函数的使用方法。
Labview:
首先我们打开Labview,点击创建项目,如图:
图.
然后选择新建一个空白VI,如图:
图.
新建后,我们可以看到生成了一个前面板,如图:
图.
接下来,我们点击上方窗口→显示程序框图,如图:
图.
点击后可以进入到Labview图形编程界面,如图:
图.
进入程序框图后,我们就可以在这里调用板卡的DLL文件了,我们点击鼠标右键→互连接口→库与可执行程序→调用库函数,如图:
图.
选择后可以直接放置在程序框图内,如图:
图.
放置好函数节点后,我们双击节点,进入节点的函数设置,如图:
图.
进入节点设置后,我们点击“库名/路径”旁边的文件夹图标,选择要调用的DLL文件,然后在函数名一栏选择要调用的函数,并把调用规范改为stdcall(WINAPI),如图:
图.
接着点击上方的函数设置,将函数的返回类型和数据类型设定为对应的值,如果函数包含输入参数,那还可以在这里增加参数输入口,点击+号即可。如图:
图.
点击确定后完成函数节点的配置。如果觉得节点太小不方便确认是调用了哪个函数可以右键→名称格式→名称,便可以显示当前节点调用的函数名,如图:
图.
接下来,只要运行Labview,就可以启动板卡了,以上便是Labview的动态链接库使用方法。
LabWindows/CVI:
我们打开CVI,选择新建一个项目,如图:
图.
选择新建后,即可进入CVI项目界面,如图:
图.
选择左上角File→New→User Interface,即可打开用户界面设计,如图:
图.
图.
我们可以在设计界面上放上一个按钮,调整为自认为合适的大小和造型,用于后面调用板卡DLL内的函数。如图:
图.
双击该按钮可以进入按钮的详细属性设置,可以在此处设置按钮上显示的文本以及回调函数名称,如图:
图.
完成后我们点击上方Code→Generate→All Code,如图:
图.
在弹出的选择框内勾选Create Project in Current Workspace,如图:
图.
完成后即可进入编程界面,如图:
图.
接下来我们将板卡二次开发库中的全部文件复制到项目文件夹内,如图:
图.
然后右键点击项目名称,选择Add Existing File添加现有文件,并选择刚才复制的二次开发库文件进行添加。如图:
图.
接下来,就可以在编程界面使用板卡DLL库中的函数了。使用方法和C语言部分类似。如图:
图.
接下来运行程序并点击网络初始化按钮即可进行网络初始化。
以上便是CVI的DLL库调用方法。
C#:
我们打开Visual Studio 2013,点击新建项目,如图:
图.
本次我们以C#的WinForm窗体应用程序来作为说明,选择Visual C#→WinForm窗体应用程序→设定好项目名称和存放位置→确定。如图:
图.
项目创建好后,即可进入WinForm的窗体布局界面。如图:
图.
我们点击上方视图→解决方案资源管理器,如图:
图.
打开解决方案资源管理器,使用右键点击解决方案,选择在文件资源管理器中打开文件夹。如图:
图.
找到:项目名称文件夹→bin→Debug并打开。进入到如图所示的文件位置内:
图.
我们将板卡的DLL文件粘贴到这个文件夹内,如图:
图.
回到Visual Stdio,点击左侧工具箱,选择Button控件。如图:
图.
将选择的Button控件放入窗体中任意喜欢的位置并调整成自认为合适的大小。如图:
图.
我们双击窗体,即可进入程序后台界面,如图:
图.
我们在编程区域的上方写入命名空间:
using System.Runtime.InteropServices;
这样一来,我们这个项目就允许使用刚刚粘贴进来的dll文件了,然后在public partial class Form1 : Form内写入语句DllImport,指定命令中的DLL文件名称为板卡DLL文件名称“NET_AMC4XER.dll”,并在后面写入想要调用的函数名,注意,一个DllImport语句只对应一个函数。如果要调用多个函数,就要重复使用DllImport语句。
最后,我们在Button控件的事件内写入函数即可。这样一来,当我们点击Button时,便可以使用对应的函数。如图:
图.
接下来只要启动C# Winform程序即可。
以上便是在C#使用板卡DLL文件的方法。
VB(Visual Basic):
VB方面,首先,和C#一样我们打开Visual Studio,模板选择Visual Basic,同样还是选择窗体应用程序作为说明。如图:
图.
进入设计面板后,点击右侧解决方案资源管理器,右键解决方案,选择在文件资源管理器中打开文件夹。
图.
在弹出的文件中,选择项目文件夹→bin→Debug,如图:
图
将我们板卡所要用到的DLL文件复制到这个文件夹内。如图:
图.
回到Visual Studio,打开左侧工具栏,选择并向窗体放入一个Button控件且调整成自认为合适的大小。如图:
图
完成后,我们双击Button控件即可进入后台编程界面。如图:
图.
接着,我们要用一个语句进行DLL文件的声明:
Declare Function 函数名 Lib "DLL文件名" (ByVal 参数名 As 数据类型) As 返回值类型
然后就可以直接在Button控件的事件里面使用声明过的函数了,如图:
图.
以上,便是在Visual Basic内使用板卡DLL文件的方法。
标签: #cvi调用vc编写的dll