logo资料库

USB5936数据采集卡软件编程手册.pdf

第1页 / 共35页
第2页 / 共35页
第3页 / 共35页
第4页 / 共35页
第5页 / 共35页
第6页 / 共35页
第7页 / 共35页
第8页 / 共35页
资料共35页,剩余部分请下载后查看
目 录
第一章 版权信息与命名约定
第一节、版权信息
第二节、命名约定
第二章 使用纲要
第一节、如何管理USB设备
第二节、如何批量取得AD数据
第三节、哪些函数对您不是必须的
第三章 USB设备专用函数接口介绍
第一节、设备驱动接口函数列表(每个函数省略了前缀“USB5936_”)
第二节、设备对象管理函数原型说明
第三节、AD采样操作函数原型说明
第四节、AD硬件参数系统保存与读取函数原型说明
第五节、DIO数字开关量输入输出简易操作函数原型说明
第六节、CNT计数与定时器操作函数原型说明
第四章 硬件参数结构
第一节、AD硬件参数介绍(USB5936_PARA_AD)
第五章 数据格式转换与排列规则
第一节、AD原始数据LSB转换成电压值Volt的换算方法
第二节、AD采集函数的ADBuffer缓冲区中的数据排放规则
第六章 上层用户函数接口应用实例
第一节、简易程序演示说明
第二节、高级程序演示说明
第七章 基于USB总线的大容量连续数据采集详述
第八章 公共接口函数介绍
第一节、公用接口函数总列表(每个函数省略了前缀“USB5936_”)
第二节、线程操作函数原型说明
第三节、文件对象操作函数原型说明
第四节、各种参数保存和读取函数原型说明
第五节、其他函数原型说明
USB5936 数据采集卡 WIN2000/XP 驱动程序使用说明书 北京阿尔泰科技发展有限公司 产品研发部修订
北京阿尔泰科技发展有限公司 请您务必阅读《使用纲要》,他会使您事半功倍! 目 录 目 录 ...............................................................................................................................................................................1 第一章 版权信息与命名约定 ................................................................................................................................2 第一节、版权信息 ...........................................................................................................................................2 第二节、命名约定 ...........................................................................................................................................2 第二章 使用纲要 ...................................................................................................................................................2 第一节、如何管理 USB 设备............................................................................................................................2 第二节、如何批量取得 AD 数据......................................................................................................................2 第三节、哪些函数对您不是必须的................................................................................................................4 第三章 USB 设备专用函数接口介绍...................................................................................................................4 第一节、设备驱动接口函数列表(每个函数省略了前缀“USB5936_”)................................................4 第二节、设备对象管理函数原型说明............................................................................................................5 第三节、AD 采样操作函数原型说明...............................................................................................................9 第四节、AD 硬件参数系统保存与读取函数原型说明.................................................................................12 第五节、DIO 数字开关量输入输出简易操作函数原型说明.......................................................................14 第六节、CNT 计数与定时器操作函数原型说明...........................................................................................15 第四章 硬件参数结构 .........................................................................................................................................16 第一节、AD 硬件参数介绍(USB5936_PARA_AD).......................................................................................16 第五章 数据格式转换与排列规则......................................................................................................................19 第一节、AD 原始数据 LSB 转换成电压值 Volt 的换算方法.......................................................................19 第二节、AD 采集函数的 ADBuffer 缓冲区中的数据排放规则...................................................................20 第六章 上层用户函数接口应用实例..................................................................................................................21 第一节、简易程序演示说明..........................................................................................................................21 第二节、高级程序演示说明..........................................................................................................................21 第七章 基于 USB 总线的大容量连续数据采集详述........................................................................................22 第八章 公共接口函数介绍 .................................................................................................................................23 第一节、公用接口函数总列表(每个函数省略了前缀“USB5936_”)..................................................24 第二节、线程操作函数原型说明..................................................................................................................24 第三节、文件对象操作函数原型说明..........................................................................................................26 第四节、各种参数保存和读取函数原型说明..............................................................................................30 第五节、其他函数原型说明..........................................................................................................................32 提醒用户: 通常情况下,WINDOWS 系统在安装时自带的 DLL 库和驱动不全,所以您不管使用那种语言编程, 请您最好先安装上 Visual C++6.0 版本的软件,方可使我们的驱动程序有更完备的运行环境。 有关设备驱动安装和产品二次发行请参考 USB5936Inst.doc 文档。 1
USB5936 WIN2000/XP 驱动程序使用说明书 版本:6.000 第一章 版权信息与命名约定 第一节、版权信息 本软件产品及相关套件均属北京市阿尔泰科贸有限公司所有,其产权受国家法律绝对保护,除非本公司书 面允许,其他公司、单位及个人不得非法使用和拷贝,否则将受到国家法律的严厉制裁。您若需要我公司产品 及相关信息请及时与我们联系,我们将热情接待。 第二节、命名约定 一、为简化文字内容,突出重点,本文中提到的函数名通常为基本功能名部分,其前缀设备名如 USBxxxx_ 则被省略。如 USB5936_CreateDevice 则写为 CreateDevice。 缩写 DI DO CNT DA DI SE DIR ATR DTR Cur OPT ID 全称 Digital Input Digital Output Counter Digital convert to Analog Differential Single end Direction Analog Trigger Digital Trigger Current Operate Identifier 汉语意思 数字量输入 数字量输出 计数器 数模转换 (双端或差分) 注: 在常量选项中 单端 方向 模拟量触发 数字量触发 当前的 操作 标识 模数转换 非空 参数 源 触发 时钟 地 逻辑的 物理的 二、函数名及参数中各种关键字缩写规则 汉语意思 缩写 设备 Dev 程序 Pro 中断 Int 直接内存存取 Dma AD 全称 Device Program Interrupt Direct Memory Access Analog convert to Digital Not Empty Parameter Source Trigger Clock Ground Logical Physical Npt Para SRC TRIG CLK GND Lgc Phys 以上规则不局限于该产品。 第二章 使用纲要 第一节、如何管理 USB 设备 由于我们的驱动程序采用面向对象编程,所以要使用设备的一切功能,则必须首先用CreateDevice函数创 建一个设备对象句柄hDevice,有了这个句柄,您就拥有了对该设备的控制权。然后将此句柄作为参数传递给 其他函数,如InitDeviceAD可以使用hDevice句柄以初始化设备的AD部件并启动AD设备,ReadDeviceAD函数可 以用hDevice句柄实现对AD数据的采样批量读取,SetDeviceDO函数可用实现开关量的输出等。最后可以通过 ReleaseDevice将hDevice释放掉。 第二节、如何批量取得 AD 数据 当您有了hDevice设备对象句柄后,便可用InitDeviceAD函数初始化AD部件,关于采样通道、频率等的参 数的设置是由这个函数的pADPara参数结构体决定的。您只需要对这个pADPara参数结构体的各个成员简单赋 值即可实现所有硬件参数和设备状态的初始化,然后这个函数启动AD设备。接着便可用ReadDeviceAD反复读 取AD数据以实现连续不间断采样当您需要关闭AD设备时,ReleaseDeviceAD便可帮您实现(但设备对象hDevice 依然存在)。(注:ReadDeviceAD虽然主要面对批量读取,高速连续采集而设计,但亦可用它以少量点如 32 个点读取AD数据,以满足慢速采集需要)。具体执行流程请看下面的图 2.1.1。 2
北京阿尔泰科技发展有限公司 注意:图中较粗的虚线表示对称关系。如红色虚线表示CreateDevice和ReleaseDevice两个函数的关系是: 最初执行一次CreateDevice,在结束是就须执行一次ReleaseDevice。绿色虚线InitDeviceAD与ReleaseDeviceAD 成对称方式出现。 重新初始化 AD 开始 创建设备对象 CreateDevice() 初始化和启动 AD InitDeviceAD() 读取 AD 数据 ReadDeviceAD () 接着上次再读 AD 数据 用户对采集到的 AD 数据进行处理 其代码应由用户根据需要编写 需要再紧接着读取 AD 数据 以实现连续采集吗? 是 否 释放和停止 AD 设备 ReleaseDeviceAD() 需要改变通道或频率后再 采集吗? 不需要 释放设备对象 ReleaseDevice() 结 束 图 2.1.1 AD 采集实现过程 3
USB5936 WIN2000/XP 驱动程序使用说明书 版本:6.000 第三节、哪些函数对您不是必须的 当公共函数如CreateFileObject,WriteFile,ReadFile等一般来说都是辅助性函数,除非您要使用存盘功能。 它们只是对我公司驱动程序的一种功能补充,对用户额外提供的。 第三章 USB 设备专用函数接口介绍 第一节、设备驱动接口函数列表(每个函数省略了前缀“USB5936_”) 函数名 函数功能 备注 列表所有同一种 USB 各种配置 复位 USB 设备 关闭设备,且释放 USB 总线设备对象 初始化 USB 设备 AD 部件,准备传数 连续批量读取 USB 设备上的 AD 数据 释放 USB 设备对象中的 AD 部件 创建 USB 对象(用设备逻辑号) 创建 USB 对象(用设备物理号) 取得设备总数 ① 设备对象操作函数 CreateDevice CreateDeviceEx GetDeviceCount GetDeviceCurrentID 取得设备当前 ID 号 ListDeviceDlg ResetDevice ReleaseDevice ② AD 采样操作函数 InitDeviceAD ReadDeviceAD ReleaseDeviceAD ③ 辅助函数(硬件参数设置、保存、读取函数) LoadParaAD SaveParaAD ResetParaAD ④ 开关量函数 GetDeviceDI SetDeviceDO ⑤ 计数器操作函数 SetDeviceCNT GetDeviceCNT 使用需知: Visual C++ & C++Builder: 开关输入函数 开关输出函数 设置计数器的初值 取得各路计数器的当前计数值 上层及底层用户 上层及底层用户 从 Windows 系统中读取硬件参数 往 Windows 系统保存硬件参数 将注册表中的 AD 参数恢复至出厂默认值 上层用户 首先将 USB5936.h 和 USB5936.lib 两个驱动库文件从相应的演示程序文件夹下复制到您的源程序文件 夹中,然后在您的源程序头部添加如下语句,以便将驱动库函数接口的原型定义信息和驱动接口导入库 (USB5936.lib)加入到您的工程中。 #include “USB5936.H” 在 VC 中,为了使用方便,避免重复定义和包含,您最好将以上语句放在 StdAfx.h 文件。一旦完成了 以上工作,那么使用设备的驱动程序接口就跟使用 VC/C++Builder 自身的各种函数,其方法一样简单,毫 无二别。 关于 USB5936.h 和 USB5936.lib 两个文件均可在演示程序文件夹下面找到。 Visual Basic: 4
北京阿尔泰科技发展有限公司 首先将 USB5936.Bas 驱动模块头文件从 VB 的演示程序文件夹下复制到您的源程序文件夹中,然后将 此模块文件加入到您的 VB 工程中。其方法是选择 VB 编程环境中的工程(Project)菜单,执行其中的"添加 模块"(Add Module)命令,在弹出的对话中选择 USB5936.Bas 模块文件即可,一旦完成以上工作后,那么 使用设备的驱动程序接口就跟使用 VB 自身的各种函数,其方法一样简单,毫无二别。 请注意,因考虑 Visual C++和 Visual Basic 两种语言的兼容问题,在下列函数说明和示范程序中,所 举的 Visual Basic 程序均是需要编译后在独立环境中运行。所以用户若在解释环境中运行这些代码,我们 不保证能完全顺利运行。 Delphi: 首先将 USB5936.Pas 驱动模块头文件从 Delphi 的演示程序文件夹下复制到您的源程序文件夹中,然 后将此模块文件加入到您的 Delphi 工程中。其方法是选择 Delphi 编程环境中的 View 菜单,执行其中的 "Project Manager"命令,在弹出的对话中选择*.exe 项目,再单击鼠标右键,最后 Add 指令,即可将 USB5936.Pas 单元模块文件加入到工程中。或者在 Delphi 的编程环境中的 Project 菜单中,执行 Add To Project 命令,然后选择*.Pas 文件类型也能实现单元模块文件的添加。最后请在使用驱动程序接口的源程 序文件中的头部的 Uses 关键字后面的项目中加入:“USB5936”。如: uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, USB5936; // 注意: 在此加入驱动程序接口单元 USB5936 LabView / CVI: LabVIEW 是美国国家仪器公司(National Instrument)推出的一种基于图形开发、调试和运行程序的集成 化环境,是目前国际上唯一的编译型的图形化编程语言。在以 PC 机为基础的测量和工控软件中, LabVIEW 的市场普及率仅次于 C++/C 语言。LabVIEW 开发环境具有一系列优点,从其流程图式的编程、 不需预先编译就存在的语法检查、调试过程使用的数据探针,到其丰富的函数功能、数值分析、信号处理 和设备驱动等功能,都令人称道。关于 LabView/CVI 的驱动程序接口的详细说明请参考其演示源程序。 第二节、设备对象管理函数原型说明 ♦ 创建设备对象函数 函数原型: Visual C++ & C++ Builder: HANDLE CreateDevice(int DeviceLgcID = 0) Visual Basic: Declare Function CreateDevice Lib "USB5936" (Optional ByVal DeviceLgcID As Integer = 0) As Long Delphi: Function CreateDevice(DeviceLgcID:Integer = 0):Integer; StdCall; External 'USB5936' Name 'CreateDevice'; LabView: DeviceID CreateDevice Return Device Object 功能:该函数负责创建设备对象,并返回其设备对象句柄。 参数: DDeevviicceeLLggccIIDD 设备逻辑 ID( Identifier )标识号。当向同一个 Windows 系统中加入若干相同类型的 USB 设备 时,系统将以该设备的“基本名称”与 DeviceLgcID 标识值为名称后缀的标识符来确认和管理该设备。比如若 5
USB5936 WIN2000/XP 驱动程序使用说明书 版本:6.000 用户往 Windows 系统中加入第一个 USB5936 AD 模板时,系统则以“USB5936”作为基本名称,再以 DeviceLgcID 的初值组合成该设备的标识符“USB5936-0”来确认和管理这第一个设备,若用户接着再添加第二个 USB5936 AD 模板时,则系统将以“USB5936-1”来确认和管理第二个设备,若再添加,则以此类推。所以当用户要创 建设备句柄管理和操作第一个 USB 设备时,DeviceLgcID 应置 0,第二应置 1,也以此类推。默认值为 0。 返回值:如果执行成功,则返回设备对象句柄;如果没有成功,则返回错误码 INVALID_HANDLE_VALUE。 由于此函数已带容错处理,即若出错,它会自动弹出一个对话框告诉您出错的原因。您只需要对此函数的返回 值作一个条件处理即可,别的任何事情您都不必做。 相关函数:ReleaseDevice ♦ 创建设备对象函数(扩展函数) 函数原型: Visual C++ & C++ Builder: HANDLE CreateDeviceEx(int DevicePhysID = 0) Visual Basic: Declare Function CreateDeviceEx Lib "USB5936" (Optional ByVal DevicePhysID As Integer = 0) As Long Delphi: Function CreateDeviceEx(DevicePhysID:Integer = 0):Integer; StdCall; External 'USB5936' Name 'CreateDeviceEx'; LabView: 请参考相关演示程序。 功能:该函数负责创建设备对象,并返回其设备对象句柄。设备对象句柄是访问某一台设备的唯一依据。 不同 DevicePhysID 创建的设备对象句柄用于访问不同的设备。只有成功创建 DevicePhysID 指定设备的句柄后, 设备对用户来讲才是可用的。因为每一个访问设备的驱动函数接口都需要 hDevice 这个设备句柄参数。 参数: DDeevviicceePPhhyyssIIDD 设备物理 ID( Identifier )标识号。如果您使用单个 USB5936 设备,该参数等于 0 即可,且下 面的内容您不必阅读。但如果您需要多卡工作时,此参数便大有用武之地,请阅读下以内容。 假如您所选用的产品只有 32 个 AD 通道,而您需要 128 路信号,那么您就需要同时使用四块卡来实现此 功能。具体办法是您需要将 128 路信号依次分配到四个卡上,如下表: 信号通道 1~32 33~64 65~96 97~128 物理 ID 号 逻辑 ID 号 0 1 2 3 若第二个加载此卡,则为 1,否则为其他号 若最先加载此卡,则为 0,否则为其他号 若第四个加载此卡,则为 3,否则为其他号 若第三个加载此卡,则为 2,否则为其他号 卡号 第一块 第二块 第三块 第四块 从上表可知,如果使用您物理ID号,那么不管怎么安装您的硬件设备,其卡的物理编址不会发生任何变化, 在软件上您用相应的物理ID号创建的设备对象所访问设备在物理顺序上不会发生变化,它始终对应于您的事先 分配的信号通道。而使用逻辑ID号则不然,同样的逻辑ID值可能在不同的拔插顺序下会指向不同的物理设备而 使软件的通道序列与硬件上无法一一对应。为了更好的保证物理通道序列与软件通道序列的对应关系,请务必 保证板上的物理ID设置不重号。否则,CreateDevice ()只能创建重号中逻辑号最小的一个设备的对象,且具体 创建的是哪一个设备也只能由用户根据采样信号特征等大概地确定。需要注意的是,物理ID号的设置有限的。 如果实际设备数量超过这个有限值,那么超过的部分的物理ID号均设置为最大物理ID号,在创建设备对象时自 动按逻辑ID处理。比如该产品的物理ID最多只能管理 16 个设备(ID值为 0~15),如果您要使用 18 个设备,那 么为第 17、18 个设备创建设备对象时,其DevicePhysID应分别等于 16、17。 返回值:如果执行成功,则返回设备对象句柄;如果没有成功,则返回错误码 INVALID_HANDLE_VALUE。 由于此函数已带容错处理,即若出错,它会自动弹出一个对话框告诉您出错的原因。您只需要对此函数的返回 值作一个条件处理即可,别的任何事情您都不必做。 6
北京阿尔泰科技发展有限公司 相关函数:ReleaseDevice Visual C++ & C++Builder 程序举例 if(hDevice==INVALIDE_HANDLE_VALUE) // 判断设备对象句柄是否有效 : HANDLE hDevice; // 定义设备对象句柄 hDevice=CreateDevice(0); // 创建设备对象,并取得设备对象句柄 { } : Visual Basic 程序举例 return; // 退出该函数 : Dim hDevice As Long ' 定义设备对象句柄 hDevice = CreateDevice(0) ' 创建设备对象,并取得设备对象句柄,管理第一个 USB 设备 If hDevice = INVALID_HANDLE_VALUE Then ' 判断设备对象句柄是否有效 Else Exit Sub ' 退出该过程 End If : ♦ 取得在系统中的设备总台数 函数原型: Visual C++ & C++Builder: int GetDeviceCount (HANDLE hDevice) Visual Basic: Declare Function GetDeviceCount Lib "USB5936" (ByVal hDevice As Long) As Integer Delphi: Function GetDeviceCount (hDevice : Integer): Integer; StdCall; External 'USB5936' Name ' GetDeviceCount '; LabView: 请参考相关演示程序。 功能:取得在系统中物理设备的总台数。 参数: hhDDeevviiccee 设备对象句柄,它应由CreateDevice或CreateDeviceEx创建。 返回值:若成功,则返回实际设备台数,否则返回 0,用户可以用GetLastErrorEx捕获错误码。 相关函数:CreateDevice ReleaseDevice ♦ 取得当前设备对象句柄指向的设备所在的设备 ID 函数原型: Visual C++ & C++Builder: BOOL GetDeviceCurrentID (HANDLE hDevice, PLONG DeviceLgcID, PLONG DevicePhysID) Visual Basic: Declare Function GetDeviceCurrentID Lib "USB5936" (ByVal hDevice As Long, _ ByRef DeviceLgcID As Long, _ ByRef DevicePhysID As Long ) As Boolean Delphi: Function GetDeviceCurrentID (hDevice : Integer; 7
分享到:
收藏