Pci2300S.docx

上传人:b****0 文档编号:9243003 上传时间:2023-05-17 格式:DOCX 页数:83 大小:142.25KB
下载 相关 举报
Pci2300S.docx_第1页
第1页 / 共83页
Pci2300S.docx_第2页
第2页 / 共83页
Pci2300S.docx_第3页
第3页 / 共83页
Pci2300S.docx_第4页
第4页 / 共83页
Pci2300S.docx_第5页
第5页 / 共83页
Pci2300S.docx_第6页
第6页 / 共83页
Pci2300S.docx_第7页
第7页 / 共83页
Pci2300S.docx_第8页
第8页 / 共83页
Pci2300S.docx_第9页
第9页 / 共83页
Pci2300S.docx_第10页
第10页 / 共83页
Pci2300S.docx_第11页
第11页 / 共83页
Pci2300S.docx_第12页
第12页 / 共83页
Pci2300S.docx_第13页
第13页 / 共83页
Pci2300S.docx_第14页
第14页 / 共83页
Pci2300S.docx_第15页
第15页 / 共83页
Pci2300S.docx_第16页
第16页 / 共83页
Pci2300S.docx_第17页
第17页 / 共83页
Pci2300S.docx_第18页
第18页 / 共83页
Pci2300S.docx_第19页
第19页 / 共83页
Pci2300S.docx_第20页
第20页 / 共83页
亲,该文档总共83页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Pci2300S.docx

《Pci2300S.docx》由会员分享,可在线阅读,更多相关《Pci2300S.docx(83页珍藏版)》请在冰点文库上搜索。

Pci2300S.docx

Pci2300S

PCI2300

DOS/Win95/98/NT/2000驱动程序使用说明书

目录

第一章

版权信息

第二章

本驱动程序软件的关键文件

第三章

PCI即插即用设备操作函数接口介绍

第一节接口函数列表

第二节PCI2300通用函数

第三节程序方式AD读取函数

第四节简易的数字输入、输出I/O开关量操作函数

第五节PCI内存映射寄存器操作函数

第六节辅助函数(硬件参数设置、保存、读取函数)原型说明

第四章

共用函数介绍

第一节公用接口函数列表

第二节公用接口函数原型说明

第三节其他函数

第五章

硬件参数结构

第一节AD硬件参数结构(PCI2300_PARA_AD)

第二节用于数字I/O输出参数(PCI2300_PARA_DO)

第三节用于数字I/O输入参数(PCI2300_PARA_DI)

第六章

数据转换与排列规则

第一节如何将AD原始数据LSB转换电压值Volt

第二节关于采集函数的InUserRegion缓冲区中的数据排放规则

第七章

上层用户函数接口应用实例

第一节怎样使用ReadDevOneAD函数单点读取AD数据

第二节怎样使用ReadDevBulkAD函数批量读取AD数据

第三节怎样使用SetDeviceDO函数进行更便捷的数字开关量输出操作

第四节怎样使用GetDeviceDI函数进行更便捷的数字开关量输入操作

第八章

底层用户函数接口应用实例

第一节怎样使用映射寄存器读写函数直接编写数据采集程序?

第二节怎样使用映射寄存器读写函数直接编写开关量输入输出程序?

第九章

高速大容量数据采集及存盘技术详解

第一节使用程序查询方式实现该功能

第十章

PCI2300的DOS驱动程序说明

第一章版权信息

本软件产品及相关套件均属北京市阿尔泰科贸有限公司所有,其产权受国家法律绝对保护,除非本公司书面允许,其他公司、单位、我公司授权的代理商及个人不得非法使用和拷贝,否则将受到国家法律的严厉制裁。

您若需要我公司产品及相关信息请及时与我们联系,我们将热情接待。

 

第二章本驱动程序软件的关键文件

(WinDir指Windows的系统根目录,UserDir为本驱动软件的用户安装根目录)

文件名

文件类型及功能

适用的操作系统

文件位置

PCI2300.VxD

动态虚拟设备驱动程序库

Window95/98

WinDir\System

PCI2300.Sys

Win32标准设备驱动WDM模式的设备驱动程序库

WindowsNT/2000

WinDir\System32\Drivers

PCI2300.Dll

底层驱动程序库的用户级函数接口封装所用的动态库。

