再谈USB开发:LabVIEW调用DLL文件实现STM32+USB+HID双向通信
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 文件。下面我们分这两种情况进行说明。
基于LabVIEW环境下调用DLL实现仪器控制
基 于 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程序开发笔记.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文件的调用
图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实时数据采集处理系统的实现基于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方法+
* 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数据采集与传输系统的设计与实现姓名:刘昌伟申请学位级别:硕士专业:信号与信息处理指导教师:邵左文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使用方法
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设备的数据通
信
陈国亮;张素君
【期刊名称】《福建电脑》
【年(卷),期】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双向通信
/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调用
郑铭
【期刊名称】《电子测试》
【年(卷),期】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], 胡胜文;万加林因版权原因,仅展示原文概要,查看原文内容请购买。
