再谈USB开发:LabVIEW调用DLL文件实现STM32+USB+HID双向通信
基于LabVIEW环境下调用DLL实现仪器控制
![基于LabVIEW环境下调用DLL实现仪器控制](https://img.taocdn.com/s3/m/0145eb56a8956bec0975e3d4.png)
基 于 La b VI EW 环 境 下 调 用 D LL实 现 仪 器 控 制
长春理工大学 电子信 息工程 学院 侯 博 廖醒 宇
【 摘要 】 在科 研 以及 工业环境 下 ,经 常会 面临仪器控制 的问题 。 虽然仪 器厂商随仪 器一 同提供 的控 制软件 已经能够 完 成对仪 器各项功 能的控 制 ,但 由于实际实验要 求 ,配套控 制软件往往 不能达到预期效果 。依据 实际实验要 求 ,重新设 计控制程序 能有效解决上述 问题 。然 而使 用传统方法重新设 计驱动控制程序 ,开发周期 冗长 ,且 难度较 大。巧妙调 用 驱动控 制程序 原有的动 态链接 库文件 ,将有 效避 免这一缺点 。事实表 明,应 用L a b V I E W 软件开发平 台构建虚拟仪 器环 境 ,调 用厂 商提供 的动 态链接库 中的A P I 数接 口,重新设计驱 动控制程序 的方法可以极 大的缩短开发周期 ,且容 易实
以A R C o p t i x 公司生产 的液 晶可 调相位延 时器控制 软件为 例 ,给 出具体的设计方法。
器 、总线 、计 算机 、底 层驱 动程序 和上层 应用程 序 。总
线完成 计算机 和仪器 的硬件 连接 。上层应 用程序 调用底
层底层 驱动程序 预备 好的控 制接 口,发送 控制命 令控制 仪器 行为并且 完成数 据 的采 集 、处理 、分 析 、显示和存
了仪器 的价格 。虚拟 仪器在 电子测量 ,电气工程 ,科学 探索 ,医学 ,振 动分 析 ,光 学分析 ,声学分 析 ,故障诊 断及科学研究和教学等许 多领域有着广泛 的应用 。
1 _ 2 仪 器 控 制
STM32例程之USB HID双向数据传输(源码下载)
![STM32例程之USB HID双向数据传输(源码下载)](https://img.taocdn.com/s3/m/257769b2f121dd36a32d8264.png)
基于STM32的USB程序开发笔记.pdf(2.42 MB, 下载次数: 3155)
深入解析STM32_USB-FS-Device_Lib库.pdf(697.35 KB, 下载次数: 1958)
描述符在文件usb_desc.c中。第一个要改的是设备描述符。设备描述符的结构都标准的,长度也是固定的。范例中的USB设备描述符如下:
{
//以下为配置描述符
0x09, /* bLength: Configuation Descriptor size */
USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */
JOYSTICK_SIZ_CONFIG_DESC,
11.0x75,0x08, // REPORT_SIZE (8bit)
12.0x95,0x40, // REPORT_COUNT (64Byte)
13.0x81,0x02, // INPUT (Data,Var,Abs)
14.
15.// The Output report
16.0x09,0x04, // USAGE ID - Vendor defined
4.* @retval None
5.*/
6.void HIDSampE hDev;
9.BYTE recvDataBuf[1024],reportBuf[1024];;
10.DWORD bytes;
11.hDev = OpenMyHIDDevice(0); //打开设备,不使用重叠(异步)方式;
3.端点长度为64,也就是单次最多可以传输64个字节数据。
LabVIEW与外部程序间DLL文件的调用
![LabVIEW与外部程序间DLL文件的调用](https://img.taocdn.com/s3/m/63a8a450ad02de80d4d840e7.png)
图20 Parameters页面点击“OK”,将生成的CLN的输入段连接到DAQmx Read.vi,return type 输出连接到波形图表上,即可实现采集值放大10倍的功能。
图21 完成后的程序方法二LabVIEW中还有一种方法可以调用DLL文件,在VI的选项栏,依次选择Tools——Import——Shared Library(.dll),弹出Import Shared Library 对话框。
图22 生成Import Shared Library对话框选择Create VIs for a shared library,点击Next,在Shared Library (.dll) Files中输入Scale.dll文件的路径,Head(.h) File里填写头文件的路径。
图23 选择DLL文件路径和头文件路径点击Next,如果DLL文件中依赖其他的一些DLL文件,需要在Include Paths中填写这些文件的路径。
其他选项可以根据客户需求设置,一般默认即可。
这样一直点击Next到最后,选择Open the generated library,点击Finish。
这样可以生成一个.lvlib格式的库文件,里面包含了Scale.vi,这是将调用该DLL 文件的方法封装好的VI,只留下输入和输出接口,方便运用到LabVIEW的程序中。
直接将Scale.vi拖放到刚才的连续采集中即可完成方法一的功能。
图24 完成的程序VC调用LabVIEW生成的DLL文件刚才介绍了LabVIEW调用DLL文件的方法,使用VC调用LabVIEW生成的DLL 文件也很简单。
还是以之前生成Scale 的DLL文件为例,不同的是采集电压程序使用的是C语言的例程,但和LavVIEW实现的功能相同。
首先将先前生成Scale DLL文件时,路径下所有的文件全部复制粘帖到C语言例程的文件夹下。
打开连续采集程序,点击状态栏的Project——Settings,在Project Settings对话框中加载入Scale.lib的静态链接库。
基于LabVIEW的USB实时数据采集处理系统的实现
![基于LabVIEW的USB实时数据采集处理系统的实现](https://img.taocdn.com/s3/m/e4e3662253d380eb6294dd88d0d233d4b14e3fe8.png)
基于LabVIEW的USB实时数据采集处理系统的实现基于LabVIEW的USB实时数据采集处理系统的实现摘要介绍了以图形化编程语言LabVIEW为应用程序开发平台的USB数据采集处理系统的设计,并给出了LabVIEW对外部动态链接库的调用方法以及USB驱动程序的设计方法。
关键词USB LabVIEW 数据采集通用串行总线USB(Universal Serial Bus)作为一种新型的数据通信接口在越来越广阔的领域得到应用。
而基于USB接口的数据采集卡与传统的PCI卡及ISA卡相比具有即插即用、热插拔、传输速度快、通用性强、易扩展和性价比高等优点。
USB的应用程序一般用Visual C++编写,较为复杂,花费的时间较长。
由美国国家仪器(VI)公司开发的LabVIEW语言是一种基于图形程序的编程语言,内含丰富的数据采集、数据信号分析分析以及控制等子程序,用户利用创建和调用子程序的方法编写程序,使创建的程序模块化,易于调试、理解和维护,而且程序编程简单、直观。
因此它特别适用于数据采集处理系统。
利用它编制USB应用程序,把LabVIEW语言和USB总线紧密结合起来的数据采集系统将集成两者的优点。
USB总线可以实现对外部数据实时高速的采集,把采集的数据传送到主机后再通过LabVIEW的功能模块顺利实现数据显示、分析和存储。
1 USB及其在数据采集设备中的应用USB自在Comdex上亮相以来,已广泛地为各PC厂家所支持。
现在生产的PC几乎都配置了USB接口,Micro soft的Windows98、NT以及Mac OS、Linux等流行操作系统都增加对USB的支持。
USB具有速度快、设备安装和配置容易、易于扩展、能够采用总线供电、使用灵活等主要优点,应用越来越广泛。
一个实用的USB数据采集系统硬件一般包括微控制器、USB通信接口以及根据系统需要添加的A/D转换器和EPROM、SRAM 等。
为了扩展其用途,还可以加上多路模拟开关和数字I/O端口。
labview调用dll方法+
![labview调用dll方法+](https://img.taocdn.com/s3/m/868509b1960590c69ec376b0.png)
* Variable Name : CRC_TABLE_L
* Description : CRC Table.
*******************************************************************************/
const unsigned char CRC_TABLE_L[256]=
*******************************************************************************/
const unsigned char CRC_TABLE_H[256]=
{
0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,
// VCdll.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
#include "UniversalDefine.h"
extern "C" __declspec(dllexport) unsigned int CRC16(void *pbuf, unsigned char len) ;
0x78,0xB8,0xB9,0x79,0xBB,0x7B,0x7A,0xBA,0xBE,0x7E,0x7F,0xBF,0x7D,0xBD,0xBC,0x7C,
0xB4,0x74,0x75,0xB5,0x77,0xB7,0xB6,0x76,0x72,0xB2,0xB3,0x73,0xB1,0x71,0x70,0xB0,
基于USB接口的LabVIEW数据采集与传输系统的设计与实现
![基于USB接口的LabVIEW数据采集与传输系统的设计与实现](https://img.taocdn.com/s3/m/2ad290d5ce2f0066f53322d8.png)
烟台大学硕士学位论文基于USB接口的LabVIEW数据采集与传输系统的设计与实现姓名:刘昌伟申请学位级别:硕士专业:信号与信息处理指导教师:邵左文20090601摘要通用串行总线(USB)作为一种新的总线标准,由于具有接口简单、支持热插拔、传输速率高等优点在数据采集中得到了广泛应用。
本课题结合DSP和USB技术的优点设计了一种基于USB总线和数字信号处理器的多路数据采集系统,具有成本低、集成度高等优点。
采用德州仪器公司先进的高性能数字信号处理器TMS320F2812和赛普拉斯公司的USB 接口芯片,自行设计的多路信号调理模块等电路,实现了集AD转换、数据存储等功能于一体的数据采集与传输系统,可通过USB接口将数据实时传输至PC机或存储至U盘。
主要设计了DSP主控模块、程控信号调理模块、高速ADC模块、嵌入式USB主机接口模块、USB从机接口模块和4通道高速DAC模块,并基于这一硬件平台,通过LabVIEW编制应用程序,把LabVIEW软件和USB总线的优点紧密结合起来,最终实现了数据的采集、处理、显示及存储等功能。
关键词:数字信号处理,数据采集,通用串行总线,LabVIEWAbstractAs a kind of new bus standard, Universal Serial Bus (USB) has been widely applied in the field of the data acquisition because of its easy interface,high transmission rate,supporting hot plug and bining the advantages of the DSP and USB technology, this article designs a suit of the multi-channel data acquisition system based on the USB bus and digital signal processor, which has the advantages of the lower cost, higher integration and so on.Depending on the advanced high-performance digital signal processor of Texas Instruments corporation and USB interface chip of Cypress,this article develops a kind of data acquisition and transmission system which has the function of signal conditioning,analog to digital signal conversion,data storage and other functions.It has a variety of auxiliary circuit to meet the requirement of increasingly complex signal acquisition and processing and the real-time data can be transmitted to the PC or storaged in U disk through the USB interface. This article mainly designs DSP control module, programmable signal conditioning module, high-speed ADC module, embedded USB host interface module, USB slave interface module and 4-channel high-speed DAC module. basing on the hardware platformt, we finally carry out the function of data acquisition, processing, display, storage by using LabVIEW.Key Words:digital signal processing,data acquisition,USB,LabVIEW烟台大学学位论文原创性声明和使用授权说明原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。
LabvIEW与usb使用方法
![LabvIEW与usb使用方法](https://img.taocdn.com/s3/m/5acb4fe40975f46527d3e162.png)
1楼发表于昨天 12:07 |只看该作者|倒序浏览|打印本帖最后由 wyb4993 于 2011-7-15 09:36 编辑在前面,我们已经介绍过利用NI的VISA来实现USB HID双向通信。
借助VISA来实现USB HID通信,是比较稳定和可靠的,缺点就是需要安装庞大的VISA驱动程序,而且我们的STM32硬件需要被MAX正常识别出来,如果不能识别,那么这种方法是行不通的。
/bbs/forum.php?mod=viewthread&tid=27417其实我们还有另外的方法,就是通过LabVIEW调用DLL文件,实现USB HID的双向通信。
(说明:请不要向我索要LabVIEW源代码,开发千般辛苦,况且是公司的代码,我相信大家的水平都比我高,通过下面的入门介绍,相信大家可以做出来的。
)1、什么是DLL文件?动态链接库(Dynamic Link Library,缩写为DLL)是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。
动态链接库文件的扩展名一般是DLL,它和可执行文件(exe)非常类似,区别在于DLL中虽然包含了可执行代码却不能单独执行,而应由Windows应用程序直接或间接调用。
按照我们的理解,DLL文件中有C语言(也可以是其它语言)写的函数,究竟有多少个函数,由DLL文件的创建者决定的。
DLL有助于促进模块式程序的开发。
因为它的封装性、***性好。
DLL文件也不一定由开发者创建的,其实windows系统中就提供了大量的DLL文件,例如windows编程所需的大量API函数存储在Kernal.DLL文件中。
LabVIEW不仅可以调用我们自己创建的的DLL文件,也可以调用windows系统中的DLL文件。
下面我们分这两种情况进行说明。
2、LabVIEW调用我们创建的DLL文件LabVIEW的“调用库函数节点”在以下路径:“互连接口”→“库与可执行程序”→“调用库函数节点”我们把这个控件放在VI的程序框图中:双击控件后,可以打开如下配置窗口:“库名/路径”比较简单,就是DLL文件的路径了。
利用动态链接库(DLL)实现LabVIEW与USB设备的数据通信
![利用动态链接库(DLL)实现LabVIEW与USB设备的数据通信](https://img.taocdn.com/s3/m/5b13b128854769eae009581b6bd97f192279bfb4.png)
利用动态链接库(DLL)实现LabVIEW与USB设备的数据通
信
陈国亮;张素君
【期刊名称】《福建电脑》
【年(卷),期】2005(000)007
【摘要】本文简要介绍了LabVIEW的特点及USB设备的功能;分析了在LabVIEW软件环境下如何调用DLL(Dynamic Link Library)子VI实现LabVIEW 与USB设备的通信;并利用VC++6.0编写所需要的DLL模块.
【总页数】2页(P149-150)
【作者】陈国亮;张素君
【作者单位】福建省超高压输变电局,福建,厦门,351100;福州大学电气工程与自动化学院,福建,福州,350002
【正文语种】中文
【中图分类】TP3
【相关文献】
1.在LabVIEW中利用动态链接库实现串口通信 [J], 田云
2.利用LabVIEW导入工具实现DLL调用 [J], 郑铭
3.基于LabVIEW NI-VISA实现PC与C8051F320的USB数据通信 [J], 段晋军;位恒曦;常晓明
4.机房运行监控系统中采用动态链接库(DLL)技术实现数据通信接口的方法 [J], 黄
晓兵
5.在LabVIEW中利用DLL实现数据采集 [J], 许剑;邹小芳;王建华
因版权原因,仅展示原文概要,查看原文内容请购买。
移植STM32固件库用于HID双向通信
![移植STM32固件库用于HID双向通信](https://img.taocdn.com/s3/m/a4830a30bd64783e09122b3f.png)
/a827415225/article/details/51745013移植STM32固件库用于HID双向通信USB的应用中HID类是比较常见的方式。
通过修改STM32 USB固件库V4.0的JOYSTICK 应用,我们实现一个双向USB通信。
一、移植使用STM32源程序为点亮LED灯程序。
首先将USB固件库中有用的函数复制到源函数中,建立LIB文件夹其中放入USB2.0协议函数建立CFG文件夹放入USB应用函数将两个文件夹都放到源工程目录下将文件添加进来,设置好,配置好KEIL软件设置。
二、修改文件1、首先修改platform_config.h函数。
该文件是对于多种芯片对于USB库的支持。
我们使用STM32F103ZET6芯片,所以只保留与之相关的ID项,与USB_DISCONNECT线(PG11)的配置。
修改之后的头文件如下所示2、然后修改hw_config.c中Set_System函数实际上STM32F103zet6不需要对USB端口进行单独的配置,删掉Set_System函数中没用的部分,只对USB_DISCONNECT线(PG11)进行初始化。
修改后的函数如下图所示。
3、接下来修改hw_config.c文件中USB_Cable_Config函数因为我使用的是比较老的神舟III开发板,当PG11为高电平时实现上拉,所以修改后的函数为4、修改USB_Interrupt_Config函数,配置USB_LP_CAN1_RX0_IRQn和USBWakeUp_IRQn中断修改后的函数如下图所示。
5、接下来删掉hw_config.c文件中GPIO_AINConfig函数,没有什么用,只会报错6、删掉与按键相关的设置,因为我们并没有用到,主要是先清除JoyState和Joystick_Send 函数中内容,不用管。
7、最后我们处理USB挂起相关的问题。
在USB固件库中提供挂起相关的处理函数,主要有2个函数需要修改。
利用LabVIEW导入工具实现DLL调用
![利用LabVIEW导入工具实现DLL调用](https://img.taocdn.com/s3/m/d0e0d2e309a1284ac850ad02de80d4d8d15a010a.png)
利用LabVIEW导入工具实现DLL调用
郑铭
【期刊名称】《电子测试》
【年(卷),期】2009(000)006
【摘要】本文在介绍了动态链接库程序概念的基础上,以台湾泓格科技股份有限公司ISI-AD32、32通道隔离A/D数据采集卡为例,介绍了在LabVIEW 8.5开发环境下,通过利用LabVIEW开发环境中"导入"工具实现DLL调用方法.该方法克服了程序设计者通常在开发环境中通过CLF节点进行调用繁琐、各种不同类型的变量转换不正确时会造成不能控制的问题,及对类似的硬件提供的LabVIEW驱动版本太低或没有驱动,没有办法控制的问题同样可以解决.该方法简单实用,非常方便快捷,希望广大程序设计广为利用.
【总页数】4页(P33-35,39)
【作者】郑铭
【作者单位】91370部队,福建省福州市,350014
【正文语种】中文
【中图分类】TP312
【相关文献】
1.基于LabVIEW环境下调用DLL实现仪器控制 [J], 侯博;廖醒宇
2.嵌入式LabVIEW调用DLL实现数据采集 [J], 黄佳钰;邓焱;张锦杰
bVIEW平台下调用DLL实现PC/104数据采集 [J], 袁魏华;韩裕生;张伟伟;李
小明
4.基于调用DLL的LabVIEW数据采集的实现 [J], 张亿雄;顾海明
bVIEW 8.6报表工具包生成和调用DLL问题分析及对策 [J], 胡胜文;万加林因版权原因,仅展示原文概要,查看原文内容请购买。
Labview平台下基于DLL的USB通信技术应用
![Labview平台下基于DLL的USB通信技术应用](https://img.taocdn.com/s3/m/a681b527af45b307e87197f5.png)
收稿日期:2007-10-08作者简介:刘宇芳(1983-),女,江苏宿迁人,硕士生,研究方向为USB接口设计、虚拟仪器、PLC控制系统仿真技术。
文章编号:1671-7872(2008)02-0168-03Labview平台下基于DLL的USB通信技术应用刘宇芳,李秀娟(南京航空航天大学自动化学院,江苏南京210016)摘要:选用虚拟仪器开发平台Labview实现数据分析处理和操作界面设计,采用Windows下的动态链接库技术(DLL),在VisualC++中将USB通信程序模块封装成DLL供Labview调用,实现Labview与USB系统的实时通信。
阐述了Labview中调用DLL的关键技术及步骤。
关键词:Labview;动态链接库;USB;VisualC++中图分类号:TP319文献标识码:BApplicationofUSBCommunicationTechniqueinLabviewPlatformBasedonDLLLIUYu-fang,LIXiu-juan(SchoolofAutomation,NanjingUniversityofAeronauticsandAstronautics,Nanjing210016,China)Abstract:VirtualdevelopmentplatformLabviewwasusedtorealizedataprocessinganddesignoperatinginterface.Withthedynamiclinkinglibrary(DLL)technologyofwindows,theUSBcommunicationprogramwaswrittenintheformofDLLinVisualC++,whichwascalledbyLabviewtoimplementtherealtimecommunicationbetweenitandUSBsystem.thepivotaltechnologyandprocedureofcallingDLLisalsointroduced.Keywords:Labview;dynamic-linklibrary(DLL);USB;VisualC++Labview是NI公司开发的基于图形编程的虚拟仪器开发平台,内含丰富的数据采集、信号分析和控制等子程序,界面友好直观,在测量、测试以及工业控制领域已有广泛的应用[1]。
基于LabVIEW与USB的虚拟仪器接口设计
![基于LabVIEW与USB的虚拟仪器接口设计](https://img.taocdn.com/s3/m/bb5b243467ec102de2bd890d.png)
0 引言LabVIEW是一种基于图形程序的虚拟仪器编程语言,与传统仪器相比,虚拟仪器技术以计算机为平台,在程序界面中有用于模拟真实仪器面板的控件可供调用,可用于设置输入数值、观察输出值以及实现图表、文本等显示,因此具有友好的人机界面。
LabVIEW具有强大的数据采集、分析、处理、显示和存储功能。
在测试与测量、数据采集、仪器控制、数字信号分析、工厂自动化等领域获得了广泛的应用,显示出其强劲的生命力。
LabVIEW平台下开发的虚拟仪器在相同硬件条件下,改变软件即可实现不同的仪器功能,真正实现了“软件即仪器”的设计理念。
实现LabVIEW对数据的采集和处理,传统的方法是采用数据采集卡,但是这些数据采集卡设备存在安装不便,价格昂贵,受计算机插槽数量、地址、中断资源的限制,可扩展性差等缺点。
在LabVIEW平台下使用USB总线进行数据传输,由于USB接口总线具有即插即用,接口简单,传送速率高等特点,因此基于Lab-VIEW和USB接口的虚拟仪器具有灵活、可靠、经济等特点。
鉴于以上LabVIEW和USB接口仪器的优点,实现LabVIEW下USB接口的接口程序就显得尤为重要。
在此,介绍了一种基于LabVIEW与USB的虚拟仪器接口设计的方法。
1 设计方案由于各类基于USB总线的数据采集、控制的虚拟仪器都涉及到LabVIEW与USB接口程序的设计,为了不失一般性,这里以虚拟示波器为例,介绍该接口程序的设计方法。
1.1 硬件设计方案该系统是虚拟示波器,主要工作是采集被测模拟信号,并将信号通过USB2.o 接口传输到PC104计算机,运行计算机LabVIEW平台下的应用软件完成数据的处理与记录,并在显示器上绘制曲线。
该系统主要由模拟信号采集模块、FPGA控制模块、USB传输模块和计算机组成,其系统结构框图如图1所示。
1.1.1 FPGA控制模块该设计采用Alter公司的Cyclone系列现场可编程门阵列(Field Programmable Gate Array,FPGA),芯片EP1c3T144来实现高速数据控制及传输。
Labview DLL调用指南-非常有用
![Labview DLL调用指南-非常有用](https://img.taocdn.com/s3/m/46ecb7105f0e7cd185253600.png)
【转】labview dll的调用【转载】武汉高收入高福利公司排行榜在LabVIEW中调用DLL的整个过程及注意事项2011-09-15 21:25:44| 分类:驱动开发| 标签:|字号大中小订阅1. LabVIEW支持的数据类型< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />另外,可参考…\Program Files\National Instruments\LabVIEW 2009\examples\dll\data passing\Call Native Code.llb\Call DLL.vi。
…此VI列举了LabVIEW与C语言中兼容的数据类型。
见下表。
2. 在VI里调用DLL时,在DLL的左侧给输出端口添加初始化的值。
给输出端口添加初始化值的目的是分配内存给输出端口。
该初始化数组元素的个数至少为实际输出数组的个数。
若过小,则DLL不正常运行;若相等,则DLL正常运行;若过大,则DLL的数组输出端口除有效数据外,还有其他一些为0的非有效数据。
< xmlnamespace prefix ="v" ns ="urn:schemas-microsoft-com:vml" />3.使用DLL的步骤1)制作子VI,添加控件接口到连接端(connector)。
2)在新建的VI中添加DLL,在DLL中指定其路径,会自动添加该DLL包含的输入输出端口。
对于数值型输出,选择Point to value。
选中“Specify path or diagram”,表示动态调用该DLL,此时路径取决于最上端的路径输入端,Library name or path里输入的路径无效。
在parameters页,系统会自动添加DLL的输入输出端口,如果添加不完整,则需要再手动添加额外的输入端或者输出端。
LABVIEW的DLL与API调用
![LABVIEW的DLL与API调用](https://img.taocdn.com/s3/m/953bac19e97101f69e3143323968011ca300f7cd.png)
LABVIEW的DLL与API调用LABVIEW的DLL与API调用一.实验目的1.熟悉LabVIEW调用动态链接库的过程2.学会编写用LabVIEW调用WINDOWS的API函数二.实验器材1.计算机(带有声卡)2.LABVIEW8.20软件三.实验原理在开发自动测量系统时,经常遇到计算机与仪器的通信问题,涉及仪器控制及数据处理问题,LabVIEW语言在这一领域的应用有着独到的优势。
为了在LabVIEW中能够充分利用其他编程语言的优势,LabVIEW提供了外部程序接口能力,包括动态链接库(DLL)、C语言接口(CIN)、ActiveX和Matlab等。
动态链接库是基于Windows程序设计的一个非常重要的组成部分。
LabVIEW 开发中使用DLL,可以使代码更简洁,内存资源的使用更经济,而且可以便捷地利用仪器厂商或第三方提供的仪器控制子程序加速开发进程。
而windows平台包含有大量的API函数,这些API函数提供了大量在Windows环境下可操作的功能,它们位于Windows系统目录下的多个DLL文件中,因此在LabView中调用API 函数和DLL的方法是一致的。
在LabVIEW中,利用库函数节点可以较容易地实现对DLL的调用,从而提高了程序的开发效率。
使用调用库函数节点,可以调用Windows标准的动态连接库,也可以调用用户自己编制的DLL。
LabView中动态链接库的调用可在程序框图的函数选板中选取“调用库函数节点”来完成,该节点位于:互连接口->库和可执行程序->调用库函数节点。
将选择好的调用库函数节点图标放在程序框图中,然后通过对它的节点图标进行配置,可以指定DLL模块中与LabVIEW数据交换的相应的驱动函数。
在调用DLL时,首先要找到找到头文件(*.h)或者函数原型声明,确定你需要调用的函数,注意函数的参数是否包含了原始数据类型参数比如int,char, double,等等或者是否包含了复杂数据类型比如clusters。
labview DLL调用
![labview DLL调用](https://img.taocdn.com/s3/m/d20e4a48767f5acfa1c7cd1a.png)
动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库。
在LabVIEW中,一维数组、二维数组、字符串是可以和C/C++中的相应数据类型直接对应起来,因此比较容易实现。
那么对于C/C++语言中的结构体,大家也会想到可以和LabVIEW中的簇对应起来,但是在具体的应用中还会涉及到一些细节,需要我们去留意,否则很可能调用不成功,甚至由于非法读写内存导致系统崩溃。
另外,在LabVIEW中的返回值只有数值、字符串和指针,因此当DLL中的函数返回值为结构体时该如何处理?当输入参数包含指向函数的指针时该如何处理?在解决这些问题之前,先推荐四篇文档,有长有短,但是都写得很细致:1)如何通过调用库函数结点使用DLL——Configuring the Call Library Function Node to call a Simple DLL 链接:https:///content/docs/DOC-90692)如果是简单的数据类型(如数值、数组、字符串、简单结构体),在LabVIEW和DLL之间传递或接收指针,LabVIEW能够自动的正确的解析指针——Passing and ReceivingPointers with C/C++ DLLs from LabVIEW 链接:https:///content/docs/DOC-90803)因为LabVIEW隐藏了对内存的管理,没有开放的函数提供对具体内存地址的直接访问,所以当C/C++中返回的是一个指针,并且LabVIEW又不能自动解析这个指针时,该怎么办——Dereferencing Pointers from C/C++ DLLs in LabVIEW 链接:https:///content/docs/DOC-90914)介绍导入共享库工具(Import Shared Library Wizard),当我们拿到一个DLL和它的头文件(.h)时,利用该工具,能够自动生成针对DLL每个函数的子VI,最大的好处是不需要再手动设置输入输出参数并进行类型匹配,当然它有一定的局限性,比如复杂的类型它匹配不了——Creating Wrapper VIs for C/C++ DLL functions using the Import Shared Library Wizard 链接:https:///content/docs/DOC-90785)大家也可以通过这篇文档直入主题,因为它写得很全,包含详细的VI和C/C++源代码,并且有一个目录供大家索引,它回答了以下情况的问题:1)数值型2)一维数组 3)字符串4)二维数组 5)简单结构体 6)复杂结构体。
基于LabVIEW的USB数据采集系统的设计与实现的开题报告
![基于LabVIEW的USB数据采集系统的设计与实现的开题报告](https://img.taocdn.com/s3/m/3f012f9929ea81c758f5f61fb7360b4c2e3f2a83.png)
基于LabVIEW的USB数据采集系统的设计与实现的开题报告一、研究背景USB(通用串行总线)作为计算机领域中数据传输的重要接口标准,已经得到了广泛的应用和普及。
现如今,随着科学技术的不断发展,数据采集系统在不同的领域中都扮演着重要的角色,尤其是在实时控制和监测方面更是人们关注的重点。
因此,开发一种基于USB接口的数据采集系统将具有重要的研究意义和广泛的应用前景。
LabVIEW(Laboratory Virtual Instrument Engineering Workbench)作为美国国家仪器公司(National Instruments)开发的一款用于图形化编程和控制系统设计的软件,其以易用、快捷、高效的特点在数据采集、自动化测试等领域得到了广泛的应用。
结合USB接口和LabVIEW软件的特点与优势,基于LabVIEW的USB数据采集系统的设计与开发将变得更加方便快捷、稳定可靠。
二、研究内容本论文旨在基于LabVIEW的USB数据采集系统的设计与实现,主要涉及以下研究内容:B接口及其通信协议的原理和应用。
bVIEW软件开发环境的基本特点、图形化编程思想及其应用。
3.设计并实现基于LabVIEW的USB数据采集系统,包括软件的架构设计、硬件模块的选型与接口设计、数据采集模块的实现等。
4.对系统进行功能测试与性能评测,以及分析其优缺点和应用前景。
三、研究意义本论文所研究的基于LabVIEW的USB数据采集系统不仅具有一定的理论研究价值,也具有实用性和推广性:1.实用性:可应用于实时控制、数据采集、自动化测试等多个领域,解决实时数据采集与处理的难点问题,并极大提高了数据采集和控制的稳定性和准确性。
2.推广性:本研究结果对USB接口应用和LabVIEW软件开发具有一定启示作用,可为以后更多控制系统的设计提供借鉴和参考。
同时,由于LabVIEW软件的应用范围较广,也可为其它数据采集与控制系统的开发提供基础和支持。
完成stm32上HID的应用
![完成stm32上HID的应用](https://img.taocdn.com/s3/m/46491f310b1c59eef8c7b4b2.png)
完成stm32上HID的应用这个是公司的项目,以前基于usb 的虚拟串口来做上下位机通信,由于usb 平时也就刷参数和调试之用,也不很常用,外面反应usb 有时会连不上stm32 控制器,心里一直认为不是大问题,后来反应的多了,就重视这个事情了,虽然usb 平时不用,但是用的时候只要出现异常掉线,就再也连不上去了,特别影响用户对我们产品的信心。
在网上找了很多资料,到现在也只能隐约确定是stm32 官方的虚拟串口库有问题,我发现不同的电源板都会影响到usb 虚拟串口的枚举,于是下定决心使用其他方式来做上下位机的连接,排除了usb虚拟串口,眼前的选择只有两个1)usblib,这个是针对usb 的上位机库,可以玩很多的花样,但是需要开发者稍稍熟悉usb 协议,而且这个需要在上位机上安装usb 驱动程序。
2)hid 设备,这个是windows 自身支持的usb 设备,只支持中断传输,最大的速率也就64Kb/s,上位机采用windows api 编程我估算了一下,hid 方式满足我的要求,而且是免驱动,又不用学习usblib,所以就使用hid 方式实现了usb 通信。
hid 几个注意事项:1)对于windows API 来说,读和写hid 设备的数据包都是大小确定了,也就是说如果stm32 端口设备的hid 属性是64 的话,那么读写都是64 字节的。
读写的最大帧是64 字节,我在代码中是基于64 字节做应用层协议的。
2)hid 写速度不能太快,所以我一般在写前会等待2ms 左右,确保不会写出错。
确认是是HIDAPI 的代码问题,我对写函数修改如下,结果就好了,可以一直写无需等待int HID_API_EXPORT HID_API_CALL hid_write(hid_device *dev, const unsigned char *data, size_t length){DWORD bytes_written;BOOL res;BOOL bResult;OVERLAPPED ol;HANDLE ReportEvent;ReportEvent = CreateEvent(NULL, TRUE, FALSE, NULL);ResetEvent(ReportEvent);memset(&ol, 0, sizeof(ol));ol.hEvent =。
基于STM32和LABVIEW的多通道DNA合成仪控制系统的设计
![基于STM32和LABVIEW的多通道DNA合成仪控制系统的设计](https://img.taocdn.com/s3/m/5c0a18275627a5e9856a561252d380eb6294230f.png)
基于STM32和LABVIEW的多通道DNA合成仪控制系统的设计张莉;王尧【摘要】Combining solid phase phosphoramidite method of DNA synthesis with automatic control technology , a DNA synthesizer of 96 oligonucleotides long chain is designed based on STM32.The core of DNA synthesizer is STM32F103ZET6 microcontroller, who is used for receiving and processingrecinstruction from upper computer , and controlling peripheral circuit module.Based on LabVIEW development platform, application software ofupper computer is built, which has function of synthetic sequence multichannel input,working state monitoring and real-time communication with control system.The DNA synthesizer researched in this paper can achieve composition of 96 independent channel oligonucleotides long chain at the same time.It has many advantages, such as high synthetic efficiency, friendly operation interface, and easy operation mode.The DNA synthesizer can fully satisfy requirement of base composition of small and medium-sized laboratory and community hospital.%将合成DNA的固相亚磷酸酰胺法与自动控制技术相结合,设计了一款基于STM32的96通道寡核苷酸长链的合成仪.该DNA合成仪以STM32F103ZET6微控制器为主控芯片,接收、处理上位机发送的指令,并控制外围的执行单元.人机交互界面采用LabVIEW开发,具有合成序列多通道输入、工作状态监控、与主控系统实时通信等功能.该DNA合成仪控制系统可同时实现96个独立通道的寡核苷酸长链的合成,具有合成效率高、操作界面友好、操作方便等优点,完全满足中小型实验室及社区医院的碱基合成需求.【期刊名称】《中南民族大学学报(自然科学版)》【年(卷),期】2017(036)004【总页数】6页(P78-83)【关键词】磷酸酰胺法;DNA合成仪;STM32微控制器【作者】张莉;王尧【作者单位】中南民族大学生物医学工程学院,武汉430074;中南民族大学检测与仪器校级工程中心,武汉430074;中南民族大学生物医学工程学院,武汉430074;中南民族大学检测与仪器校级工程中心,武汉430074【正文语种】中文【中图分类】TP273DNA合成技术在基因及调控组件的合成、基因回路和生物合成途径的重新设计组装,以及基因组的人工合成等方面都有重要的应用[1].21世纪以来DNA合成技术发展迅速,在能源、重大疾病诊断与治疗、环境、医药等领域得到广泛应用,具有巨大的社会效益及经济效益.DNA合成仪是设计用于合成结构上类似DNA的寡核苷酸的自动化仪器,目前高通量DNA合成广泛采用固相亚磷酸酰胺法合成,它以多孔玻璃为固相载体,微升级体积的不同试剂经脱保护、偶联、带帽和氧化四步反应循环,将核苷酸单体耦合到核苷酸酸链上[2-5].该方法具有偶联效率高、起始反应物比较稳定等优点,可用于固相合成并实现自动化.DNA合成仪是实现DNA合成过程自动化、标准化的技术手段.目前国内进行批量合成使用的多通道DNA合成仪均以少于96通道合成为主,产品更新换代慢,且尚未有国产多通道高通量DNA合成仪问世[6].中国是世界自动化分析检测仪器最重要的市场之一,对于高通量多通道的DNA合成仪还大量依赖进口,而进口DNA合成仪价格昂贵、维护成本高、维修周期长.进口仪器合成过程繁杂,对于非专业的操作人员很难在短时间内配置好所需参数,用户无法根据需求灵活设置.为此,本文设计了一款操作界面简单灵活,人性化的多通道高通量DNA合成仪,该合成仪可以在96孔反应板的每一孔独立实现寡核苷酸长链的合成.DNA合成仪主要由软件系统、STM32中央控制器、传动系统、气路系统、液路系统五大部分组成.STM32中央控制器它是连接传动系统、气路系统、液路系统之间的桥梁,负责传动系统在指定位置完成相应的动作,控制气路、液路的加压排液和保证合成反应所需的气压和环境,将反馈信息通过特定的通信协议传送给控制软件,接收控制软件的命令并执行;传动系统负责把电磁阀板传送到与合成版孔的相对位置;气路系统主要负责试剂瓶、碱基瓶精确压力控制,气路整体的加压排液控制,合成反应惰性环境的控制,各路电磁阀板加液时试剂所需压强和不合成时对废液及洗涤液的压力控制等;液路系统的主要功能是把参与合成反应的10种试剂分别一分为8路液体输出管路;软件系统是DNA合成仪的核心,是决定其合成效率、合成效果的关键因素,基于labview开发的控制软件完成用户对合成板指定板孔的选择、对指定板孔的合成序列的输入,输入碱基序列参数解析后通过RS485通讯协议把相关电磁阀开关指令信息分步骤传送给STM32控制系统.其系统整体框图如图1所示.DNA合成仪合成试剂需要保持内外气体隔绝且需要在一定压强下才能达到更高的耦合率,因此气路系统整体的密闭性、对气压控制优劣性直接决定所需合成引物的合成效率.气路系统设计主要包括合成试剂瓶精确压力控制、合成反应仓惰性环境控制、各分流气路的加压排液控制、对洗涤液和废液外排气路控制等.合成反应试剂通过多级气压计和压力开关的检测,与多路高精度的微流体调压阀相结合,保证了各气路压强稳定在微小的波动范围内.在合成反应仓处我们配备了加压和减压的气压阀,保证合成所需压强环境,当合成完毕,反应仓先排气降压再排液.其气路系统设计如图2所示.固相亚磷酸酰胺法是目前最常用的DNA固相合成方法,具有高效、快速的偶联以及起始反应物稳定等特点[3].该方法主要步骤是脱保护基、缩合反应、带帽反应、氧化反应,四个步骤循环完成DNA链的合成.该合成策略也是本文DNA合成仪设计的主要依据之一.在合成过程中会涉及到十种试剂(试剂1,试剂2,试剂3,试剂4,试剂A,试剂T,试剂G,试剂C,试剂5,试剂6)参与反应,试剂的添加次序依次是:试剂1-4-所需碱基(A、T、G、C)-5-6.我们将每种试剂一分为8路,对应96反应孔板的8行,每一路连接一个电磁阀,这样10种试剂被分成8×10路,由8×10个电磁阀组成了液路系统.8×10电磁阀组中每个电磁阀开关都是独立的,由控制器根据合成需要打开相应的电磁阀开关.本液路控制系统选用了密封型好、无内部容积结构、耐腐蚀的隔膜电磁阀为控制载体来保证每一路的液体流量的均一性.设计原理如图3所示.合成DNA时,装有10种合成试剂的8×10的电磁阀板在8×12的合成孔板上方来回运动,完成每个版孔的试剂添加.电磁阀板有10列,合成孔板有12列,电磁阀板从第一列与合成板孔第一列对齐,到电磁阀板第十列完全走出合成孔板需要22步,因此我们把步进电机运动22步规定为一趟,而来回的趟数由用户输入的最长的碱基序列数决定.每一列的8路试剂出液口和96合成孔板具体某一列相对位置的定位精度是决定传动系统是否满足要求的最重要衡量标准,为提高传动系统重复运动定位精度,我们在传动系统运动的起点和终点处都设定了重复定位精度达到0.1mm光电传感器,并设计了减少电机负载,每次合成前重新校准原点位置等步骤.首先,传动系统启动前,气路系统会在传动系统两端进气口加压,一来赶走传动系统内部的空气,保证合成所需惰性气体的条件;二来传动系统受气压反作用力处于半悬空状态,减小电机来回运动时的阻力.然后,步进电机搜寻起点光电开关定原点,待原点确定后,控制系统控制电机运动到第一步合成的位置,此时,电磁阀板的第一列和96孔板的第一列一上一下地对齐.第一步合成完后电机运动到第二步合成位置.第二步合成位置电磁阀板的第一列和96孔板的第二列、电磁阀板的第二列和96孔板的第一列一上一下地对齐.第二步合成完后电机运动到第三步合成位置,如此依次走完第一趟(22步)所有步数后,电机继续向右运动到终点光电开关位置,表示第一趟合成完成,之后再重新回到原点位置等待合成指令.设计原理图如图4所示.系统软件与硬件电路密切结合是实现仪器精确稳定运行的必要条件.本仪器是集机械自动化、计算机实时状态监控和数据存储分析于一体的系统[7].要求系统软件完成:用户可以在人机界面的96孔板中任意选择并输入需要合成的DNA碱基序列、稳定准确执行上位机发出的指令、实时处理收发数据、显示下位机的运行状态同时将与合成进程相关的数据回传给上位机.为此,课题组提出软件系统设计方案,软件系统分为上位机软件系统和下位机软件系统.在主控STM32上和在步进电机驱动板TMCM-351运行的软件即为下位机软件.STM32基于Keil MDK4的开发环境采用C语言编译、TMCM-351采用TMCL语言开发.下位机软件根据功能可分为以下几大模块.(1)参数设定.电机根据负载的情况和运行的速度需要设定其电机的参数,在TMCM-351软件上我们需设定传动系统步进电机的细分参数、最大加速度、规定正负(正为右方向负为左方向)、电机来回运行的速度等参数.(2)归零.仪器上电开始后,程序首先会搜索零点并置零.零点位置的确定说明仪器处于起始状态,零点的确定对后面每一步合成的位置都有决定性的作用.(3)定位流程.DNA合成仪每一趟分为22合成步骤,每一个合成步骤都有其具体的位置信息.当步进电机运行到当前合成位置时,下位机会立刻将其位置信息反馈给上位机,然后上位机再发送当前合成步骤电磁阀的开关指令给下位机处理.(4)指令处理.下位机在合成过程中会处理上位机发送的三种指令:1) 合成开始指令,下位机收到开始指令后会立刻控制电机运动到合成开始位置并把位置信息反馈给上位机;2) 电磁阀开关指令,步进电机每到达一次合成位置,上位机会发送相应的电磁阀开关指令,主控会处理这些指令并转换成高低电平信号控制电磁阀开闭和时间;3) 合成结束指令,下位机收到后会控制步进电机走到终点位置,表示整个DNA合成过程结束.上位机开发基于LabVIEW 2015图形化编程开发平台,它由前面板和程序框图组成.前面板用来设置用户需要合成的碱基序列和显示合成步骤,程序框图用于编写和显示程序源代码.上位机软件设计主要由以下6大模块组成:(1)板孔选择:用户可以对96孔板任意选定.(2)序列输入:当用户完成对板孔数的选择后,需要对每个已经被选择的板孔进行合成序列输入(合成序列由A,T,G,C组成且每条序列长度不能超过30).(3)合成进程设置:用户完成输入后,上位机会根据算法生成每一步的电磁阀开关指令.同时会根据步进电机反馈的位置信息来判断合成进程.(4)流程指令存储:DNA合成仪是分趟数分步骤来合成想要合成的序列,因此需要把还没执行到的指令代码存储起来.(5)串口通信、流程执行模块:用采用VISA串口通信的方式,上位机选择串口实现与下位机连接通信,收发指令;流程的开始、结束指令根据下位机反馈的信息来决定.(6)状态监测:上位机会不断根据下位机反馈的信息来监测下位机的运行状况.其上位机控制软件界面如图5所示.上位机软件主要实现以下功能:(1)串口通信功能:依据485通信协议经由USB转485串口与下位机进行通信,上位机实时获取下位机运行状态,同时下位机回传与合成进程相关的数据给上位机.(2)数据处理功能:当用户完成碱基序列输入步骤后,第一步:上位机会提取出所有输入版孔的第一个碱基组成一个新的碱基序列的二维数组,新组成的二维数组每一个元素保留其所在原来输入版孔的行和列信息.再根据下位机反馈的位置信息提取出新组成的二维数组对应的碱基列.到达第一个位置时提取二维数组中含有第一列信息的所有元素并按照一个元素对应固定的十步指令分步骤把开关信息发送给下位机,到达第二个位置时提取二维数组中含有第一列信息和第二列信息的所有元素按照固定算法把开关信息发送给下位机……依次处理完所有信息.上位机根据不同的碱基序列输入,完成对合成序列解析,再分步骤解析出相对应的电磁阀开关指令并发送给下位机.(3)指令的发送:电磁阀开关指令的发送是分躺数分不同位置信息的,趟输由用户最长碱基序列长度决定,第一趟发送的是所有输入版孔中的首个碱基的开关信息.而每一趟又分为22步,就说明每一趟有22个位置信息,同一碱基不同位置信息会对应不同的开关指令.其上位机软件流程图如图6所示.本文设计的DNA合成仪控制系统可同时实现96 个独立通道的寡核苷酸长链的合成.基于LabVIEW开发的上位机软件功能齐备,操作界面美观友好,数据处理和转换方便.基于STM32开发的下位机高效可靠,对上位机指令处理迅速准确,控制电机和捕获光电开关触发信号及时稳定.由于DNA合成仪的重复工作量大,长时间运行后定位系统的精确度和每次打开电磁阀组排出液体的均一性还需要不断完善.【相关文献】[1] 邢玉华,谭俊杰,李玉霞,等. 合成生物学的关键技术及应用进展[J]. 中国医药生物技术,2012,7(5):357-363.[2] 熊燕,陈大明,杨琛,等. 合成生物学发展现状与前景[J]. 生命科学,2011, 23(9):826-837.[3] 冯淼,王璐,田敬. 基因合成技术研究进展[J]. 生物工程学报,2013,29(8):1075-1085.[4] 王霞,赵鹃,李炳志,等. DNA合成技术及应用[J]. 生命科学,2013,25(10):993-999.[5] 高朝辉.基因合成方法的改进与验证 [D]. 长春: 吉林大学,2008.[6] 梁晓会,黄传伟,郭剑. 多通道高通量DNA合成仪控制系统设计与实现[J]. 军事医学,2015,39(8):571-576.[7] 万娟,张莉,张冰洋. 基于TMCM-6110和LabVIEW的全自动酶联免疫前处理仪的设计[J].制造业自动化,2016, 38(10):1-6.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4、结尾
到了这里,我们可以看到,LabVIEW 调用 DLL 文件是很简单的,关键是我们要知道 DLL 文件中的函数原型! 我们也可以比较一下通过 VISA 和通过 LabVIEW 调用 DLL 文件实现 USB HID 双向通 信的的优缺点。 1、通过 VISA,我们可以简单和快速地开发 STM32 USB HID 通信,不必了解底层函 数的原型,系统稳定可靠。但需要我们安装庞大的 VISA 驱动程序,而且硬件需要被 MAX 识别。 2、通过 LabVIEW 调用 DLL 文件,我们不需要安装任何驱动程序,发挥 USB HID 免 驱动的优点,但需要我们了解 DLL 文件中的函数原型,而且如果 DLL 文件做得不好的话, 有可能引起程序崩溃。 其 实 我 们 也 可 以 调 用 windows 系 统 自 带 的 hid.dll 文 件 的 , 一 般 在 以 下 路 径 : C:\WINDOWS\system32。现在的 USB HID 上位机软件,一般都是调用微软的 hid.dll 来实现 的。这个留给用户去完成了(不难的,只要知道函数原型就可以了) 。 其实 LabVIEW 作为一种通用的编程语言, 和 VC++一样, 也可以封装和创建 DLL 文件 的,有兴趣的用户可以了解一下,这里就不详细介绍了。
ห้องสมุดไป่ตู้
2、LabVIEW调用我们创建的DLL文件
LabVIEW 的“调用库函数节点”在以下路径: “互连接口”“库与可执行程序” “调用库函数节点”
我们把这个控件放在 VI 的程序框图中:
双击控件后,可以打开如下配置窗口:
“库名/路径”比较简单,就是 DLL 文件的路径了。而“线程” ,一般都是选择“在 UI 线程中运行” 。在“调用规范”中,因为是调用我们写的 DLL 文件,所以选择“C” 。如果 是调用 windows 系统中的 DLL 文件,那么选择“stdcall(WINAPI) ” 。 我们把 DLL 文件装进来之后, 就可以看到 DLL 文件中包含的所有函数了, 在 “函数名” 下拉列表中可以看到。
“回调”和“错误检查”选项的配置,一般默认就可以了:
我们退出“调用库函数”的配置之后,在 LabVIEW 的程序框图上,就多了输入和输出 接线头了,这样我们就可以给函数输入参数了,或者输出函数的执行结果:
3、LabVIEW调用windows系统的的DLL文件
我们知道,在 windows 系统中有大量的 DLL 文件,如果 LabVIEW 可以调用它,那么 将可以实现更多的、更强大的功能。 我们以一个实例来说明一下。我们调用“user32.dll”文件,实现 windows 弹出窗口的 显示:
再谈 USB 开发:LabVIEW 调用 DLL 文件实现 STM32 USB HID 双 向通信
王逸彬
wyb_4993@
在前面, 我们已经介绍过利用 NI 的 VISA 来实现 STM32 USB HID 双向通信。 借助 VISA 来实现 USB HID 通信,是比较稳定和可靠的,缺点就是需要安装庞大的 VISA 驱动程序, 而且我们的 STM32 硬件需要被 MAX 正常识别出来,如果不能识别,那么这种方法是行不 通的。 其实我们还有另外的方法,就是通过 LabVIEW 调用 DLL 文件,实现 STM32 USB HID 的双向通信。
需要注意的是:默认的 DLL 文件中的函数原型都是: “void Init(void );” ,这是不对的, 我们需要在“参数”中,给函数配置输入参数、输出参数以及返回类型。
我们最终的目的,就是要把函数原型,配置成 DLL 文件中的函数格式。所以,创建 DLL 文件的开发者需要提供函数原型,我们才能在 LabVIEW 中正确配置,否则我们将直 接失败!
请注意上图中的“函数原型” ,这是要根据微软公司提供的“FindWindowA”函数原型, 才能配置出来的。如果没有微软的函数原型,那么我们在“参数”中将无法配置! 其它函数的配置类似。最后的运行结果是:
这个弹出窗口是不是比 LabVIEW 自带的弹出窗口专业多了?也更符合用户的 windows 使用习惯。
1、什么是DLL文件?
动态链接库(Dynamic Link Library,缩写为 DLL)是一个可以被其它应用程序共享的 程序模块,其中封装了一些可以被共享的例程和资源。动态链接库文件的扩展名一般是 DLL,它和可执行文件(exe)非常类似,区别在于 DLL 中虽然包含了可执行代码却不能单 独执行,而应由 Windows 应用程序直接或间接调用。 按照我们的理解,DLL 文件中有 C 语言(也可以是其它语言)写的函数,究竟有多少 个函数,由 DLL 文件的创建者决定的。DLL 有助于促进模块式程序的开发,因为它的封装 性、独立性好。 DLL 文件也不一定由开发者创建的,其实 windows 系统中就提供了大量的 DLL 文件, 例如 windows 编程所需的大量 API 函数存储在 kernal.DLL 文件中。 LabVIEW 不仅可以调用我们自己创建的的 DLL 文件,也可以调用 windows 系统中的 DLL 文件。下面我们分这两种情况进行说明。