所有操作系统

WinDir\System

PCI2300.Lib

基于MicrosoftVisualC++工程开发环境的驱动程序函数接口输入库。

所有操作系统

UserDir\Include

或UserDir\Samples\VC…

PCI2300.Lib

基于BorlandC++Builder工程开发环境的驱动程序函数接口输入库。

所有操作系统

UserDir\Samples\C_Builder

PCI2300.Bas

基于MicrosoftVisualBasic工程开发环境的驱动程序函数接口输入模块文件

所有操作系统

UserDir\Samples\VB

PCI2300.Pas

基于BorlandDelphi工程开发环境的驱动程序函数接口输入单元文件。

所有操作系统

UserDir\Samples\Delphi

PCI2300.VI

基于NationalInstrumentLabView工程开发环境的驱动程序函数接口输入部件文件。

(只是外挂驱动接口)

所有操作系统

UserDir\Samples\LabView

 

第三章PCI即插即用设备操作函数接口介绍

  由于我公司的设备应用于各种不同的领域,有些用户可能根本不关心硬件设备的控制细节、只关心AD的首末通道等,然后就能通过一两个简易的采集函数便能轻松得到所需要的AD数据。

这方面的用户我们称之为上层用户。

那么还有一部分用户不仅对硬件控制熟悉,而且由于应用对象的特殊要求,则要直接控制设备的每一个端口,这是一种复杂的工作,但又是必须的工作,我们则把这一群需要直接跟设备端口打交道的用户称之为底层用户。

因此总的看来,上层用户要求简单,快捷,他们最希望他们在软件操作上所要面对的全是他们最关心的问题,比如在正式采集数据之前,只须用户调用一个简易的ReadDevBulkAD函数,告诉设备我要使用多少个通道等信息后便采集到指定的点数。

而关于设备的物理地址、端口分配及功能定义等复杂的硬件信息则与上层用户无任何关系。

那么对于底层用户则不然。

他们不仅要关心设备的物理地址,还要关心虚拟地址、端口寄存器的功能分配,甚至每个端口的Bit位都要了如指掌,看起来这是一项相当复杂、繁琐的工作。

但是这些底层用户一旦使用我们提供的技术支持,则不仅可以让您不必熟悉PCI总线复杂的控制协议,同是还可以省掉您许多繁琐的工作,比如您不用去了解PCI的资源配置空间、PNP即插即用管理,而只须用GetDeviceAddr函数便可以同时取得指定设备的物理基地址和虚拟线性基地址。

这个时候您便可以用这个虚拟线性基地址,再根据硬件使用说明书中的各端口寄存器的功能说明,然后使用ReadPortULong和WritePortULong对这些端口寄存器进行32位模式的读写操作,即可实现设备的所有控制。

  综上所述,用户使用我公司提供的驱动程序软件包极大的方便和满足您的各种需求。

但为了您更省心,别忘了在您正式阅读下面的函数说明时,先得明白自己是上层用户还是底层用户,因为在《第一节接口函数列表》中的备注栏里明确注明了适用对象。

  另外需要申明的是,在本章和下一章中列出的关于LabView的接口,均属于外挂式驱动接口,他是通过LabView的CallLabraryFunction功能模板实现的。

它的特点是除了自身的语法略有不同以外,每一个基于LabView的驱动图标与VisualC++、VisualBasic、Delphi等语言中每个驱动函数是一一对应的,其调用流程和功能是完全相同。

那么相对于外挂式驱动接口的另一种方式是内嵌式驱动。

这种驱动是完全作为LabView编程环境中的紧密耦合的一部分,它可以直接从LabView的Functions模板中取得,如下图所示。

此种方式更适合上层用户的需要,它的最大特点是方便、快捷、简单,而且可以取得它的在线帮助。

此功能由于LabView自身版本兼容的问题,我们不便提供内嵌式驱动,如果用户确有此要求,请与我们的代理商或公司总部联系,但我们不保证完全免费。

关于LabView的外挂式驱动和内嵌式驱动更详细的叙述,请参考附录A的《LabView驱动程序接口》章节。

   LabView内嵌式驱动接口的获取方法

 第一节 接口函数列表(每个函数省略了前缀“PCI2300_”)

函数名

函数功能

备注

PCI通用函数

CreateDevice

