⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pci8613.bas

📁 VB PCI8613控制卡AD转换的例程
💻 BAS
📖 第 1 页 / 共 2 页
字号:
Attribute VB_Name = "Driver_Module"
Option Explicit

'#################### AD硬件参数PCI8613_PARA_AD定义 #####################
' 用于AD采样的实际硬件参数
Type PCI8613_PARA_AD
    ADMode          As Long     ' AD模式选择(连续/分组方式)
    FirstChannel    As Long     ' 首通道[0, 15]
    LastChannel     As Long     ' 末通道[0, 15],要求末通道必须大于或等于首通道
    Frequency       As Long     ' 采集频率,单位为Hz, [1, 100000]
    GroupInterval   As Long     ' 分组时的组间间隔(单位:微秒)[1, 419430]
    LoopsOfGroup    As Long     ' 组内循环次数[1, 255]
    Gains           As Long     ' 增益设置
    InputRange      As Long     ' 模拟量输入量程范围
    TriggerMode     As Long     ' 触发模式选择
    TriggerSource   As Long     ' 触发源选择
    TriggerType     As Long     ' 触发类型选择(边沿触发/脉冲触发)
    TriggerDir      As Long     ' 触发方向选择(正向/负向触发)
    TrigWindow      As Long     ' 触发灵敏窗[1, 65535], 单位25纳秒
    ClockSource     As Long     ' 时钟源选择(内/外时钟源)
    bClockOutput    As Long     ' 允许时钟输出到CLKOUT,=TRUE:允许时钟输出, =FALSE:禁止时钟输出
    GroundingMode   As Long     ' 接地方式(单端或双端选择)
    TimeoutForNpt   As Long     ' 非空查询方式下的超时时间,单位秒,取值范围为[0, 3600]
End Type

'***********************************************************
' AD硬件参数PCI8613_PARA_AD中的ADMode所使用工作模式选项
Public Const PCI8613_ADMODE_SEQUENCE = &H0       ' 连续采样
Public Const PCI8613_ADMODE_GROUP = &H1          ' 分组采样

'***********************************************************
' AD硬件参数PCI8613_PARA_AD中的InputRange模拟量输入范围所使用的选项
Public Const PCI8613_INPUT_N10000_P10000mV = &H0        ' ±10000mV
Public Const PCI8613_INPUT_N5000_P5000mV = &H1          ' ±5000mV
Public Const PCI8613_INPUT_0_P10000mV = &H2             ' 0~10000mV

'***********************************************************
' AD参数PCI8613_PARA_AD中的Gains使用的硬件增益选项
Public Const PCI8613_GAINS_1MULT = &H0          ' 1倍增益(使用PGA202或PGA203放大器)
Public Const PCI8613_GAINS_10MULT = &H1         ' 10倍增益(使用PGA202放大器)
Public Const PCI8613_GAINS_100MULT = &H2        ' 100倍增益(使用PGA202放大器)
Public Const PCI8613_GAINS_1000MULT = &H3       ' 1000倍增益(使用PGA202放大器)
Public Const PCI8613_GAINS_2MULT = &H1          ' 2倍增益(使用PGA203放大器)
Public Const PCI8613_GAINS_4MULT = &H2          ' 4倍增益(使用PGA203放大器)
Public Const PCI8613_GAINS_8MULT = &H3          ' 8倍增益(使用PGA203放大器)

'***********************************************************
' AD硬件参数PCI8613_PARA_AD中的TriggerMode成员变量所使用触发模式选项
Public Const PCI8613_TRIGMODE_SOFT = &H0         ' 软件触发(属于内触发)
Public Const PCI8613_TRIGMODE_POST = &H1         ' 硬件后触发(属于外触发)

'***********************************************************
' AD硬件参数PCI8613_PARA_AD中的TriggerSource触发源信号所使用的选项
Public Const PCI8613_TRIGSRC_ATR = &H0      ' 选择外部ATR作为触发源
Public Const PCI8613_TRIGSRC_DTR = &H1      ' 选择外部DTR作为触发源

