新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > 弹上通信系统的LabVIEW与单片机的通信技术

弹上通信系统的LabVIEW与单片机的通信技术

作者:时间:2011-04-12来源:网络收藏

③编译C8051F340UsbInl.c文件,生成可被执行的C8051F340UsbInl.1sb。以VC++为例编译CIN节点源文件。在VC++下创建C8051F340UsbInl.mak文件,内容如下:
c.jpg
在VC++下点击new\project\make file,输入文件名C8051F340UsbInl后点击为OK和Finish按钮。将C8051F340UsbInl.c和C8051F340U-sbInl.mak一起复制到C8051F340UsbInl文件夹下,重新打开C8051F340UsbInl工作台,按F7可生成C8051F340UsbInl.1sb文件。
④右击选用的CIN图标,选择“加载代码资源”并选择C8051F340UsbInl.1sb文件。至此,一个基于CIN的读USB端口1的VI创建完毕。
上面是一个利用CIN创建开发USB驱动的VI的步骤,实际开发过程要麻烦很多,需要对设备及协议相当熟悉。因此,利用CIN实现USB受到一些限制。

2 调用DLL实现USB
开发USB设备时,不仅要面向USB控制器编程还要面向Windows编程(如果上位机用Windows操作),对不熟悉USB协议的用户而言是个难题。为了缩短用户开发USB设备时间,生产厂家往往会把对USB设备进行操作的函数封装成DLL(Dynamic Link Library,动态链接库)提供给用户。dll文件是一种可执行文件,允许程序共享执行特殊任务必需的代码和其他资源,与语言无关,可以被任何支持DLL的语言编写的应用程序访问。
Silicon Labs公司针对USB系列为USB驱动程序开发提供了USBXpress开发套件,其中的SiUSBXp.dll包含了23个函数。一个简单的USB通信程序,通常要用到SiUSBXp.dll中的SI_GetNumDevices、SI_SetTimeouts、SI_Open、SI_Read、SI_Write和SI_Close等几个函数。在中调用dll文件有两种方法,下面将分别介绍。
首先是利用CLF(调用库函数节点)节点调用SiUSBXp.dll,一般步骤如下:
①放置CLF节点并通过路径加载dll文件。CLF节点位于“函数选板”一“互连接口”一“库与可执行库文件”子选板下。
②在加载的dll文件里选择要用到的函数并进行参数配置。根据USBXpress开发手册,对每一个被调用的函数配置合适的参数。
③配置参数完成之后,每一个函数就是一个VI,可在程序中调用。
其次是通过导入共享库的方法调用SiUSBXp.dll。
导入共享库的实质是将dll文件中的函数自动生成对应的VI。函数的每个参数可在头文件包含以及预处理定义条件下在生成的VI中显示出来,与利用CLF相比较,省去了手动配置参数的步骤。使用方法如下:新建一个VI,点击“工具”一“导入共享库”,选择为用户创建共享库;点击下一步,在“选择共享库及头文件”页面加载.dll文件和.h文件的路径;点击下一步,在预处理定义中添加预处理说明(如果需要添加);点击下一步,等待解析头文件并选择待转换函数;点击下一步,进行项目库设置配置,连续点击下一步,直至所有选中的函数生成VI存放用户库里(默认状态)。调用时,在“函数选板”一“用户库”一“SiUSBXp”,选择在LabVIEW程序设计中用到的VI。
以上两种调用DLL实现USB通信的方法具体操作不一样,但本质都是利用USB厂家提供的dll文件访问USB设备。图1为LabVIEW调用DLL实现一个简单USB通信的流程。

d.jpg


LabVIEW通过调用dll文件大大缩减了实现USB通信开发工作量,但最关键也是最难的一步在于给函数配置参数。通常来讲,DLL主要用C/C++等文本语言开发,有些参数类型和LabVIEW不匹配,直接调用无法正常使用。为了解决这个问题,需要用户对参数进行修改或者对原有的dll文件进行二次开发,加大了工作量。



评论


相关推荐

技术专区

关闭