创建PCI设备对象

上层及底层用户

GetDeviceCount

取得同一种PCI设备的总台数

上层及底层用户

ListDevice

列表所有同一种PCI设备的各种配置

上层及底层用户

ReleaseDevice

关闭设备,且释放PCI总线设备对象

上层及底层用户

程序方式AD读取函数

ReadDevOneAD

单点读取PCI设备上的AD数据

上层用户

ReadDevBulkAD

批量读取PCI设备上的AD数据

上层用户

开关量简易操作函数

SetDeviceDO

开关输出函数

上层用户

GetDeviceDI

开关输入函数

上层用户

PCI总线内存映射寄存器操作函数

GetDeviceAddr

取得指定PCI设备寄存器操作基地址

底层用户

WritePortByte

以字节(8Bit)方式写I/O端口

用户程序操作端口

WritePortWord

以字(16Bit)方式写I/O端口

用户程序操作端口

WritePortULong

以无符号双字(32Bit)方式写I/O端口

用户程序操作端口

ReadPortByte

以字节(8Bit)方式读I/O端口

用户程序操作端口

ReadPortWord

以字(16Bit)方式读I/O端口

用户程序操作端口

ReadPortULong

以无符号双字(32Bit)方式读I/O端口

用户程序操作端口

WritePortByteEx

以字节(8Bit)方式写I/O端口

NT下直接操作端口

WritePortWordEx

以字(16Bit)方式写I/O端口

NT下直接操作端口

WritePortULongEx

以无符号双字(32Bit)方式写I/O端口

NT下直接操作端口

ReadPortByteEx

以字节(8Bit)方式读I/O端口

NT下直接操作端口

ReadPortWordEx

以字(16Bit)方式读I/O端口

NT下直接操作端口

ReadPortULongEx

以无符号双字(32Bit)方式读I/O端口

NT下直接操作端口

使用需知:

VisualC++&C++Builder:

要使用如下函数关键的问题是:

首先,必须在您的源程序中包含如下语句:

#include“C:

\Art\PCI2300\INCLUDE\PCI2300.H”

注:

以上语句采用默认路径和默认板号,应根据您的板号和安装情况确定PCI2300.H文件的正确路径,当然也可以把此文件拷到您的源程序目录中。

其次,您还应该在VisualC++编译环境软件包的ProjectSetting对话框的Link属性页中的Object/LibraryModule输入行中加入指令C:

\Art\PCI2300\PCI2300.LIB

或者:

单击VisualC++编译环境软件包的Project菜单中的AddToProject的菜单项,在此项中再单击Files…,在随后弹出的对话框中选择PCI2300.Lib,再单击“确定”,即可完成。

注:

以上语句采用默认路径和默认板号,应根据您的板号和安装情况确定PCI2300.LIB的路径,当然也可以把此文件拷到您的源程序目录中。

另外,在VisualC++演示工程的目录下,也有相应的PCI2300.h和PCI2300.Lib文件。

为了驱动程序和相关接口尽量精炼快速,所以没有加任何调试代码,因此用户在使用VC接口的时候应使用发行版本进行源代码编译(Win32Release),而不应该使用调试版本(Win32Debug)。

具体方法是在源代码编译前,执行Build总菜单中的SetActiveConfiguration子菜单命令,便可实现其发行版的设置,然后再编译,即可生成发行版的应用程序。

C++Builder:

要使用如下函数一个关键的问题是首先必须将我们提供的头文件

(PCI2300.H)写进您的源程序头部。

如:

#include“\Art\PCI2300\Include\PCI2300.h”

然后再将PCI2300.Lib库文件分别加入到您的C++Builder工程中。

其具体办法是选择C++Builder集成开发环境中的工程(Project)菜单中的“添加”(AddtoProject)命令,在弹出的对话框中分别选择文件类型:

Libraryfile(*.lib),即可选择PCI2300.Lib文件。

该文件的路径为用户安装驱动程序后其子目录Samples\C_Builder下

VisualBasic:

要使用如下函数一个关键的问题是首先必须将我们提供的模块文件(*.Bas)加入到您的VB工程中。

其方法是选择VB编程环境中的工程(Project)菜单,执行其中的"添加模块"(AddModule)命令,在弹出的对话中选择PCI2300.Bas模块文件,该文件的路径为用户安装驱动程序后其子目录Samples\VB下面。