'***********************************************************
' AD硬件参数PCI8613_PARA_AD中的TriggerType触发类型所使用的选项
Public Const PCI8613_TRIGTYPE_EDGE = &H0        ' 边沿触发
Public Const PCI8613_TRIGTYPE_PULSE = &H1       ' 脉冲触发(电平)

'***********************************************************
' AD硬件参数PCI8613_PARA_AD中的TriggerDir触发方向所使用的选项
Public Const PCI8613_TRIGDIR_NEGATIVE = &H0      ' 负向触发(低脉冲/下降沿触发)
Public Const PCI8613_TRIGDIR_POSITIVE = &H1      ' 正向触发(高脉冲/上升沿触发)
Public Const PCI8613_TRIGDIR_POSIT_NEGAT = &H2   ' 正负向触发(高/低脉冲或上升/下降沿触发)

'***********************************************************
' AD硬件参数PCI8613_PARA_AD中的ClockSource时钟源所使用的选项
Public Const PCI8613_CLOCKSRC_IN = &H0           ' 内部时钟
Public Const PCI8613_CLOCKSRC_OUT = &H1          ' 外部时钟(CLKIN)

'***********************************************************
' AD参数(PCI8613_PARA_AD)中的GroundingMode使用的模拟信号接地方式选项
Public Const PCI8613_GNDMODE_SE = &H0           ' 单端方式(SE:Single end)
Public Const PCI8613_GNDMODE_DI = &H1           ' 双端方式(DI:Differential)

'*************************************************************************************
' 用于AD采样的实际硬件参数
Type PCI8613_STATUS_AD
    bNotEmpty           As Long         ' 板载FIFO存储器的非空标志,=TRUE非空, = FALSE 空
    bHalf               As Long         ' 板载FIFO存储器的半满标志,=TRUE半满以上, = FALSE 半满以下
    bDynamic_Overflow   As Long         ' 板载FIFO存储器的动态溢出标志,= TRUE已发生溢出, = FALSE 未发生溢出
    bStatic_Overflow    As Long         ' 板载FIFO存储器的静态溢出标志,= TRUE已发生溢出, = FALSE 未发生溢出
    bTriggerFlag        As Long         ' 触发标志, =TRUE表示触发事件发生, =FALSE表示触发事件未发生
End Type



Public Const PCI8613_MAX_SEGMENT_COUNT = 64
Type PCI8613_STATUS_DMA
    iCurSegmentID     As Long                             ' 当前段缓冲ID,表示DMA正在传输的缓冲区段
    bSegmentSts(0 To PCI8613_MAX_SEGMENT_COUNT - 1)   As Long    ' 各个缓冲区的新旧状态,=1表示该相应缓冲区数据为新,否则为旧
    bBufferOverflow     As Long                         ' 返回溢出状态
End Type


'***********************************************************
' DA输出函数InitDeviceDA的模拟量输出范围参数OutputRange所使用的选项
Public Const PCI8613_OUTPUT_0_P5000mV = &H0             ' 0~5000mV
Public Const PCI8613_OUTPUT_0_P10000mV = &H1            ' 0~10000mV
Public Const PCI8613_OUTPUT_N5000_P5000mV = &H2         ' ±5000mV
Public Const PCI8613_OUTPUT_N10000_P10000mV = &H3       ' ±10000mV

' DA输出函数PCI8613_DAReset的复位ResetMode所使用的选项
Public Const PCI8613_RESET_LEAST = &H0                   ' 复位至最小值
Public Const PCI8613_RESET_MIDDLE = &H1                  ' 复位至中间值

'***********************************************************
' 用于计数器的参数结构
Type PCI8613_PARA_CNT
    ControlMode As Long         ' 计数器工作模式[0—5]
    AddDecMode As Long          ' 计数器加减模式:加计数或减计数[0:减计数,1:加计数]
    CNTVal As Long              ' 计数器值
