




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ART8001 Win95/98/NT/2000 驱 动 程 序 使 用 说 明 书请您务必阅读使用纲要,他会使您事半功倍! 目 录 第一章版权信息第二章绪 论第一节 使用纲要第三章PC104即插即用设备操作函数接口介绍第一节 设备驱动接口函数列表第二节 设备对象管理函数原型说明第三节 AD数据采样操作函数原型说明第四节 AD数据传输函数原型说明第五节 AD硬件参数系统保存与读取函数原型说明第四章硬件参数结构第一节 AD硬件参数结构第二节 AD硬件状态结构(ART8001_STATUS_AD)第五章数据转换与排列规则第一节 如何将AD原始数据LSB转换电压值Volt第二节 关于采集函数的ADBuffer缓冲区中的数据排放规则第三节 关于测试应用程序创建并形成的数据文件格式第六章上层用户函数接口应用实例第一节 怎样使用ReadDeviceProAD函数直接取得AD数据第七章共用函数介绍(辅助功能)第一节 公用接口函数列表第二节 公用接口函数原型说明第三节 其他函数附录A LabView/CVI图形语言专述第一章图形化编程语言LabVIEW环境及其开放性第二章LabView驱动程序接口第一节 内嵌式驱动程序介绍 第一章 版权信息本软件产品及相关套件均属北京市阿尔泰科技发展有限公司所有,其产权受国家法律绝对保护,除非本公司书面允许,其他公司、单位、我公司授权的代理商及个人不得非法使用和拷贝,否则将受到国家法律的严厉制裁。您若需要我公司产品及相关信息请及时与我们联系,我们将热情接待。 第二章绪 论第一节、 使用纲要一、使用上层用户函数,高效、简单如果您只关心通道及频率等基本参数,而不必了解复杂的硬件知识和控制细节,那么我们强烈建议您使用上层用户函数,它们就是几个简单的形如Win32 API的函数,具有相当的灵活性、可靠性和高效性。诸如InitDeviceAD、ReadDeviceProAD等。而底层用户函数如WriteRegisterULong、ReadRegisterULong、WritePortByte、ReadPortByte则是满足了解硬件知识和控制细节、且又需要特殊复杂控制的用户。但不管怎样,我们强烈建议您使用上层函数(在这些函数中,您见不到任何设备地址、寄存器端口、中断号等物理信息,其复杂的控制细节完全封装在上层用户函数中。)对于上层用户函数的使用,您基本上可以必参考硬件说明书,除非您需要知道板上D型插座等管脚分配情况。因为上层函数的命名、参数的命名极其规范。二、如何管理PC104设备由于我们的驱动程序采用面向对象编程,所以要使用设备的一切功能,则必须首先用CreateDevice函数创建一个设备对象句柄hDevice,有了这个句柄,您就拥有了对该设备的绝对控制权。然后将此句柄作为参数传递给其他函数,如InitDeviceAD可以使用hDevice句柄以程序查询方式初始化设备的AD部件,ReadDeviceProAD函数可以用hDevice句柄实现对AD数据的采样读取。最后可以通过ReleaseDevice将hDevice释放掉。三、如何用AD数据采集当您有了hDevice设备对象句柄后,便可用InitDeviceAD函数初始化AD部件,关于频率等参数的设置是由这个函数的pADPara参数结构体决定的。您只需要对这个pADPara参数结构体的各个成员简单赋值即可实现所有硬件参数和设备状态的初始化。接着用StartDeviceAD即可启动AD部件,开始AD采样,GetDevStatusAD函数以查询AD的状态,若状态表明所有数据转换完成,便可用ReadDeviceProAD()读取AD数据。如果要反复采样,则重复前面斜体字表明的过程。当您需要暂停设备时,执行StopDeviceAD,当您需要关闭AD设备时,ReleaseDeviceAD便可帮您实现(但设备对象hDevice依然存在)具体执行流程请看下面的图2.1.1。注意:图中较粗的虚线表示对称关系。如红色虚线表示CreateDevice和ReleaseDevice两个函数的关系是:最初执行一次CreateDevice,在结束是就须执行一次ReleaseDevice。开始创建设备对象CreateDevice()重新初始化AD接着再启动AD图2.1.1 AD采集实现过程结 束不需要释放设备对象ReleaseDevice()需要否需要改变频率等参数后再采集吗?是需要再紧接启动AD以获取新数据吗?读取AD数据,并处理数据ReadDeviceProAD () 查询方式AD状态GetDevStatusAD ()启动AD设备StartDeviceAD()初始化设备对象ADInitDeviceAD()四、如何实现DA的简便输出当您有了hDevice设备对象句柄后,首先用函数实现DA的复位操作,然后反复调用WriteDeviceProDA函数输出每一个DA数据。五、哪些函数对您不是必须的?当公共函数如CreateFileObject, WriteFile,ReadFile等一般来说都是辅助性函数,除非您要使用存盘功能。如果您使用上层用户函数访问设备,那么GetDeviceAddr,WriteRegisterByte, WriteRegisterWord, WriteRegisterULong, ReadRegisterByte, ReadRegisterWord, ReadRegisterULong等函数您可完全不必理会,除非您是作为底层用户管理设备。而WritePortByte, WritePortWord, WritePortULong, ReadPortByte, ReadPortWord, ReadPortULong则对PC104用户来说,可以说完全是辅助性,它们只是对我公司驱动程序的一种功能补充,对用户额外提供的,它们可以帮助您在NT、Win2000等操作系统中实现对您原有传统设备如ISA卡、串口卡、并口卡的访问,而没有这些函数,您可能在新操作系统中无法继续使用您原有的老设备(除非您自己愿意去编写复杂的硬件驱动程序)。第三章 PC104即插即用设备操作函数接口介绍由于我公司的设备应用于各种不同的领域,有些用户可能根本不关心硬件设备的控制细节、只关心AD的首末通道、采样频率等,然后就能通过一两个简易的采集函数便能轻松得到所需要的AD数据。这方面的用户我们称之为上层用户。那么还有一部分用户不仅对硬件控制熟悉,而且由于应用对象的特殊要求,则要直接控制设备的每一个端口,这是一种复杂的工作,但又是必须的工作,我们则把这一群需要直接跟设备端口打交道的用户称之为底层用户。因此总的看来,上层用户要求简单,快捷,他们最希望他们在软件操作上所要面对的全是他们最关心的问题,比如在正式采集数据之前,只须用户调用一个简易的初始化函数(如InitDeviceAD)告诉设备我要使用多少个通道,采样频率是多少赫兹等,然后便可以用ReadDeviceProAD函数只须指定每次采集的点数,即可实现数据连续不间断采样。而关于设备的物理地址、端口分配及功能定义等复杂的硬件信息则与上层用户无任何关系。那么对于底层用户则不然。他们不仅要关心设备的物理地址,还要关心虚拟地址、端口寄存器的功能分配,甚至每个端口的Bit位都要了如指掌,看起来这是一项相当复杂、繁琐的工作。但是这些底层用户一旦使用我们提供的技术支持,则不仅可以让您不必熟悉PC104总线复杂的控制协议,同是还可以省掉您许多繁琐的工作,比如您不用去了解PC104的资源配置空间、PNP即插即用管理,而只须用GetDeviceAddr函数便可以同时取得指定设备的物理基地址和虚拟线性基地址。这个时候您便可以用这个虚拟线性基地址,再根据硬件使用说明书中的各端口寄存器的功能说明,然后使用ReadRegisterULong和WriteRegisterULong对这些端口寄存器进行32位模式的读写操作,即可实现设备的所有控制。综上所述,用户使用我公司提供的驱动程序软件包极大的方便和满足您的各种需求。但为了您更省心,别忘了在您正式阅读下面的函数说明时,先得明白自己是上层用户还是底层用户,因为在第一节 接口函数列表中的备注栏里明确注明了适用对象。另外需要申明的是,在本章和下一章中列明的关于LabView的接口,均属于外挂式驱动接口,他是通过LabView的Call Labrary Function功能模板实现的。它的特点是除了自身的语法略有不同以外,每一个基于LabView的驱动图标与Visual C+、Visual Basic、Delphi等语言中每个驱动函数是一一对应的,其调用流程和功能是完全相同。那么相对于外挂式驱动接口的另一种方式是内嵌式驱动。这种驱动是完全作为LabView编程环境中的紧密耦合的一部分,它可以直接从LabView的Functions模板中取得,如下图所示。此种方式更适合上层用户的需要,它的最大特点是方便、快捷、简单,而且可以取得它的在线帮助。关于LabView的外挂式驱动和内嵌式驱动更详细的叙述,请参考附录A的LabView驱动程序接口章节。 LabView内嵌式驱动接口的获取方法 第一节设备驱动接口函数列表(每个函数省略了前缀“ART8001_”) 函数名函数功能备注设备对象操作函数CreateDevice创建PC104设备对象上层及底层用户ReleaseDevice关闭设备,且释放PC104总线设备对象上层及底层用户AD数据采样操作函数InitDeviceAD初始化PC104设备上的AD部件准备传输上层用户SetDevFreqencyAD可动态改变AD采样频率上层用户StartDeviceAD启动AD设备,开始转换上层用户GetDevStatusAD取得当前AD状态上层用户AD数据传输函数ReadDeviceProAD以程序方式读取PC104设备上的AD数据上层用户AD硬件参数系统保存、读取函数LoadParaAD从Windows系统中读入硬件参数上层用户SaveParaAD往Windows系统写入设备硬件参数上层用户使用需知:Visual C+ & C+Builder:要使用如下函数关键的问题是:首先,将ART8001.h和ART8001.lib文件从Visual C+的源程序目录下的任意一个子目录下复制到您的源程序目录下(若有Advanced高级源程序目录,则最好选择它),然后在您的源程序中包含如下语句(若想在整个工程的所有源代码文件中使用本驱动,请您最好在StdAfx.h全局头文件中包含如下语句):#include “ART8001.H”那么对于导入库ART8001.lib文件您则可以不必再加入您的工程,因为ART8001.h头文件已帮助自动完成了。C+ Builder:首先,将ART8001.h和ART8001.lib文件从C+Builder的源程序目录任意一个子目录下复制到您的源程序目录下,(若有Advanced高级源程序目录,则最好选择它)然后在您的源程序中包含如下语句:#include “ART8001.H”那么对于导入库ART8001.lib文件您则可以不必再加入您的工程,因为ART8001.h头文件已帮助自动完成了。Visual Basic: 要使用如下函数一个关键的问题是首先必须将我们提供的模块文件(*.Bas)加入到您的VB工程中。其方法是选择VB编程环境中的工程(Project)菜单,执行其中的添加模块(Add Module)命令,在弹出的对话中选择ART8001.Bas模块文件,该文件的路径为用户安装驱动程序后其子目录SamplesVB下面。请注意,因考虑Visual C+和Visual Basic两种语言的兼容问题,在下列函数说明和示范程序中,所举的Visual Basic程序均是需要编译后在独立环境中运行。所以用户若在解释环境中运行这些代码,我们不能保证完全顺利运行。 Delphi:要使用如下函数一个关键的问题是首先必须将我们提供的单元模块文件(*.Pas)加入到您的Delphi工程中。其方法是选择Delphi编程环境中的View菜单,执行其中的Project Manager命令,在弹出的对话中选择*.exe项目,再单击鼠标右键,最后Add指令,即可将ART8001.Pas单元模块文件加入到工程中。或者在Delphi的编程环境中的Project菜单中,执行Add To Project命令,然后选择*.Pas文件类型也能实现单元模块文件的添加。该文件的路径为用户安装驱动程序后其子目录SamplesDelphi下面。最后请在使用驱动程序接口的源程序文件中的头部的Uses关键字后面的项目中加入:“ART8001”。如:uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ART8001; / 注意: 在此加入驱动程序接口单元ART8001 LabView/CVI : LabVIEW是美国国家仪器公司(National Instrument)推出的一种基于图形开发、调试和运行程序的集成化环境,是目前国际上唯一的编译型的图形化编程语言。在以 PC 机为基础的测量和工控软件中,LabVIEW的市场普及率仅次于C+/C语言。LabVIEW开发环境具有一系列优点,从其流程图式的编程、不需预先编译就存在的语法检查、调试过程使用的数据探针,到其丰富的函数功能、数值分析、信号处理和设备驱动等功能,都令人称道。关于LabView/CVI的进一步介绍请见本文最后一部分关于LabView的专述。其驱动程序接口单元模块的使用方法如下:一、 在LabView中打开ART8001.VI文件,用鼠标单击接口单元图标,比如CreateDevice图标 然后按Ctrl+C或选择LabView菜单Edit中的Copy命令,接着进入用户的应用程序LabView中,按Ctrl+V或选择LabView菜单Edit中的Paste命令,即可将接口单元加入到用户工程中,然后按以下函数原型说明或演示程序的说明连续该接口模块即可顺利使用。二、 根据LabView语言本身的规定,接口单元图标以黑色的较粗的中坚线为中心,以左边的方格为数据输入端,右边的方格为数据的输出端,如ReadDeviceProAD接口单元,左边为设备对象句柄、用户分配的数据缓冲区、要求采集的数据长度等信息从接口单元左边输入端进入单元,待单元接口被执行后,需要返回给用户的数据从接口单元右边的输出端输出,其他接口完全同理。三、在单元接口图标中,凡标有“I32”为有符号长整型32位数据类型,“U16”为无符号短整型16位数据类型,“U16”为无符号16位短整型数组或缓冲区或指针,“U32”与“U16”同理,只是位数不一样。第二节、 设备对象管理函数原型说明u 创建设备对象函数 Visual C+ & C+Builder: HANDLE CreateDevice (int DeviceID=0) Visual Basic: Declare Function CreateDevice Lib “ART8001”(Optional ByVal DeviceID As long = 0) As long Delphi: Function CreateDevice(DeviceID:Integer = 0):Integer; StdCall; External ART8001 Name CreateDevice; LabView: 功能:该函数负责创建PC104设备对象,并返回其设备对象句柄。 参数:DeviceID 设备ID( Identifier )标识号。当向同一个Windows系统中加入若干相同类型的PC104设备时,我们的驱动程序将以该设备的“基本名称”与DeviceID标识值为名称后缀的标识符来确认和管理该设备。比如若用户往Windows系统中加入第一个ART8001 AD模板时,驱动程序则以“ART8001”作为基本名称,再以DeviceID的初值组合成该设备的标识符“ART8001-0”来确认和管理这第一个设备,若用户接着再添加第二个ART8001 AD模板时,则系统将以“ART8001-1”来确认和管理第二个设备,若再添加,则以此类推。所以当用户要创建设备句柄管理和操作第一个PC104设备时,DeviceID应置0,第二个应置1,也以此类推。但默认值为0。返回值:如果执行成功,则返回设备对象句柄;如果没有成功,则返回错误码INVALID_HANDLE_VALUE。由于此函数已带容错处理,即若出错,它会自动弹出一个对话框告诉您出错的原因。您只需要对此函数的返回值作一个条件处理即可,别的任何事情您都不必做。相关函数:ReleaseDevice Visual C+ & C+Builder程序举例 : HANDLE hDevice; / 定义设备对象句柄 hDevice=CreateDevice ( 0 ); / 创建设备对象,并取得设备对象句柄 if(hDevice=INVALIDE_HANDLE_VALUE); / 判断设备对象句柄是否有效 return; / 退出该函数 ) : Visual Basic程序举例 : Dim hDevice As Long 定义设备对象句柄 hDevice = CreateDevice ( 0 ) 创建设备对象,并取得设备对象句柄 If hDevice = INVALID_HANDLE_VALUE Then 判断设备对象句柄是否有效 Else Exit Sub 退出该过程End If: u 释放设备对象所占的系统资源及设备对象函数原型:Visual C+ & C+Builder: BOOL ReleaseDevice(HANDLE hDevice) Visual Basic: Declare Function ReleaseDevice Lib ART8001 (ByVal hDevice As Long ) As BooleanDelphi:Function ReleaseDevice(hDevice : Integer):Boolean; StdCall; External ART8001 Name ReleaseDevice; LabView: 功能:释放设备对象所占用的系统资源及设备对象自身。 参数:hDevice 设备对象句柄,它应由CreateDevice创建。 返回值:若成功,则返回TRUE, 否则返回FALSE, 用户可以用GetLastError捕获错误码。相关函数:CreateDevice应注意的是,CreateDevice必须和ReleaseDevice函数一一对应,即当您执行了一次CreateDevice后,再一次执行这些函数前,必须执行一次ReleaseDevice函数,以释放由CreateDevice占用的系统软硬件资源,如系统内存等。只有这样,当您再次调用CreateDevice函数时,那些软硬件资源才可被再次使用。第三节、AD数据采样操作函数原型说明u 初始化设备对象函数原型Visual C+ & C+Builder: BOOL InitDeviceAD( HANDLE hDevice, PART8001_PARA_AD pADPara) Visual Basic: Declare Function InitDeviceAD Lib ART8001 (ByVal hDevice as Long, _ ByRef pADPara As PART8001_PARA_AD) As BooleanDelphi: Function InitDeviceAD(hDevice : Integer; pADPara:PART8001_PARA_AD; StdCall; External ART8001 Name InitDeviceAD; LabView(包括相关演示): 功能:它负责初始化设备对象中的AD部件,为设备操作就绪有关工作,如预置触发模式、采样频率等。但它并不启动AD设备,若要启动AD设备,须在调用此函数之后再调用StartDeviceAD。参数:hDevice 设备对象句柄,它应由CreateDevice创建。pADPara 设备对象参数结构, 它决定了设备对象的各种状态及工作方式,如采样频率等。关于具体操作请参考第硬件参数结构中的AD硬件参数结构。返回值:如果初始化设备对象成功,则返回TRUE, 否则返回FALSE, 用户可用GetLastError捕获当前错误码,并加以分析。相关函数:CreateDevice InitDeviceADSetDevFreqencyAD StartDeviceADGetDevStatusADReadDeviceProADReleaseDeviceu 动态改变采样频率函数原型Visual C+ & C+Builder: BOOL SetDevFreqencyAD ( HANDLE hDevice, LONG Frequency) Visual Basic: Declare Function SetDevFreqencyAD Lib ART8001 (ByVal hDevice as Long, _ ByVal Frequency As Long) As BooleanDelphi: Function SetDevFreqencyAD (hDevice : Integer; Frequency: LongWord; StdCall; External ART8001 Name SetDevFreqencyAD ; LabView(包括相关演示):功能:在AD采样过程中,可动态改变采样频率。参数:hDevice 设备对象句柄,它应由CreateDevice创建。Frequency 指定AD的当前采样频率,单位Hz。AD的实际采样率由板上时钟振荡器(也称晶振)的80MHz频率板载逻辑控制单元分频后得到。返回值:如果调用成功,则返回TRUE,否则返回FALSE, 用户可用GetLastError捕获当前错误码,并加以分析。相关函数:CreateDevice InitDeviceADSetDevFreqencyAD StartDeviceADGetDevStatusADReadDeviceProADReleaseDeviceu 启动AD设备函数原型Visual C+ & C+Builder: BOOL StartDeviceAD ( HANDLE hDevice ) Visual Basic: Declare Function StartDeviceAD Lib ART8001 (ByVal hDevice as Long )Delphi: Function StartDeviceAD (hDevice : Integer ): Boolean; StdCall; External ART8001 Name StartDeviceAD ; LabView(包括相关演示):功能:启动AD设备,它必须在调用InitDeviceAD后才能调用此函数。该函数除了启动AD设备开始新一轮转换,并且复位GetDevStatusAD返回的完成状态,使其返回FALSE,至到写满整个RAM(即转换完成)参数:hDevice 设备对象句柄,它应由CreateDevice创建。返回值:如果调用成功,则返回TRUE,且AD立刻开始转换, 否则返回FALSE, 用户可用GetLastError捕获当前错误码,并加以分析。相关函数:CreateDevice InitDeviceADSetDevFreqencyAD StartDeviceADGetDevStatusADReadDeviceProADReleaseDeviceu 取得AD的状态标志 Visual C+ & C+Builder:BOOL GetDevStatusAD ( HANDLE hDevice, PART8001_STATUS_AD pADStatus) Visual Basic:Declare Function GetDevStatusAD Lib ART8001 (ByVal hDevice As Long, _ pADStatus As ART8001_STATUS_AD ) As Boolean Delphi:Function GetDevStatusAD (hDevice : Integer; pADStatus: PART8001_STATUS_AD):Boolean; StdCall; External ART8001 Name GetDevStatusAD ;LabView:功能:一旦用户使用StartDeviceAD后,应立即用此函数查询AD状态去同步RAM读操作。当返回TRUE时,表示AD已经转换完成,即所有通道的RAM已被写满数据,用户便可调用ReadDeviceProAD函数读取RAM中的AD数据。由于每个通道具有512K点(字)的存储器深度,因此当调用StartDeviceAD 启动AD时,写满RAM需要一定时间,当写满时,即该函数返回TRUE,否则返回FALSE,用户应继续等待。 参数:hDevice 设备对象句柄,它应由CreateDevice创建。pADStatus 设备的各种状态,它包括AD是否正在转换、触发事件是否已产生等状态信息。它的具体定义请参考 AD硬件状态结构(ART8001_STATUS_AD) 返回值:若AD已全部转换完成,则返回TRUE,否则返回FALSE。当GetDevStatusAD函数返回TRUE时,应立即调用ReadDeviceProAD函数读取RAM中的AD数据。否则用户应继续循环轮询AD状态,直到有效为止。注意在循环轮询期间,可以用Sleep这样的Win32 API函数抛出一定的时间给其他应用程序(包括本应用程序的主程序和其他子线程),以提高系统的整体数据处理效率。相关函数:CreateDevice InitDeviceADSetDevFreqencyAD StartDeviceADGetDevStatusADReadDeviceProADReleaseDevice u 采样和和传输函数一般调用顺序 CreateDevice InitDeviceAD StartDeviceAD GetDevStatusAD (循环查询AD状态) ReadDeviceProAD ReleaseDevice关于过程的图形说明请参考第二章绪论的第一节使用纲要。您可以重复执行步以实现高速循环采集。第四节、AD数据传输函数原型说明 u 以程序方式将PC104设备上RAM中的AD数据传输至主机 函数原型: Visual C+ & C+Builder:LONG ReadDeviceProAD ( HANDLE hDevice, SHORT ADBuffer, LONG nReadOffsetWords, LONG nReadSizeWords, LONG nADChannel) Visual Basic:Declare Function ReadDeviceProAD Lib ART8001 ( _ ByVal hDevice as Long, _ ByRef ADBuffer As Integer,_ ByVal nReadOffsetWords As Long,_ ByVal nReadSizeWords As Long,_ ByVal nADChannel As Long) As Long Delphi:Function ReadDeviceProAD (hDevice : Integer; ADBuffer : PWordArray; nReadOffsetWords : LongInt nReadSizeWords:LongInt; nADChannel : LongInt):LongInt; StdCall; External ART8001 Name ReadDeviceProAD;LabView:功能:用户随时可以用此函数读取设备上RAM中的AD数据。一般用户使用GetDevStatusAD查询到完成标志后,才用此函数读取设备上的AD数据。(它用软件方式即CPU指令读取RAM中的AD数据)参数:hDevice 设备对象句柄,它应由CreateDevice创建。ADBuffer 接受AD数据的用户缓冲区地址,它可以是一个16Bit整型数组,也可以是由其他方式分配的16Bit整型缓冲区。关于如何将这些AD数据转换成相应的电压值,请参考请数据格式转换与排列规则。nReadOffsetWords指定当前从物理缓冲区即板上RAM中的起始位置(以点/字为单位),但应双点对齐,否则其偏移位自动以该参数-1的位置读取。此参数不能超过RAM的最大长度(字/点)。注意RAM中的最前端12个点总是无效的。nReadSizeWords 指定一次从物理缓冲区RAM中由nReadOffsetWords 指定偏移位置开始读取的长度,但应双点对齐,否则其偏移位自动以该参数-1的长度读取。注意此参数的值与nReadOffsetWords参数值之和不能大于指定通道的物理缓冲区即板上RAM的最大长度。此参数值不能大于ADBuffer指定的缓冲区的长度。nADChannel指定AD通道号(0-3) 返回值: 其返回值表示所成功读取的数据点数(字),也表示当前读操作在ADBuffer缓冲区中的有效数据量。通常情况下其返回值应与ReadSizeWords参数指定量的数据长度(字)相等,如果等于-1,则设备可能有问题此时用户可用GetLastError捕获当前错误码,并加以分析(或者用EnableShowMessage函数开放驱动错误时的提示信息)。注释:此函数也可用于2点读取和多个点的读取,只需要将nReadSizeWords设置成2或相应值即可。 并且此函数在任何时间可以读取RAM中的数据,且可以反复读取数据,当启动一次后,反复读取RAM中相同位置上的数据,其数据均一样。只有和启动函数、查询函数配合起来,才能达到您重新采集或循环采集的要求。相关函数:CreateDevice InitDeviceADSetDevFreqencyAD StartDeviceADGetDevStatusADReadDeviceProADReleaseDevice 第五节、AD硬件参数系统保存与读取函数原型说明 1、从Windows系统中读入硬件参数函数 函数原型: Visual C+ & C+ Builder:BOOL LoadParaAD(HANDLE hDevice, PART8001_PARA_AD pADPara) Visual Basic: Declare Function LoadParaAD Lib ART8001 (ByVal hDevice As Long, _ pADPara As ART8001_PARA_AD) As Boolean Delphi: Function LoadParaAD (hDevice : Integer; pADPara:PART8001_PARA_AD):Boolean; StdCall; External ART8001 Name LoadParaAD ;Labview: 功能:负责从Windows系统中读取设备的硬件参数。 参数: hDevice 设备对象句柄,它应由CreateDevice创建。pADPara属于PART8001_PARA_AD的结构指针类型,它负责返回PC104硬件参数值,关于结构指针类型PART8001_PARA_AD请参考ART8001.h或ART8001.Bas或ART8001.Pas函数原型定义文件,也可参考本文第六章硬件参数结构关于该结构的有关说明。返回值:若成功,返回TRUE,否则返回FALSE。相关函数:CreateDevice LoadParaADSaveParaADReleaseDevice u 往Windows系统写入设备硬件参数函数 函数原型: Viusal C+ & C+ Builder: BOOL SaveParaAD (HANDLE hDevice, PART8001_PARA_AD pADPara) Visual Basic: Declare Function SaveParaAD Lib ART8001 (ByVal hDevice As Long, _ pADPara As ART8001_PARA_AD) As Boolean Delphi: Function SaveParaAD (hDevice : Integer; pADPara:PART8001_PARA_AD):Boolean; StdCall; External ART8001 Name SaveParaAD ; Labview: 功能:负责把用户设置的硬件参数保存在Windows系统中,以供下次使用。 参数: hDevice 设备对象句柄,它应由CreateDevice创建。pADPara设备硬件参数,关于ART8001_PARA_AD的详细介绍请参考ART8001.h或ART8001.Bas或ART8001.Pas函数原型定义文件,也可参考本文第六章硬件参数结构关于该结构的有关说明。 返回值:若成功,返回TRUE,否则返回FALSE。相关函数:CreateDevice LoadParaADSaveParaADReleaseDevice第五章硬件参数结构第一节、 AD硬件参数结构(ART8001_PARA_AD)Visual C+ & C+Builder:typedef struct _ART8001_PARA_ADLONG Frequency; / 采集频率,单位为Hz,(大于0.01Hz),为正数时,以1Hz为单位,反之以0.001Hz为单位LONG InputRange2; / 2个通道的模拟量输入量程选择LONG CouplingType2;/ 耦合类型(直流耦合, 交流耦合)LONG SampleLength;/ 采样长度(字)LONG M_Length; / M段长度(字)LONG N_Length; / N段长度(字)LONG TriggerMode;/ 触发模式(软件触发、中间触发)LONG TriggerSource;/ 触发源信号选择(AI0, AI1, ETR)LONG TriggerDir;/ 触发方向选择(正向/负向触发)LONG TrigLevelVolt; / 触发电平(-10000mV - +10000mV)LONG bAvailableTrig; / 当触发事件提前时,是否有效?(=TRUE:有效,=FALSE:忽略)LONG TrigWindow;/ 设置触发灵敏度(0-255)ART8001_PARA_AD, *PART8001_PARA_AD;Visual Basic:Type ART8001_PARA_AD Frequency As Long 采集频率,单位为Hz,(大于0.01Hz),为正数时,以1Hz为单位,反之以0.001Hz为单位InputRange(0 to 1) As Long 2个通道的模拟量输入量程选择CouplingType (0 to 1) As Long 2个通道的耦合类型(直流耦合, 交流耦合)SampleLength As Long 采样长度(字)M_Length As Long M段长度(字)N_Length As Long N段长度(字)TriggerMode As Long 触发模式(软件触发、中间触发)TriggerSource As Long 触发源信号选择(AI0, AI1, ETR)TriggerDir As Long 触发方向选择(正向/负向触发)TrigLevelLsb As Long 触发电平(-10000mV - +10000mV)bAvailableTrig As Long 当触发事件提前时,是否有效?(=TRUE:有效,=FALSE:忽略)TrigWindow As Long 设置触发灵敏度(0-255)End TypeDelphi:Type / 定义结构体数据类型 PART8001_PARA_AD = ART8001_PARA_AD; / 指针类型结构 ART8001_PARA_AD = record / 标记为记录型 Frequency : LongInt; / 采集频率,单位为Hz,(大于0.01Hz),为正数时,以1Hz为单位,反之以0.001Hz为单位InputRange2 : LongInt; / 2个通道的模拟量输入量程选择CouplingType2:LongInt/ 2个通道的耦合类型(直流耦合, 交流耦合)SampleLength : LongInt;/ 采样长度(字)M_Length : LongInt;/ M段长度(字)N_Length : LongInt; / N段长度(字)TriggerMode : LongInt;/ 触发模式(软件触发、中间触发)TriggerSource : LongInt;/ 触发源信号选择(AI0, AI1, ETR)TriggerDir : LongInt;/ 触发方向选择(正向/负向触发)TrigLevelLsb : LongInt; / 触发电平(-10000mV - +10000mV)bAvailableTrig : LongInt; / 当触发事件提前时,是否有效?(=TRUE:有效,=FALSE:忽略)TrigWindow: LongInt;/设置触发灵敏度(0-255)End;LabView: 略首先请您关注一下这个结构实在太简易了。其原因就是设计的产品是完全即插即用的,是由驱动软件全自动管理的,什么端口地址,中断号,DMA通道号等将与PC104设备的用户永远告别,一句话PC104设备加上我们提供的驱动软件使您更容易使用该产品。此结构主要用于设定设备AD硬
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 过氧化氢消毒机标准化操作流程
- 综合管理在房地产项目中的重要性
- 甜美女孩粉色甜蜜妆容
- 团建活动及旅游福利
- 淡蓝色的元旦小朋友的快乐故事
- 护理团队合作与沟通
- 家政服务人员心理边界建立
- 德克士的新品发布策略
- 保险公司新年活动方案
- 保险公司绩效策划方案
- 新能源汽车热泵空调原理(教案)
- GB/T 4303-2023船用救生衣
- 良知与悲悯作文800字议论文
- (医学课件)嵌体(包括图解)
- 油田开发规划经济评价方法
- 投标报价得分测算表
- 校园节能管理与评估项目可行性总结报告
- 地毯清洁培训计划方案
- TikTok for Business营销通案【互联网】【短视频】
- 合规风险管理指南-应用COSO 企业风险管理框架(2020版-雷泽佳译-2022)
- 复韵母复习公开课一等奖市优质课赛课获奖课件
评论
0/150
提交评论