请注意,因考虑VisualC++和VisualBasic两种语言的兼容问题,在下列函数说明和示范程序中,所举的VisualBasic程序均是需要编译后在独立环境中运行。

所以用户若在解释环境中运行这些代码,我们不能保证完全顺利运行。

Delphi:

要使用如下函数一个关键的问题是首先必须将我们提供的单元模块文件(*.Pas)加入到您的Delphi工程中。

其方法是选择Delphi编程环境中的View菜单,执行其中的"ProjectManager"命令,在弹出的对话中选择*.exe项目,再单击鼠标右键,最后Add指令,即可将PCI2300.Pas单元模块文件加入到工程中。

或者在Delphi的编程环境中的Project菜单中,执行AddToProject命令,然后选择*.Pas文件类型也能实现单元模块文件的添加。

该文件的路径为用户安装驱动程序后其子目录Samples\Delphi下面。

最后请在使用驱动程序接口的源程序文件中的头部的Uses关键字后面的项目中加入:

“PCI2300”。

如:

uses

Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,

PCI2300;//注意:

在此加入驱动程序接口单元PCI2300

LabView/CVI:

LabVIEW是美国国家仪器公司(NationalInstrument)推出的一种基于图形开发、调试和运行程序的集成化环境,是目前国际上唯一的编译型的图形化编程语言。

在以PC机为基础的测量和工控软件中,LabVIEW的市场普及率仅次于C++/C语言。

LabVIEW开发环境具有一系列优点,从其流程图式的编程、不需预先编译就存在的语法检查、调试过程使用的数据探针,到其丰富的函数功能、数值分析、信号处理和设备驱动等功能,都令人称道。

关于LabView/CVI的进一步介绍请见本文最后一部分关于LabView的专述。

其驱动程序接口单元模块的使用方法如下:

一、在LabView中打开PCI2300.VI文件,用鼠标单击接口单元图标,比如CreateDevice图标

然后按Ctrl+C或选择LabView菜单Edit中的Copy命令,接着进入用户的应用程序LabView中,按Ctrl+V或选择LabView菜单Edit中的Paste命令,即可将接口单元加入到用户工程中,然后按以下函数原型说明或演示程序的说明连接该接口模块即可顺利使用。

二、根据LabView语言本身的规定,接口单元图标以黑色的较粗的中坚线为中心,以左边的方格为数据输入端,右边的方格为数据的输出端.

三、在单元接口图标中,凡标有“I32”为有符号长整型32位数据类型,“U16”为无符号短整型16位数据类型,“[U16]”为无符号16位短整型数组或缓冲区或指针,“[U32]”与“[U16]”同理,只是位数不一样。

第二节、PCI2300通用函数

  1、创建设备对象函数

VisualC++&C++Builder:

HANDLECreateDevice(intDeviceID)

VisualBasic:

DeclareFunctionCreateDeviceLib“PCI2300”(ByvalDeviceIDaslong)aslong

Delphi:

FunctionCreateDevice(DeviceID:

Integer):

Integer;

StdCall;External'PCI2300'Name'CreateDevice';

LabView:

 

功能:

该函数负责创建PCI设备对象,并返回其设备对象句柄。

参数:

DeviceID设备ID(Identifier)标识号。

当向同一个Windows系统中加入若干相同类型的PCI设备时,我们的驱动程序将以该设备的“基本名称”与DeviceID标识值为名称后缀的标识符来确认和管理该设备。

比如若用户往Windows系统中加入第一个PCI2300AD模板时,驱动程序则以“PCI2300”作为基本名称,再以DeviceID的初值组合成该设备的标识符“PCI2300-0”来确认和管理这第一个设备,若用户接着再添加第二个PCI2300AD模板时,则系统将以“PCI2300-1”来确认和管理第二个设备,若再添加,则以此类推。

所以当用户要创建设备句柄管理和操作第一个PCI设备时,DeviceID应置0,第二个应置1,也以此类推。

返回值:

如果执行成功,则返回设备对象句柄;如果没有成功,则返回错误码INVALID_HANDLE_VALUE。

由于此函数已带容错处理,即若出错,它会自动弹出一个对话框告诉您出错的原因。