End Type

'***********************************************************
' 硬件参数PCI8613_PARA_CNT中的FunctionMode功能模式选项
Public Const PCI8613_FUNCMODE_COUNTER = &H0      ' 计数器模式
Public Const PCI8613_FUNCMODE_TIMER = &H1        ' 脉冲发生器模式

'***********************************************************
' 硬件参数PCI8613_PARA_CNT中的ClockSource功能模式选项
Public Const PCI8613_CLOCKSRC_LOCAL_CLK = &H0    ' 板卡局部分频时钟(对40M晶振分频而得,由SetLocalCLKFreq设定)
Public Const PCI8613_CLOCKSRC_CLOCK_IN = &H1     ' 外部时钟信号源输入

'***********************************************************
' 硬件参数PCI8613_PARA_CNT中的ClockDir时钟方向选项
Public Const PCI8613_CLOCKDIR_POSTIVE = &H0      ' 上升沿计数
Public Const PCI8613_CLOCKDIR_NEGATIVE = &H1     ' 下降沿计数

'***********************************************************
' CNT控制函数PCI8613_InitDeviceCNT硬件参数ControlMode控制字模式选项
Public Const PCI8613_GATEMODE_POSITIVE_0 = &H0       ' COUNTER:GATE高电平时计数,低电平时停止计数,计数时重新写入新的初值,按新值计数
                                                    ' 减法计数时,计数到0时OUT为1加法计数时,计数到4294967295时OUT变为1
                                                    ' 计数结束产生中断

Public Const PCI8613_GATEMODE_RISING_1 = &H1         ' COUNTER:GATE上边沿触发计数,计数中出现GATE上升沿重新装入初值计数
                                                    ' 可编程单拍脉冲:当写入初值时OUT为1,当开始计数时OUT为0
                                                    ' 减法计数时,计数到0时OUT为1加法计数时,计数到4294967295时OUT变为1

Public Const PCI8613_GATEMODE_POSITIVE_2 = &H2       ' COUNTER:GATE高电平时计数,低电平时停止计数,若计数中改变初值,下次有效
                                                    ' 频率发生器:计数期间OUT为1
                                                    ' 减法计数时,计数到0后输出一个周期的0,并重新装入计数值计数
                                                    ' 加法计数时,计数到4294967295时输出一个周期的0,并重新装入计数值计数

Public Const PCI8613_GATEMODE_POSITIVE_3 = &H3       ' COUNTER:GATE高电平时计数,低电平时停止计数,若计数中改变初值,下次有效
                                                    ' 方波发生器:计数期间OUT为1
                                                    ' 减法计数时,计数到0后输出一个周期的0,并重新装入计数值计数
                                                    ' 加法计数时,计数到4294967295时输出一个周期的0,并重新装入计数值计数

Public Const PCI8613_GATEMODE_POSITIVE_4 = &H4       ' COUNTER:GATE高电平时计数,低电平时停止计数,若计数中改变初值,本次有效
                                                    ' 软件触发选通:写入初值OUT为1
                                                    ' 减法计数时,计数到0后输出一个周期的低电平信号
                                                    ' 加法计数时,计数到4294967295时输出一个周期的低电平信号

Public Const PCI8613_GATEMODE_RISING_5 = &H5         ' COUNTER:GATE上边沿触发计数,计数中出现GATE上升沿重新装入初值计数
                                                    ' 硬件触发选通:写入初值OUT为1
                                                    ' 减法计数时,计数到0后输出一个周期的低电平信号
                                                    ' 加法计数时,计数到4294967295时输出一个周期的低电平信号
'***********************************************************

'***********************************************************
' CreateFileObject所用的文件操作方式控制字(可通过或指令实现多种方式并操作)
Public Const PCI8613_modeRead = &H0                      ' 只读文件方式
Public Const PCI8613_modeWrite = &H1                     ' 只写文件方式
Public Const PCI8613_modeReadWrite = &H2                 ' 既读又写文件方式
Public Const PCI8613_modeCreate = &H1000                 ' 如果文件不存可以创建该文件,如果存在,则重建此文件,并清0
Public Const PCI8613_typeText = &H4000                   ' 以文本方式操作文件