您只需要对此函数的返回值作一个条件处理即可,别的任何事情您都不必做。

相关函数:

ReleaseDevice

VisualC++&C++Builder程序举例

HANDLEhDevice;//定义设备对象句柄

hDevice=CreateDevice(0);//创建设备对象,并取得设备对象句柄

if(hDevice==INVALIDE_HANDLE_VALUE);//判断设备对象句柄是否有效

{return;//退出该函数

VisualBasic程序举例

DimhDeviceAsLong'定义设备对象句柄

hDevice=CreateDevice(0)'创建设备对象,并取得设备对象句柄

IfhDevice=INVALID_HANDLE_VALUEThen'判断设备对象句柄是否有效

Else

ExitSub'退出该过程

EndIf

  2、取得本计算机系统中PCI2300设备的总数量

函数原型:

VisualC++&C++Builder:

intGetDeviceCount(HANDLEhDevice)

VisualBasic:

DeclareFunctionGetDeviceCountLib"PCI2300"(ByValhDeviceAsLong)AsLong

Delphi:

FunctionPCI2300_GetDeviceCount(hDevice:

Integer):

Integer;

StdCall;External'PCI2300'Name'GetDeviceCount';

LabView:

函数原型:

功能:

取得PCI2300设备的数量。

参数:

hDevice设备对象句柄,它应由CreateDevice创建。

返回值:

返回系统中PCI2300的数量。

相关函数:

CreateDevice

ReleaseDevice

3、用对话框控件列表计算机系统中所有PCI2300设备各种配置信息

函数原型:

VisualC++&C++Builder:

BOOLListDevice(HANDLEhDevice)

VisualBasic:

DeclareFunctionListDeviceLib"PCI2300"(ByValhDeviceAsLong)AsBoolean

Delphi:

FunctionListDevice(hDevice:

Integer):

Boolean;

StdCall;External'PCI2300'Name'ListDevice';

LabView:

功能:

列表系统中PCI2300的硬件配置信息。

参数:

hDevice设备对象句柄,它应由CreateDevice创建。

返回值:

若成功,则返回列表设备。

相关函数:

CreateDevice

ReleaseDevice

4、释放设备对象所占的系统资源及设备对象

函数原型:

VisualC++&C++Builder:

BOOLReleaseDevice(HANDLEhDevice)

VisualBasic:

DeclareFunctionReleaseDeviceLib"PCI2300"(ByValhDeviceAsLong)AsBoolean

Delphi:

FunctionReleaseDevice(hDevice:

Integer):

Boolean;

StdCall;External'PCI2300'Name'ReleaseDevice';

LabView:

功能:

释放设备对象所占用的系统资源及设备对象自身。

参数:

hDevice设备对象句柄,它应由CreateDevice创建。

返回值:

若成功,则返回TRUE,否则返回FALSE,用户可以用GetLastError捕获错误码。

相关函数:

CreateDevice

应注意的是,CreateDevice必须和ReleaseDevice函数一一对应,即当您执行了一次CreateDevice后,再一次执行这些函数前,必须执行一次ReleaseDevice函数,以释放由CreateDevice占用的系统软硬件资源,如DMA控制器,系统内存等。

只有这样,当您再次调用CreateDevice函数时,那些软硬件资源才可被再次使用。

第三节、程序方式AD读取函数

1、单点读取PCI设备上的AD数据

函数原型:

VisualC++&C++Builder:

WORDReadDevOneAD(HANDLEhDevice,

intADChannel)

VisualBasic:

DeclareFunctionReadDevOneADLib"PCI2300"(

ByValhDeviceasLong,_

ByRefADChannelAsInteger)AsInteger

Delphi:

FunctionReadDevOneAD(hDevice:

Integer;

ADChannel:

Integer):

Word;

StdCall;External'PCI2300'Name'ReadDevOneAD';

LabView:

 

功能:

用户每调用一次该函数,即可从PCI设备上取得一个点的AD原始数据。

参数:

hDevice设备对象句柄,它应由CreateDevice创建。

ADChannel接受AD数据的用户缓冲区。

关于如何将这些AD数据转换成相应的电压值,请参考请第七章《数据格式转换与排列规则》。

返回值:

返回由ADChannel参数指定通道上的一个AD数据。

关于如何将这些AD数据转换成相应的电压值,请参

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2