'***********************************************************
' 用于DA的复位方式(适用于PCI8613_InitDevProDA函数的ResetMode参数)
Public Const PCI8613_RESET_MODE_NEGATIVE = &H0            ' 负满度(-5V或-10V...)
Public Const PCI8613_RESET_MODE_ZERO = &H1                ' 零点(0V)



'######################## 设备对象管理函数 ##############################
Declare Function PCI8613_CreateDevice Lib "PCI8613" (ByVal DeviceLgcID As Integer) As Long        ' 用逻辑号创建设备对象
Declare Function PCI8613_CreateDeviceEx Lib "PCI8613" (ByVal DevicePhysID As Integer) As Long     ' 用物理号创建设备对象
Declare Function PCI8613_GetDeviceCount Lib "PCI8613" (ByVal hDevice As Long) As Integer          ' 取得设备总台数
Declare Function PCI8613_GetDeviceCurrentID Lib "PCI8613" (ByVal hDevice As Long, ByRef DeviceLgcID As Long, ByRef DevicePhysID As Long) As Boolean
Declare Function PCI8613_ListDeviceDlg Lib "PCI8613" (ByVal hDevice As Long) As Boolean   ' 以对话框窗体方式列表系统当中的所有的该PCI设备
Declare Function PCI8613_ReleaseDevice Lib "PCI8613" (ByVal hDevice As Long) As Boolean   ' 仅释放设备对象



'####################### AD数据读取函数 #################################


Declare Function PCI8613_InitDeviceProAD Lib "PCI8613" (ByVal hDevice As Long, ByRef pADPara As PCI8613_PARA_AD) As Boolean
' 初始化设备,当返回TRUE后,设备即准备就绪.
' 设备对象,它由CreateDevice函数创建
' 硬件参数, 它仅在此函数中决定硬件状态


Declare Function PCI8613_StartDeviceProAD Lib "PCI8613" (ByVal hDevice As Long) As Boolean
' 在初始化之后,启动设备
' 设备对象句柄,它由CreateDevice函数创建

Declare Function PCI8613_SetDevFreqencyAD Lib "PCI8613" (ByVal hDevice As Long, ByVal nADFrequency As Long) As Boolean       ' 在AD转换过程中,动态改变采样频率
                                       
 
Declare Function PCI8613_ReadDeviceProAD_Npt Lib "PCI8613" (ByVal hDevice As Long, ByRef ADBuffer As Long, ByVal nReadSizeWords As Long, ByRef nRetSizeWords As Long) As Boolean
' 当AD标志有效时,用此函数读取设备上的AD数据(程序非空方式)
' 设备句柄,它由CreateDevice函数创建
' 接受原始AD数据的用户缓冲区
' 相对于偏位点后读入的数据长度(字)
' 返回实际读取的长度(字)

Declare Function PCI8613_GetDevStatusProAD Lib "PCI8613" (ByVal hDevice As Long, ByRef pADStatus As PCI8613_STATUS_AD) As Boolean
' 在AD采样过程中取得设备的各种状态,返回值表示函数是否成功
' 设备句柄,它由CreateDevice函数创建
' AD的各种信息结构体

Declare Function PCI8613_ReadDeviceProAD_Half Lib "PCI8613" (ByVal hDevice As Long, ByRef ADBuffer As Long, ByVal nReadSizeWords As Long, ByRef nRetSizeWords As Long) As Boolean
' 当AD标志有效时,用此函数读取设备上的AD数据(程序半满方式)
' 设备句柄,它由CreateDevice函数创建
' 接受原始AD数据的用户缓冲区
' 相对于偏位点后读入的数据长度(字)
' 返回实际读取的长度(字)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -